Realtime Voice AI Essentials
> Realtime voice AI memungkinkan user melakukan percakapan lisan yang natural dan low-latency dengan sistem AI — misalnya voice assistant, AI phone agent, atau in-car assistant. Notebook ini membahas bagaimana pipeline semacam ini dibangun, batasan latency yang membentuk hampir semua keputusan desainnya, dan di mana sebenarnya sistem ini dipakai.
Apa itu Realtime Voice AI?
Realtime voice AI adalah kelas sistem yang menjalankan percakapan lisan bolak-balik secara live dengan user — bukan pengalaman "rekam pesan, dapat balasan teks, dibacakan," melainkan audio masuk berkelanjutan, audio keluar berkelanjutan, dengan responsiveness setara telepon.
Responsiveness itulah tantangan engineering utamanya. Percakapan manusia mentolerir sekitar 200–500ms latency respons sebelum mulai terasa tidak natural; sistem yang dibangun dengan merangkai step speech-to-text batch, LLM call, dan text-to-speech batch secara berurutan biasanya jauh melebihi batas itu, karena setiap stage menunggu stage sebelumnya benar-benar selesai.
Dua Arsitektur
1. Arsitektur cascaded (pipeline) Tiga model terpisah yang saling streaming satu sama lain:Microphone → Speech-to-Text (streaming) → LLM (streaming) → Text-to-Speech (streaming) → Speaker
Setiap stage mulai memproses sebelum stage sebelumnya benar-benar selesai — LLM bisa mulai men-generate respons dari transcript parsial, dan TTS bisa mulai bicara kalimat pertama saat LLM masih men-generate sisanya. Ini arsitektur yang lebih umum dan lebih mudah dikontrol: kita bisa mengganti komponen mana pun, menambahkan moderation di antara stage, dan memakai ulang logic LLM berbasis teks yang sudah ada.
2. Arsitektur speech-to-speech (native)
Satu model multimodal menerima audio masuk dan langsung menghasilkan audio keluar, tanpa transcript teks sebagai batas antara di tengahnya.
Microphone → Model Multimodal (audio-in, audio-out) → Speaker
Pendekatan ini bisa mencapai latency lebih rendah dan mempertahankan informasi paralinguistik (nada, emosi, tempo bicara) yang biasanya hilang saat semuanya dipaksa lewat transcript teks. Arsitektur ini masih kurang matang dan lebih sulit di-instrument (tidak ada layer teks yang bersih untuk di-log, dimoderasi, atau di-fine-tune semudah pendekatan cascaded).
Konsep Inti
Use Case Umum
Contoh Praktis: Sesi Cascaded Minimal (Sketsa)
Ini menggambarkan bentuk sebuah sesi cascaded pipeline, bukan implementasi production:
async def handle_voice_session(audio_stream):
async for transcript_chunk in speech_to_text_stream(audio_stream):
if is_end_of_turn(transcript_chunk):
full_utterance = transcript_buffer.finalize()
async for text_chunk in llm.stream(full_utterance):
# mulai bicara sebelum LLM selesai men-generate
async for audio_chunk in text_to_speech_stream(text_chunk):
await send_to_speaker(audio_chunk)
elif user_started_speaking_again():
# barge-in: hentikan playback yang sedang berjalan seketika
await stop_playback()
transcript_buffer.reset()
Beberapa provider (misalnya OpenAI Realtime API, ElevenLabs Conversational AI) sekarang mengekspos seluruh loop ini — VAD, streaming STT/LLM/TTS atau native speech-to-speech, dan interruption handling — sebagai satu managed API tunggal, yang biasanya jadi titik awal paling pragmatis dibanding merakit pipeline dari komponen mentah.