Asisten AI Suara Real-Time dengan Panggilan Fungsi & Streaming Audio Dua Arah
Sebuah platform kebugaran dan nutrisi membutuhkan asisten AI berbasis suara yang dapat menanggapi pengguna secara real-time dengan percakapan alami, melakukan perhitungan spesifik domain (penyesuaian makanan, pelacakan kalori), dan mengucapkan kembali respons โ semuanya dengan latensi di bawah satu detik untuk pengalaman percakapan yang sesungguhnya.
Diskusikan Proyek Anda
Tantangan
Membangun asisten AI suara tingkat produksi menghadirkan tantangan rekayasa real-time yang unik:
- Latensi โ Pipeline tradisional speech-to-text โ LLM โ text-to-speech menambah penundaan 3-5 detik, memutus alur percakapan
- Function Calling โ Asisten perlu mengeksekusi logika domain (perhitungan nutrisi, penyesuaian rencana makan) di tengah percakapan, bukan hanya obrolan
- Audio Streaming โ Audio dua arah perlu mengalir terus-menerus tanpa celah buffering atau masalah gema
- Kesadaran Konteks โ Asisten perlu menjaga konteks percakapan antar giliran saat menangani interupsi
- Multi-Bahasa โ Pengguna berbicara dalam bahasa yang berbeda dan mengharapkan respons dalam bahasa yang sama
- Isolasi Sesi โ Setiap sesi suara memerlukan manajemen status independen tanpa cross-talk
Solusi Kami
Kami membangun asisten AI suara real-time yang ditenagai oleh Gemini Live API Google dengan kapabilitas audio asli, panggilan fungsi kustom untuk perhitungan spesifik domain, dan frontend React dengan streaming audio berbasis WebSocket.
Arsitektur
- Model AI: Gemini dengan input/output audio asli dan function calling
- Backend: Python/FastAPI dengan endpoint WebSocket untuk audio dua arah
- Pipeline Audio: PyAudio untuk I/O mikrofon/speaker dengan streaming real-time
- Frontend: React dengan Vite dan Tailwind CSS untuk UI kontrol sesi
- Komunikasi: WebSocket untuk pesan JSON latensi rendah dan transport audio biner
- Multimodal: Penangkapan kamera dan layar opsional untuk konteks visual
Pipeline Audio Real-Time
Streaming Dua Arah
Sistem menjaga aliran audio berkelanjutan di kedua arah:
- Input: Audio mikrofon ditangkap pada 16kHz mono, dipecah menjadi frame kecil, dan di-streaming ke model AI secara real-time
- Output: Ucapan yang dihasilkan AI diterima pada 24kHz dan diputar melalui speaker segera
- Tanpa Batching: Potongan audio dikirim sebagaimana ditangkap โ tanpa penundaan akumulasi
- Penanganan Interupsi: Pengguna dapat menginterupsi asisten di tengah respons secara alami
Pemrosesan Audio
- Format PCM 16-bit untuk input dan output
- Laju sampel terpisah yang dioptimalkan untuk ucapan (penangkapan 16kHz, pemutaran 24kHz)
- Ukuran buffer kecil untuk latensi minimal
- Streaming berkelanjutan tanpa celah mulai/berhenti antar giliran
Integrasi Panggilan Fungsi
Cara Kerja
Model AI dapat memanggil fungsi Python lokal di tengah percakapan saat perhitungan spesifik domain diperlukan:
- Pengguna mengucapkan permintaan (misalnya, "Saya tidak makan siang hari ini")
- Model AI menyalin dan memahami maksud
- Model menentukan bahwa panggilan fungsi diperlukan dan mengirimkan permintaan terstruktur
- Backend mengekstrak nama fungsi, argumen, dan ID panggilan
- Fungsi lokal mengeksekusi perhitungan domain
- Hasil dikirim kembali ke model sebagai respons terstruktur
- Model menghasilkan respons suara bahasa alami yang menggabungkan hasil
Fungsi Domain
Sistem mendukung panggilan fungsi yang berfokus pada nutrisi untuk skenario seperti:
- Melewatkan Makanan โ Mendistribusikan ulang makronutrien yang terlewat ke makanan yang tersisa
- Makanan Tak Terencana โ Menyesuaikan makanan mendatang untuk mengkompensasi asupan yang tidak terduga
- Substitusi Makanan โ Menukar bahan sambil mempertahankan target makro
- Pelacakan Aktivitas โ Memperkirakan pembakaran kalori dan menyesuaikan buffer nutrisi
Setiap fungsi menggunakan database makro dengan profil nutrisi per makanan dan melakukan perhitungan dinamis dengan sedikit variasi stokastik untuk respons yang terasa alami.
Keamanan Eksekusi
- Input mikrofon dijeda selama eksekusi fungsi untuk mencegah tumpang tindih
- Frame audio yang tertunda diabaikan untuk menghindari konteks yang kedaluwarsa
- Respons kesalahan dikirim kembali dengan elegan jika eksekusi fungsi gagal
- Streaming normal dilanjutkan segera setelah fungsi selesai
Arsitektur Backend
Server WebSocket FastAPI
- Satu endpoint WebSocket tunggal untuk semua komunikasi klien
- Manajemen siklus hidup sesi (mulai, berhenti, pemeriksaan kesehatan ping/pong)
- Satu sesi aktif pada satu waktu dengan penguncian sesi
- Middleware CORS untuk lingkungan pengembangan
- Endpoint pemeriksaan kesehatan untuk pemantauan
Manajemen Sesi
- Sesi dibuat saat klien terhubung dengan pemilihan mode (hanya audio, kamera, atau layar)
- Tugas async latar belakang menangani penangkapan, pemrosesan, dan pemutaran audio secara bersamaan
- Pemutusan koneksi yang anggun dengan pembersihan sumber daya
- Validasi kunci API dan propagasi kesalahan
Input Multimodal (Opsional)
Selain suara, sistem mendukung konteks visual opsional:
- Mode Kamera โ Mengalirkan frame webcam (1fps) untuk konteks visual dalam percakapan
- Mode Layar โ Menangkap konten layar untuk mendiskusikan informasi di layar
- Gambar diubah ukurannya dan dikompresi sebelum transmisi
- Konteks visual meningkatkan kemampuan AI untuk memberikan respons yang relevan
Antarmuka Frontend
- Kontrol Sesi โ Memulai/menghentikan mendengarkan dengan indikator status yang jelas
- Tampilan Status โ Koneksi real-time dan status sesi (idle, connecting, active, error)
- Dukungan Tema โ Mode terang/gelap dengan persistensi
- Panduan Terpandu โ Demo langkah demi langkah untuk pengguna pertama kali
- Manajemen WebSocket โ Logika koneksi ulang otomatis
Konfigurasi Model AI
- Modalitas audio asli (tanpa pipeline STT/TTS terpisah)
- Pemilihan suara yang dapat dikonfigurasi dari beberapa suara prasetel
- Instruksi sistem yang mendefinisikan kepribadian asisten, gaya respons, dan penanganan bahasa
- Definisi alat untuk semua fungsi yang tersedia dengan skema parameter
- Deteksi bahasa otomatis dengan respons dalam bahasa yang sama
Fitur Utama
- Latensi di Bawah Satu Detik โ Model audio asli menghilangkan overhead pipeline STT/TTS
- Audio Dua Arah Real-Time โ Streaming berkelanjutan dengan < 50ms per potongan
- Function Calling โ Perhitungan spesifik domain dieksekusi di tengah percakapan
- Interupsi Alami โ Pengguna dapat menginterupsi asisten secara alami tanpa perintah khusus
- Multi-Bahasa โ Deteksi bahasa otomatis dengan respons dalam bahasa yang sama
- Input Multimodal โ Konteks kamera dan layar opsional untuk pemahaman visual
- Manajemen Sesi โ Kontrol siklus hidup sesi dengan penguncian dan pembersihan sumber daya
- Perhitungan Makro โ Penyesuaian nutrisi dinamis dengan profil makro per makanan
- Pemulihan Kesalahan โ Penanganan kegagalan fungsi dan interupsi jaringan yang anggun
- Ekstensibel โ Fungsi baru ditambahkan dengan mendefinisikan skema dan penangan โ tanpa perubahan arsitektur
Hasil
Tumpukan Teknologi
caseStudyDetail.more Studi Kasus
Jelajahi lebih banyak implementasi teknis kami
Pemrosesan Faktur Bertenaga AI dengan OCR dan Integrasi QuickBooks
Sebuah bisnis menengah yang memproses ratusan faktur vendor setiap bulan perlu menghilangkan entri data manual dengan mengekstraksi data faktur secara otomatis menggunakan AI/OCR dan menyinkronkannya langsung ke QuickBooks untuk pembukuan dan pelacakan pembayaran.
Penyisipan Iklan Sisi Klien (CSAI) dengan Penguraian Penanda SCTE-35 & Integrasi Pemutar Multi-Platform
Sebuah platform streaming video perlu mengimplementasikan Client-Side Ad Insertion (CSAI) di seluruh aplikasi web, seluler, dan TV terhubung โ memungkinkan pengalaman iklan yang dipersonalisasi di tingkat perangkat dengan dukungan interaksi iklan penuh (overlay yang dapat diklik, banner pendamping, tombol lewati) yang tidak dapat disediakan oleh penyisipan sisi server.
Siap Mentransformasi Bisnis Anda?
Mari diskusikan bagaimana kami dapat menerapkan solusi serupa untuk tantangan Anda.