- Sistem yang memungkinkan percakapan suara alami dengan AI secara real-time menggunakan mikrofon browser
- Melalui alur STT → LLM → TTS, suara pengguna diubah menjadi teks, lalu respons AI dikonversi kembali menjadi suara dan diputar
- Komponen intinya mencakup server FastAPI, streaming WebSocket, modul pemrosesan suara berbasis Pod, serta berbagai backend LLM
- Menyediakan lingkungan deployment berbasis Docker, dan saat menggunakan GPU dapat diharapkan latensi yang lebih rendah serta peningkatan performa
- Menawarkan lingkungan kustomisasi yang sangat fleksibel, termasuk deteksi interupsi pengguna, penggantian model, pemilihan suara, dan perubahan pengaturan lanjutan lainnya
Obrolan suara AI real-time
- Proyek ini dirancang dengan arsitektur klien-server untuk percakapan suara dua arah secara real-time
- Pengguna berbicara di browser, dan AI mengembalikan respons dalam bentuk suara
- Mendukung penanganan interupsi, tampilan respons teks parsial, dan berbagai pilihan TTS
Alur kerja utama
- Input suara: menangkap suara pengguna dari browser
- Pengiriman streaming: mengirim chunk audio ke backend Python melalui WebSocket
- Pengenalan suara:
RealtimeSTT mengubah suara menjadi teks
- Pemrosesan LLM: mengirim teks ke LLM untuk menghasilkan respons
- Konversi suara:
RealtimeTTS mengubah teks respons menjadi suara
- Pemutaran respons: melakukan streaming suara yang dihasilkan kembali ke browser
- Deteksi interupsi: secara otomatis mendeteksi dan menangani selaan dari pengguna
Fitur utama
- Percakapan suara real-time serta transkripsi parsial/pratinjau respons
- Streaming berbasis chunk audio untuk latensi rendah
- Dukungan deteksi hening statis/dinamis (turn detection)
- Beragam backend LLM: default Ollama, OpenAI opsional
- Mendukung beberapa engine TTS: Kokoro, Coqui, Orpheus
- Menyediakan antarmuka web: UI Vanilla JS berbasis Web Audio API
- Menyediakan deployment berbasis Docker Compose
Tech stack
- Backend: Python 3.x, FastAPI
- Frontend: HTML, CSS, JavaScript (Web Audio API)
- Komunikasi: WebSockets
- Kontainerisasi: Docker, Docker Compose
- Library AI/ML:
RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
ollama, openai
- Pemrosesan audio:
numpy, scipy
Persyaratan sistem dan rekomendasi
- Sistem operasi: disarankan menggunakan Docker di Linux (lebih menguntungkan untuk integrasi GPU)
- Python 3.9+, disarankan GPU NVIDIA dengan CUDA 12.1 atau lebih tinggi
- NVIDIA Container Toolkit wajib saat menggunakan Docker
- Atur Ollama atau OpenAI API Key bila diperlukan
Cara instalasi
Opsi A: instalasi Docker (disarankan)
- Clone repositori lalu jalankan
docker compose build
- Jalankan aplikasi dan Ollama dengan
docker compose up -d
- Unduh model Ollama secara terpisah (contoh:
docker compose exec ollama ollama pull ...)
- Hentikan layanan:
docker compose down
- Jalankan kembali:
docker compose up -d
Opsi B: instalasi manual
- Siapkan Python venv lalu instal dependensi
- Instal PyTorch secara manual sesuai versi CUDA
- Jalankan
server.py untuk memulai server FastAPI
Cara menjalankan
- Akses
http://localhost:8000 di browser
- Izinkan akses mikrofon lalu klik "Start"
- Gunakan "Stop" untuk menghentikan, dan "Reset" untuk menginisialisasi ulang percakapan
Panduan perubahan konfigurasi
- Mengganti engine/suara TTS: ubah di
server.py, audio_module.py
- Mengganti model/backend LLM: atur di
server.py, llm_module.py
- Mengganti model STT/kriteria hening:
transcribe.py, turndetect.py
- Konfigurasi SSL tersedia: atur penggunaan HTTPS dan sertifikat di
server.py
Lisensi
- Dirilis dengan lisensi MIT
- Engine eksternal seperti Coqui menggunakan lisensi terpisah
2 komentar
Video demo pada versi aslinya sangat mengesankan.
Komentar Hacker News
Alasan mengembangkan RealtimeVoiceChat adalah karena latensi pada sebagian besar interaksi AI suara terasa kurang memuaskan. Sistem ini adalah sistem open source yang dirancang untuk percakapan suara lokal secara real-time
Sebagai pengguna alat seperti ini, menurut saya meski cepat, sistem seperti ini tidak mengizinkan jeda saat berbicara secara alami
Keren sekali! Fitur interupsi adalah momen "wow" buat saya (bukan hal baru, tapi mengejutkan melihat implementasi open source yang sebagus ini)
Sekitar setahun lalu saya meneliti topik ini. Saya mempelajari beberapa fakta menarik
Hebat. Saya melihat sekilas source code-nya, dan menarik bahwa penulis mengimplementasikan strategi deteksi giliran kustom alih-alih Silero VAD. Saya penasaran mengapa memilih cara itu dan keuntungan apa yang diamati
Saya mulai merasa LLM perlu disetel untuk memberikan respons yang lebih singkat. Anda memasukkan kalimat pendek, lalu keluar paragraf panjang
Saya heran tidak ada yang menyebut ini. Sistem ini berinteraksi seperti manusia, dan ketika konteksnya cukup, sering memotong saya dalam banyak situasi. Latensinya sangat rendah
Cukup bagus. Akan jauh lebih baik kalau terdengar seperti voice SOTA
Mengesankan! Saya rasa ini kualitas sintesis suara open source terbaik yang tersedia saat ini
Saya sedang mengerjakan sesuatu yang mirip lalu menemukan ini. Kerja yang luar biasa. Saya suka demonya