Llama.cpp, Speeches, dan Open WebUI mengubah Raspberry Pi saya menjadi asisten suara yang benar-benar berfungsi


Tidak dapat disangkal bahwa kartu grafis mutakhir ideal untuk menampung model bahasa besar, terutama untuk tugas produktivitas yang memerlukan akurasi tinggi tanpa mengorbankan kinerja. Meskipun demikian, Anda tidak perlu memerlukan server yang kuat untuk tugas inferensi sederhana, dan itu adalah sesuatu yang saya sadari hanya setelah menyusun stasiun kerja hosting LLM yang didukung Raspberry Pi. Heck, saya telah menghosting model text-to-speech dan Speech-to-text sederhana pada mesin virtual sederhana tanpa ketentuan passthrough GPU apa pun, dan saya mendapatkan hasil inferensi yang cukup bagus. Jadi, satu pemikiran mengarah ke pemikiran lain, dan saya mencoba membangun alur kerja asisten suara lokal yang didukung oleh Raspberry Pi 5 saya. Terkait Saya menjalankan LLM lokal pada iGPU termurah Intel, dan hasilnya sangat bagus. Ini tidak sebanding dengan GPU khusus, tetapi Anda dapat menjalankan beberapa LLM ringan di N100. Saya memutuskan untuk menggunakan llama.cpp untuk LLM pusat yang memberi daya pada asisten suara saya. Saya harus puas dengan Qwen3.5-2B kinerja terbaik Mengingat lemahnya spesifikasi Raspberry Pi SBC berbasis ARM, saya ingin meminimalkan overhead kinerja sebanyak yang saya bisa. Jadi, saya memilih versi Lite dari Raspberry Pi OS, yang membuang elemen GUI dan paket-paket non-esensial yang terkenal distro ini tanpa berpotensi menyebabkan masalah kompatibilitas seperti varian Linux ringan tertentu (uhuk Alpine uhuk). Ollama akan menjadi pilihan pertama saya saat itu, tetapi karena ini menimbulkan penalti kinerja tambahan, saya memutuskan untuk mengkompilasi llama.cpp secara manual di SBC. Sejujurnya, saya tergoda untuk mengandalkan fungsionalitas RPC dari server llama untuk menghubungkan SBC lain ke Raspberry Pi saya, sehingga membuat cluster untuk tugas hosting LLM saya. Setelah mengerjakan pengaturan terkutuk ini di masa lalu, saya menyerah setelah menyadari bahwa konektivitas LAN yang lambat pada SBC ini pada akhirnya akan menurunkan kecepatan inferensi. Tapi itu berarti saya tidak akan bisa memuat apa pun yang lebih besar dari model 5B (atau paling banyak, 6B) di Raspberry Pi 5 (8GB) saya. Pilihan pertama saya adalah Gemma 4 E4B, model yang sama yang menyimpan Pi saya di proyek Raspberry Pi. Sayangnya, meskipun saya dapat menggunakan edge LLM yang sangat mumpuni ini pada Raspberry Pi, kecepatan pembuatan tokennya berada pada kisaran 2-3 t/s, yang terlalu lambat untuk asisten suara. Jadi, saya memilih Qwen3.5-2B, karena ini jauh lebih cepat daripada Gemma 4 E4B tetapi tidak berhalusinasi seperti model 2B pada umumnya. Tapi lebih dari itu sebentar lagi… Speeches menyediakan model STT dan TTS untuk proyek ini. Penerapannya juga cukup sederhana. Jika saya ingin menambahkan kontrol suara ke instance Qwen3.5-2B yang didukung server llama, saya memerlukan dua model AI lagi. Yang pertama adalah model ucapan-ke-teks yang mengubah semua yang saya katakan menjadi teks untuk Qwen3.5, karena clanker tidak dapat langsung menafsirkan perintah suara. Kemudian, saya memerlukan model text-to-speech di ujung lain saluran asisten suara, karena model tersebut akan mengubah semua teks yang dihasilkan oleh LLM menjadi respons berbasis audio. Karena saya berencana menggunakan Open WebUI sebagai pusat kontrol untuk asisten suara ini, saya memerlukan model STT dan TTS saya agar kompatibel dengan OpenAI API. Jadi, saya pikir saya bisa menggunakan Speaches sebagai server untuk model pemrosesan audio ini, karena ini adalah aplikasi yang sama yang saya sambungkan ke instance Open Notebook saya untuk menghasilkan podcast dari catatan. Lagi pula, setelah saya menerapkan Speaches, saya menggunakan lebih cepat-distil-whisper-small.en sebagai model Speech-to-Text, dengan Kokoro-82M-v1.0-ONNX yang berfungsi sebagai mitra TTS-nya. Namun saya masih harus mengonfigurasi bagian terakhir yang hilang untuk asisten AI saya. Open WebUI menyediakan antarmuka untuk saluran asisten suara saya. Ini terhubung dengan semua model yang telah saya terapkan sejauh ini. Server llama dan Speaches tidak dapat berkomunikasi satu sama lain, artinya saya memerlukan utilitas lain yang menjembatani keduanya. Di sinilah Swiss Army Knife dari aplikasi LLM lokal, Open WebUI, hadir, karena tidak hanya memiliki input mikrofon tetapi juga mendukung pemutaran audio otomatis setelah LLM menyelesaikan tugas inferensinya. Memasangkan Open WebUI dengan llama-server semudah menambahkan alamat IP (dan nomor port) yang terakhir sebagai model OpenAPI lokal dalam tab Koneksi di Pengaturan Admin. Sedangkan untuk Pidato, saya harus menambahkan /v1 setelah URL untuk model TTS dan STT di bagian Audio. Namun demikian, saya masih tidak dapat menggunakan pipeline Open WebUI tanpa HTTPS, karena browser saya memblokir akses mikrofon untuk halaman web HTTP. Karena saya tidak ingin menghabiskan waktu tambahan untuk membuat sertifikat yang ditandatangani sendiri, saya untuk sementara mengaktifkan tanda izinkan-tidak aman-localhost dan mem-boot ulang Brave. Benar saja, saya bisa memberikan akses mikrofon ke antarmuka Open WebUI. Dengan semua model terhubung ke Open WebUI, saya mulai meminta server AI bertenaga Raspberry Pi saya dengan hal-hal acak. Selama pengujian saya, lebih cepat-distil-whisper-small.en biasanya memerlukan waktu 10–15 detik untuk mengubah perintah suara saya menjadi teks, sementara Qwen3.5-2B memerlukan waktu antara 15–45 detik untuk menghasilkan respons. Gabungkan itu dengan 10 detik ekstra yang diambil oleh Kokoro-82M-v1.0-ONNX, dan perintah sederhana akan dijawab dalam satu menit. Terkait Saya membuat server LLM lokal yang dapat saya akses dari mana saja, dan menggunakan Raspberry Pi. Ini mungkin tidak menggantikan ChatGPT, tetapi cukup baik untuk proyek edge Meskipun saya tidak akan mengatakan lebih jauh bahwa pengaturan ini dapat menggantikan pipeline GPT-OSS-20B yang berjalan di RTX 3080 Ti saya (melalui pembongkaran MoE), cukup mengesankan bahwa Raspberry Pi dapat menghasilkan respons yang sangat baik terhadap perintah suara tanpa memaksa saya menunggu 2–3 menit. Secara teknis saya dapat mengurangi waktu pemrosesan keseluruhan hingga setengahnya jika saya beralih ke model 0,7B dan 1,5B, tetapi saya belum cukup beruntung dengan apa pun selain Qwen3.5 1.5B dan LFM2 1.2B. Dan meskipun demikian, para clanker ini tidak akan dapat memproses perintah yang menuntut dengan akurasi yang sama seperti pengaturan saya saat ini.


Diterbitkan : 2026-07-11 14:00:00

sumber : www.xda-developers.com