- Studi kasus pengembangan agen suara buatan sendiri dengan latensi sistem AI berbasis suara ditekan ke kisaran 400 ms
- STT, LLM, dan TTS dihubungkan dalam pipeline real-time untuk mencapai kecepatan respons 2x lebih cepat dibanding platform komersial yang ada (seperti Vapi)
- Deepgram Flux digunakan untuk menangani deteksi ujaran dan pergantian giliran, sementara model Groq llama-3.3-70b dipakai untuk memangkas waktu pembuatan token pertama secara signifikan
- Penempatan geografis dan optimasi jaringan menurunkan latensi hingga kurang dari setengah saat dideploy di wilayah EU
- Inti agen suara adalah orkestrasi real-time dan desain pipeline, dan membangunnya sendiri membantu mengidentifikasi bottleneck performa dengan jelas
Latar belakang membangun agen suara
- Berdasarkan pengalaman mengembangkan prototipe agen suara untuk perusahaan besar produk konsumen, penulis mencoba membangun sendiri untuk menangani kompleksitas platform komersial secara langsung
- Platform seperti ElevenLabs dan Vapi memang praktis, tetapi sulit memahami cara kerja internalnya dan tidak memungkinkan kontrol latensi yang detail
- Tujuannya adalah mewujudkan performa setara Vapi secara mandiri, dan itu berhasil dilakukan hanya dalam satu hari dengan sekitar 100 dolar kredit API
Kompleksitas agen suara
- Tidak seperti chatbot berbasis teks, suara membutuhkan manajemen pergantian giliran secara real-time (turn-taking)
- Saat pengguna mulai berbicara, sistem harus segera menghentikan ucapannya sendiri, dan ketika pengguna berhenti, sistem harus cepat mulai merespons
- Deteksi suara sederhana (VAD) saja sulit menentukan akhir ujaran secara akurat, sehingga bisa muncul latensi, ujaran yang saling tumpang tindih, dan jeda hening yang tidak perlu
Implementasi pertama: pengujian berbasis VAD
- Menggunakan server FastAPI dan Twilio WebSocket untuk menerima stream audio μ-law
- Silero VAD dipakai untuk menentukan ada tidaknya suara, lalu file WAV yang sudah direkam sebelumnya diputar saat ujaran berakhir
- Meski sederhana, tahap ini menunjukkan responsivitas instan dan alur percakapan yang natural
- Dari sini diperoleh tolok ukur untuk mengukur batas bawah latensi
Implementasi kedua: Deepgram Flux dan pipeline real-time
- Deepgram Flux diadopsi untuk menggabungkan transkripsi streaming dan deteksi giliran
- Saat Flux mendeteksi akhir ujaran, proses berikut dijalankan
- Hasil transkripsi dan riwayat percakapan dikirim ke LLM
- Begitu token pertama dihasilkan, hasilnya langsung di-stream ke TTS (WebSocket)
- Audio yang dihasilkan dikirim secara real-time ke Twilio
- Koneksi TTS dipertahankan tetap hangat (warm pool) untuk menghemat sekitar 300 ms latensi
- Saat pengguna mulai berbicara, LLM, TTS, dan transmisi audio langsung dibatalkan agar interupsi terasa natural
Pengukuran latensi dan deployment regional
- Saat dijalankan secara lokal dari Turki, latensi rata-rata mencapai 1,6~1,7 detik
- Setelah dideploy ke region EU di Railway dan Twilio, Deepgram, serta ElevenLabs diselaraskan ke region EU
- Rata-rata turun menjadi 690 ms (total 790 ms), sekitar 50 ms lebih cepat dibanding Vapi
- Penurunan latensi ini sangat meningkatkan respons percakapan, termasuk penanganan interupsi saat berbicara
Pemilihan model dan peningkatan performa
- Awalnya menggunakan gpt-4o-mini, lalu diganti ke Groq llama-3.3-70b
- Hasil pengujian menunjukkan waktu pembuatan token pertama (TTFT) model Groq hingga 3x lebih cepat dibanding OpenAI
- Berhasil mencapai latensi end-to-end rata-rata di bawah 400 ms, dengan audio pertama tiba dalam 500 ms
- Pada level ini, agen terasa bereaksi lebih cepat daripada manusia
Pelajaran teknis utama
- Optimasi latensi bergantung pada pengelolaan seluruh jalur dari akhir ujaran hingga keluaran suara pertama
- Karena TTFT menyumbang lebih dari setengah total latensi, pemilihan model berlatensi rendah sangat penting
- STT→LLM→TTS tidak boleh diproses secara berurutan, tetapi harus dijadikan pipeline streaming
- Semua komponen harus langsung dibatalkan saat terjadi interupsi ujaran agar percakapan tetap natural
- Kedekatan geografis antar-layanan berdampak sangat besar terhadap latensi
Perbandingan dengan platform komersial
- Vapi dan ElevenLabs tetap berguna bagi sebagian besar tim karena menyediakan API, stabilitas, observabilitas, dan fitur tambahan lainnya
- Namun, membangun sendiri memungkinkan kita memahami bottleneck nyata dan arti parameter secara langsung, serta
mewujudkan orkestrasi kustom sesuai kebutuhan spesifik
- Pada akhirnya, sistem suara adalah masalah orkestrasi, dan jika strukturnya dipahami dengan jelas, ini adalah tantangan engineering yang bisa diselesaikan
Kode sumber
1 komentar
Komentar Hacker News
Tulisan ini benar-benar menarik. Dulu tim Amazon Alexa meneliti masalah ini dan bahkan punya paten terkait
Dalam percakapan, rata-rata jeda antarmanusia adalah 0ms, artinya orang berikutnya mulai bicara bahkan sebelum lawan bicaranya selesai. Ini karena otak memprediksi ucapan lawan bicara sambil menyiapkan jawaban secara bersamaan
Sebaliknya, orang justru mengharapkan adanya jeda dari asisten suara. Alasannya ada dua — persepsi bahwa komputer perlu ‘berpikir’, dan latensi panggilan ponsel
Hampir tidak ada respons Alexa yang di bawah 500ms. Dulu 300ms keheningan hanya dianggap sebagai ‘akhir giliran’, tetapi inti sebenarnya adalah semantic end-of-turn
Sekarang sumber daya komputasi sudah cukup, jadi saya penasaran seberapa jauh bagian ini berkembang. Pemrosesan berdasarkan kedekatan geografis (edge computing) adalah titik balik besar
Menurut saya, suara pada akhirnya adalah masalah turn-taking. Ada perbaikan mudah yang belum banyak disentuh — yaitu filler dan pengaturan tempo
Saat LLM mendeteksi jeda singkat, ia bisa memasukkan filler yang sesuai konteks seperti “emm” atau “ya, benar” sementara respons sebenarnya sedang dihasilkan. Ini membuat percakapan terasa jauh lebih alami
Tulisan yang luar biasa. OpenAI Responses client baru-baru ini memakai websocket sehingga latensinya turun.
Cara lain adalah menjalankan LLM yang sangat kecil secara lokal. Saya membuat pipeline sepenuhnya lokal lewat proyek ova, dan meski tanpa streaming tetap mendapatkan round-trip time di bawah 1 detik
Struktur pipeline streaming dan analisis latensi per tahap di tulisan ini sangat berguna. Saya terkesan karena mereka benar-benar mengimplementasikan loop turn-taking sendiri
Namun, perbandingan “2x lebih cepat daripada Vapi” agak kurang tepat. Vapi menangani jauh lebih banyak hal seperti tool calling, webhook, multi-tenant routing
Nilai utama tulisan ini sebenarnya ada pada ‘wawasan dari loop orkestrasi buatan sendiri’. Kalau dirangkum sebagai “hal-hal yang dipelajari saat membangunnya sendiri”, itu akan sempurna
Saya juga sedang membangun agen suara produksi dengan kombinasi Twilio + Deepgram + ElevenLabs + LLM API
Kuncinya bukan akurasi STT, melainkan UX turn-taking. Saat kami beralih dari ambang keheningan tetap ke semantic end-of-turn, perbedaannya langsung sangat terasa
Latensi antarwilayah juga penting. Saat terhubung dari India ke server AS, edge hop Twilio saja menambah 150~250ms. Kami memperbaikinya dengan routing per wilayah
Menangani barge-in juga rumit. Bukan cuma menghentikan LLM dan TTS, tetapi juga membatalkan workflow otomatis yang sudah telanjur berjalan. Dulu pernah ada bug di mana saat pengguna menyela ketika konfirmasi reservasi, reservasinya benar-benar tetap selesai diproses
Soniox Real-time (mendukung 60 bahasa) menangani endpoint detection di level model. Ini jauh lebih akurat daripada VAD
Bisa lihat dokumentasi teknis, benchmark dari Daily, dan halaman demo
Saya dulu bekerja di Soniox. Itu adalah layanan pertama yang mengimplementasikan endpoint detection real-time
Secara pribadi saya melihat arsitektur STT → LLM → TTS punya keterbatasan. Masa depan ada pada model suara end-to-end
Dua tahun lalu saya membuat demo Chirpy, tetapi untuk mencapai kualitas yang benar-benar layak pakai ternyata butuh pelatihan khusus. Untuk side project, itu di luar jangkauan
Pelanggan enterprise menekankan auditability dan reliability. Di industri teregulasi seperti kesehatan dan keuangan, output STT dan LLM harus bisa diverifikasi secara terpisah
Sebaliknya, model suara end-to-end lebih cocok untuk penggunaan yang bersifat naratif seperti wawancara atau survei. Pelanggan nyata lebih menginginkan kematangan engineering daripada model terbaru
Pendekatan kali ini mengingatkan saya pada perkembangan awal netcode di game engine. Latensi bukan masalah model, melainkan masalah orkestrasi
Makalah VR John Carmack tahun 2013 juga menyampaikan argumen yang sama — kita harus melacak seluruh pipeline untuk menemukan bottleneck pada level milidetik
Latency Mitigation Strategies layak dibaca. Contoh membuka pool websocket TTS lebih awal untuk menghemat 300ms adalah ilustrasi yang sempurna
Saya ingin memperkenalkan aplikasi pengenalan suara open source Handy. Aplikasi ini bekerja sepenuhnya secara offline dan bisa diperluas
Saya memakainya setiap hari bersama Claude, dan hasilnya jauh lebih baik daripada diktasi bawaan macOS
Tulisan yang bagus, tetapi menjelaskan percakapan hanya lewat turn-taking itu terlalu menyederhanakan
Percakapan nyata juga mencakup ucapan yang saling tumpang tindih, sinyal konfirmasi, phatic messages untuk menjaga keterlibatan mendengar, bahkan perilaku kooperatif seperti menyelesaikan ucapan lawan bicara
Unsur-unsur ini tidak mudah direpresentasikan dengan model turn-taking sederhana, dan model harus mampu menghasilkan sekaligus memahaminya