Cara membuat Asisten AI DIY dengan Raspberry Pi

Cara membuat Asisten AI DIY dengan Raspberry Pi

Ingin asisten suara mungil yang benar-benar mengikuti arahan Anda, berjalan di perangkat keras Anda sendiri, dan tidak akan memesan dua belas nanas secara tidak sengaja karena salah dengar? Asisten AI DIY dengan Raspberry Pi ternyata sangat mudah, menyenangkan, dan fleksibel. Anda akan menghubungkan kata bangun, pengenalan ucapan (ASR = pengenalan ucapan otomatis), otak untuk bahasa alami (aturan atau LLM), dan teks-ke-ucapan (TTS). Tambahkan beberapa skrip, satu atau dua layanan, dan beberapa penyesuaian audio yang cermat, dan Anda akan mendapatkan speaker pintar yang mudah dibawa ke mana pun dan mematuhi aturan Anda.

Mari kita bantu Anda dari nol hingga bisa berbicara dengan Pi Anda tanpa perlu repot-repot. Kita akan bahas komponen, pengaturan, kode, perbandingan, jebakan... semuanya. 🌯

Artikel yang mungkin ingin Anda baca setelah ini:

🔗 Cara mempelajari AI secara efektif
Buat peta jalan studi, proyek latihan, dan lacak kemajuan.

🔗 Cara memulai perusahaan AI
Validasi masalah, bangun MVP, kumpulkan tim, amankan pelanggan awal.

🔗 Cara menggunakan AI untuk menjadi lebih produktif
Otomatisasi tugas rutin, sederhanakan alur kerja, dan tingkatkan hasil kreatif.

🔗 Cara menggabungkan AI ke dalam bisnis Anda
Identifikasi proses berdampak tinggi, terapkan uji coba, ukur ROI, skalakan.


Apa yang Membuat Asisten AI DIY yang Baik dengan Raspberry Pi ✅

  • Pribadi secara default – jaga audio tetap lokal jika memungkinkan. Anda yang memutuskan apa yang akan keluar dari perangkat.

  • Modular – tukar komponen seperti Lego: mesin kata bangun, ASR, LLM, TTS.

  • Terjangkau – sebagian besar sumber terbuka, mikrofon komoditas, speaker, dan Pi.

  • Bisa diretas – ingin otomatisasi rumah, dasbor, rutinitas, atau keahlian khusus? Gampang.

  • Andal – dikelola layanan, melakukan 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, pilih Pendingin Aktif resmi yang dirancang untuk Pi 5.) [1]


Komponen & Peralatan yang Anda Butuhkan 🧰

  • Raspberry Pi : Pi 4 atau Pi 5 direkomendasikan untuk ruang bebas.

  • Kartu microSD : disarankan 32 GB+.

  • Mikrofon USB : mikrofon konferensi USB yang sederhana sangatlah bagus.

  • Speaker : USB atau speaker 3,5 mm, atau amp I2S HAT.

  • Jaringan : Ethernet atau Wi-Fi.

  • Fitur opsional: casing, pendingin aktif untuk Pi 5, tombol tekan untuk push-to-talk, cincin LED. [1]

OS & Pengaturan Dasar

  1. Flash Raspberry Pi OS dengan Raspberry Pi Imager. Ini cara mudah untuk mendapatkan microSD yang dapat di-boot dengan preset yang Anda inginkan. [1]

  2. Boot, sambungkan ke jaringan, lalu perbarui paket:

sudo apt perbarui dan sudo apt peningkatan -y
  1. Dasar-dasar audio : Pada Raspberry Pi OS, Anda dapat mengatur output, level, dan perangkat default melalui UI desktop atau raspi-config . Audio USB dan HDMI didukung di semua model; output Bluetooth tersedia pada model dengan Bluetooth. [1]

  2. Verifikasi perangkat:

arecord -l aplay -l

Lalu uji perekaman dan pemutaran. Jika levelnya terasa aneh, periksa mixer dan pengaturan default sebelum menyalahkan mikrofon.

 

AI Raspberry Pi

Arsitektur Sekilas 🗺️

yang masuk akal dengan Raspberry Pi terlihat seperti ini:

Kata bangun → penangkapan audio langsung → transkripsi ASR → penanganan maksud atau LLM → teks respons → TTS → pemutaran audio → tindakan opsional melalui MQTT atau HTTP.

  • Kata bangun : Porcupine 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/derau latar belakang. Untuk penggunaan di perangkat, whisper.cpp menyediakan jalur inferensi C/C++ yang ramping. [3][4]

  • Otak : Pilihan Anda – LLM cloud melalui API, mesin aturan, atau inferensi lokal tergantung pada tenaga kuda.

  • TTS : Piper menghasilkan ucapan alami secara lokal, cukup cepat untuk respon cepat pada perangkat keras sederhana. [5]


Tabel Perbandingan Cepat 🔎

