Sesli AI'da altı ayda gerçek zamanlı mimari: sıra beklemeyi bırakmak
How we built a realtime system for responsive voice AI in six months
İnsanlar konuşurken sırayı saniyenin küçük bir kesrinde devralır. Eski sesli asistanlar bunu yakalayamıyordu çünkü mimarileri sıra tabanlıydı (turn-based): önce küçük bir turn detector modeli "kullanıcı sustu mu?" diye karar veriyor, ancak ondan sonra büyük dil modeli çalışmaya başlıyordu. Erken karar verirse kullanıcının sözünü kesiyor, geç verirse sistem ağır hissettiriyordu.
GPT-Live bu dedektörü ses yolundan tamamen çıkarmış. Model full-duplex çalışıyor: aynı anda hem dinliyor hem konuşuyor. Yani "sıra kimde?" kararı ayrı bir bileşenin tahmini olmaktan çıkıp modelin kendi işinin parçası oluyor.
İşin mühendislik açısından asıl öğretici kısmı şu mimari karar: ses akışı ile uygulama mantığı iki ayrı yola ayrılmış. Ses, istemci ile model arasında kesintisiz bir hızlı yolda (fast path) akıyor; araç çağırma, daha derin akıl yürütme için GPT-5.5'e devretme gibi işler ise asenkron bir yan yolda yürüyor. Böylece pahalı bir işlem sesin akışını durdurmuyor.
Bu ayrım olmadan sistem çalışmıyor, çünkü sürekli akışta tolerans yok: eski sıra tabanlı sistemde bir ses parçasının 50 ms geç gelmesi fark edilmezken, kesintisiz akışta aynı gecikme kulakta duyulabilir bir boşluk ya da cızırtı hâline geliyor.
Öne çıkanlar
- Turn detector'ı kaldırıp modeli full-duplex yapmak, "tahmin et" problemini tamamen ortadan kaldırıyor — çözülmesi zor bir problemi çözmek yerine yok etmek.
- Medya yolu ile kontrol yolu ayrıldı: ses kesintisiz akarken tool use ve model devretme asenkron bir kanalda yürüyor.
- Stateful inference — model isteğe değil, oturuma bağlı. Bu, istekleri herhangi bir sunucuya dağıtmayı imkânsız kılıyor; yönlendirme oturum-farkında olmalı.
- Sürekli akışta hata bütçesi çok daha dar: taşıma, işleme ve çıkarımdaki her gecikme doğrudan duyulabilir bir kusura dönüşüyor.
- Protokol seviyesine kadar inilmiş — ses taşıma katmanı da öngörülebilir gecikme için yeniden yazılmış.
Neden önemli?
"Hızlı yol / yavaş yol ayrımı" bu yazının asıl dersi ve sesli AI'a özgü değil. Aynı desen ödeme sistemlerinde (yetkilendirme senkron, mutabakat asenkron), mesajlaşma uygulamalarında (mesaj iletimi senkron, bildirim ve arşivleme asenkron) ve arama sistemlerinde de aynı. Bir sistemi hızlandırmanın en güçlü yolu genellikle kodu optimize etmek değil, kritik yoldan iş çıkarmaktır.
Sende karşılığı
KlioAI'daki konuşma pratiği özelliği tam olarak bu problemin küçük ölçekli hâli: kullanıcı konuşurken kaydı işleme, değerlendirme ve puanlama işlerinin hepsini yanıt yolunda yaparsan uygulama ağır hisseder. Spring Boot tarafında kritik yolu "sesi al, akışı sürdür" ile sınırlayıp; değerlendirme, kayıt ve istatistik güncellemeyi bir kuyruğa (Redis Streams veya basit bir async queue) atmak bu yazının doğrudan uygulaması olur. Bir de "stateful inference" uyarısını not al: oturuma bağlı bir servisin önüne rastgele yük dengeleyici koyarsan oturumlar kopar — sticky routing gerekir.
Sözlük
- full-duplex çift yönlü eşzamanlı
- Bir kanalın aynı anda hem veri alıp hem gönderebilmesi. Telsiz (sırayla) değil, telefon (aynı anda) gibi.
- turn detection sıra tespiti
- Konuşmada karşı tarafın sözünü bitirip bitirmediğini tahmin eden bileşen.
- stateful inference durum tutan çıkarım
- Modelin her isteği sıfırdan işlemeyip oturum boyunca biriken durumu koruması; ölçeklemeyi zorlaştırır çünkü istek belirli bir sunucuya bağlanır.
- fast path hızlı yol
- Sistemde gecikmeye en duyarlı akış; buraya ek iş koymamak için özel olarak korunur.