Ingin asisten suara mini yang benar-benar mengikuti arahan Anda, berjalan di perangkat keras Anda sendiri, dan tidak akan secara tidak sengaja memesan dua belas nanas karena salah dengar? Asisten AI DIY dengan Raspberry Pi ternyata sangat mudah dibuat, menyenangkan, dan fleksibel. Anda akan menghubungkan kata kunci aktivasi, pengenalan suara (ASR = pengenalan suara otomatis), otak untuk bahasa alami (aturan atau LLM), dan teks ke suara (TTS). Tambahkan beberapa skrip, satu atau dua layanan, dan beberapa penyesuaian audio yang cermat, dan Anda akan memiliki speaker pintar saku yang mematuhi aturan Anda.
Mari kita mulai dari nol hingga bisa berkomunikasi dengan Raspberry Pi Anda tanpa harus bersusah payah. Kita akan membahas komponen, pengaturan, kode, perbandingan, hal-hal yang perlu diperhatikan... semuanya. 🌯
Artikel-artikel yang mungkin ingin Anda baca setelah ini:
🔗 Bagaimana cara mempelajari AI secara efektif?
Buat peta jalan studi, proyek praktik, dan lacak kemajuan.
🔗 Cara memulai perusahaan AI
Validasi masalah, bangun MVP, bentuk tim, amankan pelanggan awal.
🔗 Cara menggunakan AI untuk meningkatkan produktivitas
Otomatiskan tugas rutin, sederhanakan alur kerja, dan tingkatkan hasil kreatif.
🔗 Cara mengintegrasikan AI ke dalam bisnis Anda
Identifikasi proses yang berdampak tinggi, laksanakan proyek percontohan, ukur ROI, dan perluas skala.
Apa yang Membuat Asisten AI DIY yang Baik dengan Raspberry Pi ✅
-
Privasi secara default – jaga agar audio tetap berada di perangkat lokal jika memungkinkan. Anda yang memutuskan apa yang keluar dari perangkat.
-
Modular – komponen dapat ditukar seperti Lego: mesin kata kunci bangun, ASR, LLM, TTS.
-
Terjangkau – sebagian besar open source, mikrofon dan speaker standar, serta sebuah Raspberry Pi.
-
Mudah dimodifikasi – ingin otomatisasi rumah, dasbor, rutinitas, keterampilan khusus? Mudah.
-
Andal – dikelola oleh layanan, booting dan mulai mendengarkan secara otomatis.
-
Menyenangkan – Anda akan belajar banyak tentang audio, proses, dan desain berbasis peristiwa.
Tips kecil: Jika Anda menggunakan Raspberry Pi 5 dan berencana menjalankan model lokal yang lebih berat, pendingin jepit akan membantu dalam beban berkelanjutan. (Jika ragu, pilihlah Active Cooler resmi yang dirancang untuk Pi 5.) [1]
Komponen & Peralatan yang Anda Butuhkan 🧰
-
Raspberry Pi : Pi 4 atau Pi 5 direkomendasikan untuk kapasitas yang lebih besar.
-
Kartu microSD : Disarankan kapasitas 32 GB ke atas.
-
Mikrofon USB : mikrofon konferensi USB sederhana sudah cukup.
-
Speaker : Speaker USB atau 3,5 mm, atau HAT amplifier I2S.
-
Jaringan : Ethernet atau Wi-Fi.
-
Fitur tambahan opsional: casing, pendingin aktif untuk Pi 5, tombol tekan untuk bicara, cincin LED. [1]
Sistem Operasi & Pengaturan Dasar
-
Flash Raspberry Pi OS dengan Raspberry Pi Imager. Ini adalah cara mudah untuk mendapatkan microSD yang dapat di-boot dengan preset yang Anda inginkan. [1]
-
Nyalakan komputer, sambungkan ke jaringan, lalu perbarui paket:
sudo apt update && sudo apt upgrade -y
-
Dasar-dasar audio : Pada Raspberry Pi OS Anda dapat mengatur output default, level, dan perangkat melalui UI desktop atau
raspi-config. Audio USB dan HDMI didukung di semua model; output Bluetooth tersedia pada model yang memiliki Bluetooth. [1] -
Verifikasi perangkat:
rekam -l putar -l
Kemudian, uji perekaman dan pemutaran. Jika level suara terdengar aneh, periksa mixer dan pengaturan default sebelum menyalahkan mikrofon.