Alat Terbaik Untuk Harganya cukup terjangkau Mengapa Ini Berhasil
Kata Bangun Landak Pemicu selalu mendengarkan Tingkat gratis + CPU rendah, akurat, pengikatan mudah [2]
Bisikan.cpp ASR Lokal di Pi Sumber terbuka Akurasi baik, ramah CPU [4]
Bisikan Lebih Cepat ASR yang lebih cepat pada CPU/GPU Sumber terbuka Optimasi CTranslate2
Piper TTS Keluaran ucapan lokal Sumber terbuka Suara cepat, banyak bahasa [5]
API LLM Awan Alasan yang kaya Berdasarkan penggunaan Membongkar beban komputasi berat
Node-MERAH Mengatur tindakan Sumber terbuka Alur visual, ramah MQTT

Membangun Langkah demi Langkah: Loop Suara Pertama Anda 🧩

Kita akan menggunakan Porcupine untuk kata bangun, Whisper untuk transkripsi, fungsi "otak" yang ringan untuk balasan (ganti dengan LLM pilihan Anda), dan Piper untuk ucapan. Minimalkan, lalu ulangi.

1) Instal dependensi

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
  • Porcupine: ambil SDK/binding untuk bahasa Anda dan ikuti mulai cepat (kunci akses + daftar kata kunci + bingkai audio → .process ). [2]

  • Whisper (ramah CPU): buat whisper.cpp :

git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp dan cmake -B build dan 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 dimulainya proyek dengan cepat. [4]

Lebih suka Python? faster-whisper (CTranslate2) seringkali lebih cepat daripada Python biasa pada CPU sederhana.

2) Siapkan 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) Loop asisten minimal di Python

Sengaja dipadatkan: menunggu frasa bangun (rintisan), merekam, mentranskripsi dengan whisper.cpp , menghasilkan balasan (pengganti), lalu berbicara melalui Piper. Ganti pengganti dengan logika LLM atau aturan favorit Anda.

Bahasa Indonesia: impor os, subproses, gelombang impor sounddevice sebagai sd WAKE_WORD = "hei komputer" # tukar dengan Porcupine dalam produksi [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 CHANNEL = 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, detik=REKAM_DETIK): audio = sd.rec(int(detik * LAJU_SAMPEL), laju_sampel=LAJU_SAMPEL, saluran=SALURAN, tipe_d='int16') sd.tunggu() dengan wave.buka(lintasan, 'wb') sebagai w: w.setnsaluran(SALURAN); 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, tapi mungkin akan baik-baik saja. Bawalah jaket untuk berjaga-jaga." Bahasa Indonesia: kembalikan "Anda mengatakan: " + prompt def speak(teks): proc = subproses.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subproses.PIPE) proc.stdin.write(teks.encode("utf-8")); proc.stdin.close(); proc.wait() subproses.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("Asisten siap. Ketikkan frasa bangun untuk menguji.") while True: typed = input("> ").strip().lower() if typed == WAKE_WORD: jalur_wav = f"{WORKDIR}/input.wav" record_wav(jalur_wav) teks = transcribe(jalur_wav) balasan = generate_balasan(teks) cetak("Pengguna:", teks); print("Asisten:", reply) speak(reply) else: print("Ketikkan frasa bangun untuk menguji loop.")

Untuk deteksi kata bangun 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 merasa 10x lebih pintar:

  • Jarak mikrofon : 30–60 cm adalah jarak yang ideal untuk banyak mikrofon USB.

  • Level : hindari kliping pada input dan jaga agar pemutaran tetap lancar; perbaiki perutean sebelum mengejar kode hantu. Pada Raspberry Pi OS, Anda dapat mengelola perangkat output dan level melalui alat sistem atau raspi-config . [1]

  • Akustik ruangan : dinding keras menyebabkan gema; alas lembut di bawah mikrofon membantu.

  • Ambang batas kata bangun : 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]


Beralih dari Mainan ke Peralatan: Layanan, Autostart, Pemeriksaan Kesehatan 🧯

Manusia lupa menjalankan skrip. Komputer lupa bersikap baik. Ubah loop Anda menjadi layanan terkelola:

  1. Buat unit systemd:

[Unit] Deskripsi=Asisten Suara DIY Setelah=jaringan.target suara.target [Layanan] Pengguna=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=selalu RestartSec=3 [Instal] WantedBy=multi-pengguna.target
  1. Aktifkan itu:

sudo cp asisten.layanan /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now asisten.layanan
  1. Ekor kayu:

jurnalctl -u asisten -f

Sekarang mulai saat boot, restart saat crash, dan secara umum berperilaku seperti perangkat. Sedikit membosankan, tapi jauh lebih baik.


Sistem Keterampilan: Jadikan Benar-Benar Berguna di Rumah 🏠✨

Setelah suara masuk dan suara keluar solid, tambahkan tindakan:

  • Router maksud : rute kata kunci sederhana untuk tugas-tugas umum.

  • Rumah pintar : publikasikan kejadian ke MQTT atau panggil titik akhir HTTP Asisten Rumah.

  • Plugin : fungsi Python cepat seperti set_timer , what_is_the_time , play_radio , run_scene .

Bahkan dengan LLM cloud dalam loop, rutekan perintah lokal yang jelas terlebih dahulu untuk kecepatan dan keandalan.


