Hesabınızla Özellikleri Keşfedin
Giriş Yap
Öne Çıkan Kategoriler
Giriş Yap
PWA & Zero Trust
Ses ve Müzik

Gerçek Zamanlı Sesli Yapay Zeka (Voice AI) Mimarisi: LiveKit, WebRTC ve Kokoro ile 300ms Altı Konuşan Ajan Kurulumu

Yapay Zeka Evreni Admin 18 Oct 2026 3 okunma
Doğrudan Yanıt (AI Arama Özeti)

Gerçek zamanlı sesli yapay zeka asistanlarında 300 milisaniye altı gecikme (latency) yakalamak için HTTP/WebSocket yerine UDP tabanlı WebRTC protokolü (LiveKit), konuşma bitişini milisaniyede algılayan Silero VAD, akışlı ses tanıma (Deepgram / Faster-Whisper) ve ultra düşük gecikmeli TTS (Kokoro-82M / ElevenLabs Flash) boru hattı kullanılmalıdır.

İki insan arasındaki doğal bir telefon konuşmasında, bir kişinin cümlesini bitirmesi ile karşı tarafın yanıt vermeye başlaması arasındaki süre ortalama 250 ila 400 milisaniyedir. Eğer kurduğunuz sesli yapay zeka asistanı 2-3 saniye bekledikten sonra konuşmaya başlıyorsa, kullanıcı hattın koptuğunu düşünür ve konuşma doğallığı tamamen kaybolur. Bu kapsamlı mimari rehberde, açık kaynaklı livekit/agents çerçevesiyle 300 ms altında yanıt veren ve söz kesmeleri (Barge-in / Interruption) anında algılayan profesyonel bir sesli ajanın nasıl kurulduğunu adım adım inceliyoruz.

Neden WebSocket Değil de WebRTC Zorunludur?

Geliştiricilerin yaptığı en yaygın hata ses paketlerini standart TCP/WebSocket üzerinden taşımaktır. TCP protokolü yolda tek bir ses paketi kaybolduğunda (Packet Loss) arkadan gelen tüm paketleri bekletir (Head-of-Line Blocking) ve seste saniyelik donmalar yaratır. WebRTC (UDP) ise kaybolan milisaniyelik ses paketini atlayarak konuşmanın sıfır gecikmeyle akmasını, yankı engellemeyi (Acoustic Echo Cancellation) ve gürültü bastırmayı donanım seviyesinde çözer.

300 Milisaniye Gecikme Bütçesi (Latency Budget) Kırılım Tablosu

Boru Hattı (Pipeline) Katmanı Geleneksel Yavaş Mimari Optimize Gerçek Zamanlı Mimari Hedef Gecikme Süresi
1. Ağ Taşıma Katmanı HTTP / REST veya TCP WebSocket (~250 ms) LiveKit WebRTC (UDP Edge Ağı) ~25 ms
2. Ses Etkinliği ve Sıra Algılama (VAD) Sabit 1.5 saniye sessizlik bekleme Silero VAD + Anlamsal Sıra Algılayıcı (Turn Detector) ~40 ms
3. Sesten Metne (STT - Transkripsiyon) Ses bittikten sonra toplu Whisper çağrısı (~900 ms) Akışlı (Streaming) Faster-Whisper / Deepgram Nova-3 ~65 ms
4. LLM İlk Token Süresi (TTFT) Standart büyük model (~800 ms) SGLang / Gemini 2.0 Flash / Groq ~90 ms
5. Metinden Sese İlk Bayt (TTS TTFB) Tam cümle bitince ses üretme (~1.200 ms) Kokoro-82M (ONNX) / ElevenLabs Flash ~75 ms
TOPLAM UÇTAN UCA GECİKME 3.500 – 4.500 ms (3.5 – 4.5 Saniye) Tam Akışlı (Streaming) Boru Hattı ~295 ms (İnsan Hızı)

Kritik Mühendislik Problemi: Söz Kesme (Barge-in) ve Sıra Algılama

Kullanıcı konuşurken nefes almak için yarım saniye duraksadığında yapay zekanın hemen araya girmemesi; ancak yapay zeka uzun bir açıklama yaparken kullanıcı "Tamam, anladım ama..." dediğinde yapay zekanın 50 milisaniye içinde susup dinlemeye geçmesi gerekir. LiveKit Agents bu sorunu Silero VAD ile küçük bir Transformer Sıra Algılama Modelini (End-of-Turn Model) birleştirerek çözer: Kullanıcının son kelimesi "ve..." veya "çünkü..." ise cümlenin bitmediğini anlar ve bekler.

Adım 1: LiveKit Agents Python Kurulumu

pip install "livekit-agents[openai,silero,deepgram,elevenlabs]"

Adım 2: Tam Çalışan Gerçek Zamanlı Sesli Ajan Kodu (`agent.py`)

import logging
from livekit.agents import AutoSubscribe, JobContext, WorkerOptions, cli, llm
from livekit.agents.pipeline import VoicePipelineAgent
from livekit.plugins import openai, silero

logger = logging.getLogger("sesli-asistan")

async def entrypoint(ctx: JobContext):
    # Başlangıç sistem talimatı (Sesli okunacağı için kısa ve doğal cümle kuralı zorunludur)
    initial_ctx = llm.ChatContext().append(
        role="system",
        text=(
            "Sen Yapay Zeka Evreni'nin gerçek zamanlı sesli asistanısın. "
            "Yanıtların telefonda okunacağı için madde imi veya tablo kullanma; "
            "en fazla 2 cümlelik doğal, akıcı ve sıcak bir Türkçeyle konuş."
        ),
    )

    await ctx.connect(auto_subscribe=AutoSubscribe.AUDIO_ONLY)

    # Ses Boru Hattı Ajanını Tanımlama (VAD + STT + LLM + TTS)
    agent = VoicePipelineAgent(
        vad=silero.VAD.load(),
        stt=openai.STT(model="whisper-1", language="tr"),
        llm=openai.LLM(model="gpt-4o-mini"),
        tts=openai.TTS(voice="nova"),
        chat_ctx=initial_ctx,
        allow_interruptions=True,          # Kullanıcı araya girdiğinde anında sus
        interrupt_speech_duration=0.4,     # 400ms konuşma algılanırsa kesmeyi tetikle
    )

    agent.start(ctx.room)
    await agent.say("Merhaba! Yapay Zeka Evreni sesli hattına hoş geldiniz, size nasıl yardımcı olabilirim?", allow_interruptions=True)

if __name__ == "__main__":
    cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))

Tamamen çevrimdışı ve yerel donanımda sestan sese (Speech-to-Speech) tek bir modelle çalışmak isterseniz Mini-Omni 2 aracımızı inceleyebilirsiniz.

Google Sponsorlu Alan