Sekilas tentang Arsitektur 🗺️
yang masuk akal dengan Raspberry Pi terlihat seperti ini:
Kata kunci aktivasi → perekaman audio langsung → transkripsi ASR → penanganan maksud atau LLM → teks respons → TTS → pemutaran audio → tindakan opsional melalui MQTT atau HTTP.
-
Kata kunci bangun : Porcupine berukuran kecil, akurat, dan berjalan secara lokal dengan kontrol sensitivitas per kata kunci. [2]
-
ASR : Whisper adalah model ASR multibahasa dan serbaguna yang dilatih selama ~680 ribu jam; model ini tangguh terhadap aksen/kebisingan latar belakang. Untuk penggunaan di perangkat,
whisper.cppmenyediakan jalur inferensi C/C++ yang ramping. [3][4] -
Otak : Pilihan Anda – LLM berbasis cloud melalui API, mesin aturan, atau inferensi lokal tergantung pada daya komputasi.
-
TTS : Piper menghasilkan ucapan alami secara lokal, cukup cepat untuk respons cepat pada perangkat keras yang sederhana. [5]
Tabel Perbandingan Cepat 🔎
| Alat | Terbaik untuk | Agak mahal | Mengapa Ini Berhasil |
|---|---|---|---|
| Kata Bangun Landak | Pemicu selalu mendengarkan | Tingkat gratis + | CPU rendah, akurat, pengikatan mudah [2] |
| Bisikkan.cpp | ASR lokal pada Pi | Sumber terbuka | Akurasi bagus, ramah CPU [4] |
| Bisikan Lebih Cepat | ASR yang lebih cepat pada CPU/GPU | Sumber terbuka | Optimasi CTranslate2 |
| Piper TTS | Keluaran suara lokal | Sumber terbuka | Suara cepat, banyak bahasa [5] |
| API Cloud LLM | Penalaran yang mendalam | Berdasarkan penggunaan | Mengurangi beban komputasi yang berat |
| Node-RED | Mengatur tindakan | Sumber terbuka | Alur visual, kompatibel dengan MQTT |
Panduan Langkah demi Langkah: Membuat Voice Loop Pertama Anda 🧩
Kita akan menggunakan Porcupine untuk kata kunci aktivasi, Whisper untuk transkripsi, fungsi "otak" yang ringan untuk balasan (ganti dengan LLM pilihan Anda), dan Piper untuk ucapan. Buatlah sesederhana mungkin, lalu lakukan iterasi.
1) Instal dependensi
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
Landak: ambil SDK/binding untuk bahasa Anda dan ikuti panduan memulai cepat (kunci akses + daftar kata kunci + bingkai audio →
.proses). [2] -
Bisikkan (ramah CPU): buat whisper.cpp :
git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B build && cmake --build build -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt
Hal di atas mencerminkan permulaan proyek yang cepat. [4]
Lebih suka Python?
faster-whisper(CTranslate2) seringkali lebih responsif daripada Python biasa pada CPU dengan kemampuan sedang.
2) Menyiapkan Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Unduh model suara yang Anda suka, misalnya, en_US-amy echo "Halo." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper dirancang untuk TTS pada perangkat dengan beberapa pilihan suara/bahasa. [5]
3) Sebuah loop asisten minimal dalam Python
Dirancang ringkas: menunggu frasa bangun (stub), merekam, mentranskripsikan dengan whisper.cpp , menghasilkan balasan (placeholder), lalu berbicara melalui Piper. Ganti placeholder dengan LLM atau logika aturan favorit Anda.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # ganti dengan Porcupine di produksi [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 CHANNELS = 1 WORKDIR = "/home/pi/assistant" ASR_BIN = "/home/pi/whisper.cpp/build/bin/whisper-cli" # [4] ASR_MODEL = "/home/pi/whisper.cpp/models/ggml-base.en.bin" PIPER_BIN = "/home/pi/piper/build/piper" # [5] PIPER_VOICE = "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=True) def record_wav(path, seconds=RECORD_SECONDS): audio = sd.rec(int(seconds * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() with wave.open(path, 'wb') as w: w.setnchannels(CHANNELS); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.writeframes(audio.tobytes()) def transcribe(path): cmd = [ASR_BIN, "-m", ASR_MODEL, "-f", path, "-otxt"] subprocess.run(cmd, check=True, cwd=WORKDIR) with open(path.replace(".wav", ".txt"), "r", encoding="utf-8") as f: return f.read().strip() def generate_reply(prompt): if "weather" in prompt.lower(): return "Saya tidak bisa melihat awan, tetapi mungkin cuacanya baik-baik saja. Bawa jaket untuk berjaga-jaga." return "Anda berkata: " + prompt def speak(text): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(text.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("Asisten siap. Ketik frasa bangun untuk diuji.") while True: typed = input("> ").strip().lower() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("Pengguna:", text); print("Asisten:", reply) speak(reply) else: print("Ketik frasa bangun untuk menguji loop.")
Untuk deteksi kata kunci yang sebenarnya, integrasikan detektor streaming Porcupine (CPU rendah, sensitivitas per kata kunci). [2]
Penyetelan Audio yang Benar-Benar Penting 🎚️
Beberapa perbaikan kecil membuat asisten Anda terasa 10 kali lebih pintar:
-
Jarak mikrofon : 30–60 cm adalah jarak ideal untuk banyak mikrofon USB.
-
Level : hindari pemotongan pada input dan jaga pemutaran tetap wajar; perbaiki perutean sebelum mengejar hantu kode. Pada Raspberry Pi OS, Anda dapat mengelola perangkat output dan level melalui alat sistem atau
raspi-config. [1] -
Akustik ruangan : dinding yang keras menyebabkan gema; alas lembut di bawah mikrofon dapat membantu.
-
Ambang batas kata kunci : terlalu sensitif → pemicu hantu; terlalu ketat → Anda akan berteriak pada plastik. Porcupine memungkinkan Anda menyesuaikan sensitivitas per kata kunci. [2]
-
Termal : Transkripsi panjang pada Pi 5 mendapat manfaat dari pendingin aktif resmi untuk kinerja berkelanjutan. [1]
Dari Mainan Menjadi Peralatan Rumah Tangga: Layanan, Pengaktifan Otomatis, Pemeriksaan Kesehatan 🧯
Manusia lupa menjalankan skrip. Komputer lupa bersikap baik. Ubah perulangan Anda menjadi layanan terkelola:
-
Buat unit systemd:
[Unit] Description=Asisten Suara DIY After=network.target sound.target [Service] User=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
-
Aktifkan:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Ekor kayu:
journalctl -u asisten -f
Sekarang, sistem ini berjalan saat booting, memulai ulang saat terjadi crash, dan secara umum berperilaku seperti perangkat elektronik rumahan. Agak membosankan, tapi jauh lebih baik.
Sistem Keterampilan: Jadikan Benar-Benar Berguna di Rumah 🏠✨
Setelah input dan output suara sudah mantap, tambahkan tindakan:
-
Intent router : rute kata kunci sederhana untuk tugas-tugas umum.
-
Rumah pintar : publikasikan peristiwa ke MQTT atau panggil titik akhir HTTP Home Assistant.
-
Plugin : fungsi Python cepat seperti
set_timer,what_is_the_time,play_radio,run_scene.
Meskipun menggunakan LLM berbasis cloud, prioritaskan perintah lokal yang jelas terlebih dahulu untuk kecepatan dan keandalan.
Hanya Lokal vs. Bantuan Cloud: Kompromi yang Akan Anda Rasakan 🌓
Hanya lokal
Kelebihan: pribadi, offline, biaya yang dapat diprediksi.
Kekurangan: model yang lebih berat mungkin lambat pada papan kecil. Pelatihan multibahasa Whisper membantu meningkatkan ketahanan jika Anda menyimpannya di perangkat atau di server terdekat. [3]
Cloud Assist
: penalaran yang kuat, jendela konteks yang lebih luas.
Kekurangannya: data meninggalkan perangkat, ketergantungan jaringan, biaya yang bervariasi.
Kombinasi keduanya seringkali lebih unggul: kata kunci aktivasi + ASR lokal → memanggil API untuk penalaran → TTS lokal. [2][3][5]
Penyelesaian Masalah: Masalah Aneh & Solusi Cepat 👾
-
Pemicu kata kunci palsu : kurangi sensitivitas atau coba mikrofon yang berbeda. [2]
-
Keterlambatan ASR : gunakan model Whisper yang lebih kecil atau buat
whisper.cppdengan flag rilis (-j --config Release). [4] -
TTS yang terputus-putus : menghasilkan frasa umum terlebih dahulu; konfirmasikan perangkat audio dan laju sampel Anda.
-
Tidak ada mikrofon terdeteksi : periksa
arecord -ldan mixer. -
Pembatasan termal : gunakan Active Cooler resmi pada Pi 5 untuk kinerja berkelanjutan. [1]
Catatan Keamanan & Privasi yang Sebaiknya Anda Baca 🔒
-
Perbarui Raspberry Pi Anda dengan APT.
-
Jika Anda menggunakan API cloud apa pun, catat apa yang Anda kirim dan pertimbangkan untuk menyunting informasi pribadi secara lokal terlebih dahulu.
-
Jalankan layanan dengan hak akses seminimal mungkin; hindari penggunaan
sudodi ExecStart kecuali jika diperlukan. -
Sediakan mode khusus lokal untuk tamu atau jam tenang.
Variasi Susunan: Campur dan Padukan Seperti Sandwich 🥪
-
Ultra-lokal : Porcupine + whisper.cpp + Piper + aturan sederhana. Pribadi dan kokoh. [2][4][5]
-
Bantuan cloud cepat : Porcupine + (Whisper lokal yang lebih kecil atau ASR cloud) + TTS lokal + LLM cloud.
-
Pusat otomatisasi rumah : Tambahkan alur Node-RED atau Home Assistant untuk rutinitas, adegan, dan sensor.
Contoh Skill: Menyalakan Lampu via MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "home/livingroom/light/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "ON" if state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # jika "nyalakan lampu" dalam teks: set_light("on")
Tambahkan dialog seperti: “nyalakan lampu ruang tamu,” dan Anda akan merasa seperti seorang penyihir.
Mengapa Stack Ini Berfungsi dalam Praktik 🧪
-
Porcupine efisien dan akurat dalam deteksi kata kunci pada papan kecil, yang memungkinkan untuk selalu mendengarkan. [2]
-
Pelatihan multibahasa Whisper yang luas membuatnya tangguh terhadap berbagai lingkungan dan aksen. [3]
-
whisper.cppmenjaga agar daya tersebut dapat digunakan pada perangkat yang hanya menggunakan CPU seperti Pi. [4] -
Piper menjaga respons tetap cepat tanpa mengirimkan audio ke cloud TTS. [5]
Terlalu Panjang, Tak Saya Baca
Bangun Asisten AI DIY modular dan privat dengan Raspberry Pi dengan menggabungkan Porcupine untuk kata kunci aktivasi, Whisper (melalui whisper.cpp ) untuk ASR, pilihan otak Anda untuk balasan, dan Piper untuk TTS lokal. Bungkus sebagai layanan systemd, atur audio, dan hubungkan aksi MQTT atau HTTP. Ini lebih murah dari yang Anda kira, dan sangat menyenangkan untuk digunakan. [1][2][3][4][5]
Referensi
-
Perangkat Lunak & Pendingin Raspberry Pi – Informasi produk Raspberry Pi Imager (unduh & gunakan) dan Pi 5 Active Cooler
-
Raspberry Pi Imager: baca selengkapnya
-
Pendingin Aktif (Pi 5): baca selengkapnya
-
-
Porcupine Wake Word – SDK & panduan cepat (kata kunci, sensitivitas, inferensi lokal)
-
Whisper (model ASR) – ASR multibahasa dan tangguh yang dilatih selama ~680 ribu jam.
-
Radford dkk., Pengenalan Ucapan yang Kuat melalui Pengawasan Lemah Skala Besar (Whisper): baca selengkapnya
-
-
whisper.cpp – Inferensi Whisper yang hemat CPU dengan CLI dan langkah-langkah pembuatan.
-
Piper TTS – TTS neural lokal yang cepat dengan banyak suara/bahasa