Hanya Lokal vs. Bantuan Cloud: Kompromi yang Akan Anda Rasakan 🌓

Hanya lokal.
Kelebihan: privat, luring, biaya dapat diprediksi.
Kekurangan: model yang lebih berat mungkin lambat di papan kecil. Pelatihan multibahasa Whisper membantu meningkatkan ketahanan jika Anda menyimpannya di perangkat atau di server terdekat. [3]

Bantuan cloud.
Kelebihan: penalaran yang kuat, jendela konteks yang lebih luas.
Kekurangan: data keluar dari perangkat, ketergantungan jaringan, biaya variabel.

Hibrida sering menang: bangunkan kata + ASR lokal → panggil API untuk penalaran → TTS lokal. [2][3][5]


Pemecahan Masalah: Gremlin Aneh & Perbaikan Cepat 👾

  • Pemicu kata bangun yang salah : turunkan sensitivitas atau coba mikrofon yang berbeda. [2]

  • Lag ASR : gunakan model Whisper yang lebih kecil atau buat whisper.cpp dengan tanda rilis ( -j --config Release ). [4]

  • Choppy TTS : hasilkan frasa umum terlebih dahulu; konfirmasikan perangkat audio dan laju sampel Anda.

  • Tidak ada mikrofon yang terdeteksi : periksa arecord -l dan mixer.

  • Pembatasan termal : gunakan Pendingin Aktif resmi pada Pi 5 untuk kinerja berkelanjutan. [1]


Catatan Keamanan & Privasi yang Harus Anda Baca 🔒

  • Selalu perbarui Pi Anda dengan APT.

  • Jika Anda menggunakan API cloud, catat apa yang Anda kirim dan pertimbangkan untuk menyunting bagian pribadi secara lokal terlebih dahulu.

  • Jalankan layanan dengan hak istimewa paling sedikit; hindari sudo di ExecStart kecuali diperlukan.

  • Menyediakan mode lokal saja untuk tamu atau jam tenang.


Varian Build: Campur dan Cocokkan Seperti Sandwich 🥪

  • Ultra-lokal : Landak + bisikan.cpp + Piper + aturan sederhana. Pribadi dan kokoh. [2][4][5]

  • Bantuan cloud yang cepat : Porcupine + (Whisper lokal yang lebih kecil atau cloud ASR) + TTS lokal + cloud LLM.

  • Otomatisasi rumah terpusat : Tambahkan alur Node-RED atau Home Assistant untuk rutinitas, pemandangan, dan sensor.


Contoh Keterampilan: Lights On melalui MQTT 💡

import paho.mqtt.client sebagai mqtt MQTT_HOST = "192.168.1.10" TOPIK = "rumah/ruang tamu/lampu/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() # if "nyalakan lampu" dalam teks: set_light("on")

Tambahkan kalimat suara seperti: “nyalakan lampu ruang tamu,” dan Anda akan merasa seperti seorang penyihir.


Mengapa Tumpukan Ini Berhasil dalam Praktik 🧪

  • Porcupine efisien dan akurat dalam mendeteksi kata bangun pada papan kecil, yang membuat kemampuan mendengarkan terus-menerus menjadi memungkinkan. [2]

  • Pelatihan Whisper yang besar dan multibahasa membuatnya kuat terhadap berbagai lingkungan dan aksen. [3]

  • whisper.cpp menjaga daya tersebut dapat digunakan pada perangkat CPU saja seperti Pi. [4]

  • Piper menjaga respons tetap cepat tanpa mengirimkan audio ke TTS cloud. [5]


Terlalu Panjang, Tidak Dibaca

Bangun Asisten AI DIY yang modular dan privat dengan Raspberry Pi dengan menggabungkan Porcupine untuk kata bangun, Whisper (via whisper.cpp ) untuk ASR, pilihan brain Anda untuk balasan, dan Piper untuk TTS lokal. Bungkus sebagai layanan systemd, setel audio, dan hubungkan dengan tindakan MQTT atau HTTP. Lebih murah dari yang Anda bayangkan, dan anehnya menyenangkan untuk digunakan. [1][2][3][4][5]


Referensi

  1. Perangkat Lunak & Pendinginan Raspberry Pi – Info produk Raspberry Pi Imager (unduh & gunakan) dan Pendingin Aktif Pi 5

  2. Kata Bangun Landak – SDK & mulai cepat (kata kunci, sensitivitas, inferensi lokal)

  3. Whisper (model ASR) – ASR multibahasa dan tangguh yang dilatih selama ~680 ribu jam

    • Radford et al., Pengenalan Ucapan yang Kuat melalui Pengawasan Lemah Skala Besar (Bisikan): baca selengkapnya

  4. whisper.cpp – Inferensi Whisper yang ramah CPU dengan CLI dan langkah-langkah pembuatan

  5. Piper TTS – TTS saraf lokal yang cepat dengan berbagai suara/bahasa

Temukan AI Terbaru di Toko Asisten AI Resmi

Tentang Kami


Kembali ke blog