[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-\u002Fde\u002Fblog\u002Fvoix-temps-reel-vs-batch":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"author":10,"date":11,"tags":12,"body":16,"_type":523,"_id":524,"_source":525,"_file":526,"_stem":527,"_extension":528},"\u002Fde\u002Fblog\u002Fvoix-temps-reel-vs-batch","blog",false,"","Telefon-KI-Agent: Echtzeit-Sprache oder Batch?","Warum ein Sprachassistent eine radikal andere Architektur erfordert als ein Text-Chatbot und was das für Latenz, Barge-in und Modellauswahl bedeutet.","Équipe betool","2026-04-28",[13,14,15],"voice","architecture","latency",{"type":17,"children":18,"toc":514},"root",[19,40,45,52,71,84,89,95,105,124,129,200,205,210,244,250,262,274,285,308,313,319,324,329,382,388,393,442,447,453,458,502],{"type":20,"tag":21,"props":22,"children":23},"element","p",{},[24,27,33,35],{"type":25,"value":26},"text","Wenn Ihnen ein Anbieter einen ",{"type":20,"tag":28,"props":29,"children":30},"em",{},[31],{"type":25,"value":32},"„Telefon-KI-Agenten“",{"type":25,"value":34}," anpreist, stellen Sie ihm eine Frage: ",{"type":20,"tag":28,"props":36,"children":37},{},[38],{"type":25,"value":39},"„Wie hoch ist Ihre Ende-zu-Ende-Latenz zwischen dem Ende der Nutzeräußerung und dem Beginn der Antwort?“",{"type":20,"tag":21,"props":41,"children":42},{},[43],{"type":25,"value":44},"Übersteigt die Antwort 1,5 Sekunden, ist es kein Telefonagent. Es ist ein Chatbot mit einem vorne angeklebten ASR-\u002FTTS-Modul.",{"type":20,"tag":46,"props":47,"children":49},"h2",{"id":48},"die-800-ms-regel",[50],{"type":25,"value":51},"Die 800-ms-Regel",{"type":20,"tag":21,"props":53,"children":54},{},[55,57,62,64,69],{"type":25,"value":56},"Ein Mensch am Telefon toleriert Stille nach seiner Frage. Aber diese Stille hat eine Schwelle: Ab 800 ms fühlt sich die Gegenseite ",{"type":20,"tag":28,"props":58,"children":59},{},[60],{"type":25,"value":61},"„eingefroren“",{"type":25,"value":63}," an. Bei 1.500 ms sagt der Anrufer ",{"type":20,"tag":28,"props":65,"children":66},{},[67],{"type":25,"value":68},"„Hallo?“",{"type":25,"value":70},". Bei 3.000 ms legt er auf und vermutet ein Leitungsproblem.",{"type":20,"tag":21,"props":72,"children":73},{},[74,76,82],{"type":25,"value":75},"Das Ziel für einen ernstzunehmenden Sprachagenten lautet daher: ",{"type":20,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":25,"value":81},"unter 800 ms",{"type":25,"value":83}," zwischen dem Ende der Äußerung und dem ersten hörbaren Byte der Antwort.",{"type":20,"tag":21,"props":85,"children":86},{},[87],{"type":25,"value":88},"Schlüsseln wir es auf.",{"type":20,"tag":46,"props":90,"children":92},{"id":91},"das-zeitbudget-im-detail",[93],{"type":25,"value":94},"Das Zeitbudget im Detail",{"type":20,"tag":96,"props":97,"children":99},"pre",{"code":98},"[user speech]──▶[ASR streaming]──▶[LLM]──▶[TTS streaming]──▶[audio out]\n      ~150ms          ~80ms        ~?       ~250ms             ~50ms\n",[100],{"type":20,"tag":101,"props":102,"children":103},"code",{"__ignoreMap":7},[104],{"type":25,"value":98},{"type":20,"tag":21,"props":106,"children":107},{},[108,110,115,117,122],{"type":25,"value":109},"Von den verfügbaren ~800 ms werden ",{"type":20,"tag":77,"props":111,"children":112},{},[113],{"type":25,"value":114},"etwa 270 ms von ASR + TTS + Transport verbraucht",{"type":25,"value":116},". Es bleiben ",{"type":20,"tag":77,"props":118,"children":119},{},[120],{"type":25,"value":121},"530 ms für das LLM",{"type":25,"value":123}," — einschließlich Prefill-Zeit, Reasoning und Generierung des ersten Tokens.",{"type":20,"tag":21,"props":125,"children":126},{},[127],{"type":25,"value":128},"Auswirkungen:",{"type":20,"tag":130,"props":131,"children":132},"ul",{},[133,151,167,183],{"type":20,"tag":134,"props":135,"children":136},"li",{},[137,142,144,149],{"type":20,"tag":77,"props":138,"children":139},{},[140],{"type":25,"value":141},"Ein großes Reasoning-Modell ohne Streaming",{"type":25,"value":143},": mehrere Sekunden bis zum ersten hörbaren Wort. ",{"type":20,"tag":77,"props":145,"children":146},{},[147],{"type":25,"value":148},"Ausgeschlossen",{"type":25,"value":150},".",{"type":20,"tag":134,"props":152,"children":153},{},[154,159,161,166],{"type":20,"tag":77,"props":155,"children":156},{},[157],{"type":25,"value":158},"Ein High-End-Modell mit Streaming",{"type":25,"value":160},": schnelles erstes Token an guten Tagen, deutlich langsamer an schlechten. ",{"type":20,"tag":77,"props":162,"children":163},{},[164],{"type":25,"value":165},"Akzeptabel, aber knapp",{"type":25,"value":150},{"type":20,"tag":134,"props":168,"children":169},{},[170,175,177,182],{"type":20,"tag":77,"props":171,"children":172},{},[173],{"type":25,"value":174},"Ein schnelles Modell mit Streaming",{"type":25,"value":176}," („leichte“ Varianten von Claude, GPT und Gemini): ",{"type":20,"tag":77,"props":178,"children":179},{},[180],{"type":25,"value":181},"Komfortabel",{"type":25,"value":150},{"type":20,"tag":134,"props":184,"children":185},{},[186,191,193,198],{"type":20,"tag":77,"props":187,"children":188},{},[189],{"type":25,"value":190},"Ein kleines Open-Weight-Modell, auf Ihrer GPU bedient (vLLM)",{"type":25,"value":192},": ",{"type":20,"tag":77,"props":194,"children":195},{},[196],{"type":25,"value":197},"Exzellent",{"type":25,"value":199}," (und privat).",{"type":20,"tag":21,"props":201,"children":202},{},[203],{"type":25,"value":204},"Messen Sie die TTFT auf Ihrem eigenen Traffic: Sie variiert je nach Anbieter, Region und Uhrzeit.",{"type":20,"tag":21,"props":206,"children":207},{},[208],{"type":25,"value":209},"Eine ernstzunehmende Spracharchitektur erfordert daher:",{"type":20,"tag":211,"props":212,"children":213},"ol",{},[214,224,234],{"type":20,"tag":134,"props":215,"children":216},{},[217,222],{"type":20,"tag":77,"props":218,"children":219},{},[220],{"type":25,"value":221},"Alles ist Streaming",{"type":25,"value":223}," — ASR, LLM, TTS. Nicht ein einziges Glied im Batch-Modus.",{"type":20,"tag":134,"props":225,"children":226},{},[227,232],{"type":20,"tag":77,"props":228,"children":229},{},[230],{"type":25,"value":231},"Das LLM-Modell wird nach TTFT ausgewählt",{"type":25,"value":233}," (Time to First Token), nicht nach MMLU-Score.",{"type":20,"tag":134,"props":235,"children":236},{},[237,242],{"type":20,"tag":77,"props":238,"children":239},{},[240],{"type":25,"value":241},"TTS beginnt beim ersten empfangenen Token zu sprechen",{"type":25,"value":243},", nicht nachdem die vollständige Antwort fertig ist.",{"type":20,"tag":46,"props":245,"children":247},{"id":246},"barge-in",[248],{"type":25,"value":249},"Barge-in",{"type":20,"tag":21,"props":251,"children":252},{},[253,255,260],{"type":25,"value":254},"Auf einem Textkanal wartet der Nutzer, bis der Bot fertig ist. Am Telefon ",{"type":20,"tag":77,"props":256,"children":257},{},[258],{"type":25,"value":259},"unterbricht er",{"type":25,"value":261}," — drei von fünf Malen in natürlichen Gesprächen.",{"type":20,"tag":21,"props":263,"children":264},{},[265,267,272],{"type":25,"value":266},"Ein Sprachagent, der es nicht verträgt, unterbrochen zu werden, wirkt ",{"type":20,"tag":28,"props":268,"children":269},{},[270],{"type":25,"value":271},"„robotisch“",{"type":25,"value":273}," — er redet weiter, während der Nutzer versucht zu unterbrechen. Das ist unerträglich und signalisiert sofort einen schlecht gebauten Bot.",{"type":20,"tag":21,"props":275,"children":276},{},[277,279,283],{"type":25,"value":278},"Technisches ",{"type":20,"tag":77,"props":280,"children":281},{},[282],{"type":25,"value":249},{"type":25,"value":284}," erfordert:",{"type":20,"tag":130,"props":286,"children":287},{},[288,293,298,303],{"type":20,"tag":134,"props":289,"children":290},{},[291],{"type":25,"value":292},"TTS stoppt sofort, wenn das ASR ein ausgehendes Sprachsignal des Nutzers erkennt.",{"type":20,"tag":134,"props":294,"children":295},{},[296],{"type":25,"value":297},"Das LLM verwirft die laufende Completion (ohne zu murren).",{"type":20,"tag":134,"props":299,"children":300},{},[301],{"type":25,"value":302},"Der ausgehende Audiopuffer wird sofort geleert (andernfalls ist eine restliche Halbsilbe hörbar).",{"type":20,"tag":134,"props":304,"children":305},{},[306],{"type":25,"value":307},"Der Gesprächsverlauf notiert, dass die Antwort nicht vollständig gehört wurde — um ein versehentliches Wiederholen zu vermeiden.",{"type":20,"tag":21,"props":309,"children":310},{},[311],{"type":25,"value":312},"Es ist ein technisches Detail, das alles daran ändert, wie sich die Interaktion anfühlt.",{"type":20,"tag":46,"props":314,"children":316},{"id":315},"umgang-mit-unsicherheit",[317],{"type":25,"value":318},"Umgang mit Unsicherheit",{"type":20,"tag":21,"props":320,"children":321},{},[322],{"type":25,"value":323},"Am Telefon macht das ASR regelmäßig Fehler. Wo ein Text-Chatbot stets den exakt vom Nutzer getippten Text erhält, empfängt der Sprachagent eine häufig unvollkommene Transkription.",{"type":20,"tag":21,"props":325,"children":326},{},[327],{"type":25,"value":328},"Strategien, die funktionieren:",{"type":20,"tag":130,"props":330,"children":331},{},[332,342,366],{"type":20,"tag":134,"props":333,"children":334},{},[335,340],{"type":20,"tag":77,"props":336,"children":337},{},[338],{"type":25,"value":339},"Bestätigung anfordern",{"type":25,"value":341}," bei folgenreichen Elementen (Aktenzeichen, Betrag, ungewöhnlicher Nachname). Nicht systematisch — das wird unerträglich.",{"type":20,"tag":134,"props":343,"children":344},{},[345,350,352,357,359,364],{"type":20,"tag":77,"props":346,"children":347},{},[348],{"type":25,"value":349},"Dem LLM nicht blind vertrauen",{"type":25,"value":351},", wenn das ASR mehrdeutig ist. Lautet der empfangene Satz ",{"type":20,"tag":28,"props":353,"children":354},{},[355],{"type":25,"value":356},"„Ich möchte meinen Vertrag kündigen“",{"type":25,"value":358}," mit einem niedrigen Konfidenz-Score, ist es besser zu fragen ",{"type":20,"tag":28,"props":360,"children":361},{},[362],{"type":25,"value":363},"„Meinten Sie, Ihren Vertrag kündigen?“",{"type":25,"value":365},", als das Kündigungsverfahren auszulösen.",{"type":20,"tag":134,"props":367,"children":368},{},[369,374,376,381],{"type":20,"tag":77,"props":370,"children":371},{},[372],{"type":25,"value":373},"Entgleisungen unterbinden",{"type":25,"value":375}," — ein Agent, der vom Skript abweicht, sollte durch einen Bedingungs-\u002FOperatorknoten zurückgeholt werden, nicht durch einen Prompt, der ",{"type":20,"tag":28,"props":377,"children":378},{},[379],{"type":25,"value":380},"„eigentlich genügen sollte“",{"type":25,"value":150},{"type":20,"tag":46,"props":383,"children":385},{"id":384},"das-telefon-ist-ebenfalls-ein-stack",[386],{"type":25,"value":387},"Das Telefon ist ebenfalls ein Stack",{"type":20,"tag":21,"props":389,"children":390},{},[391],{"type":25,"value":392},"Über die KI hinaus erfordert ein Telefonagent:",{"type":20,"tag":130,"props":394,"children":395},{},[396,408,420,431],{"type":20,"tag":134,"props":397,"children":398},{},[399,401,406],{"type":25,"value":400},"Einen ",{"type":20,"tag":77,"props":402,"children":403},{},[404],{"type":25,"value":405},"SIP-Trunk",{"type":25,"value":407}," von einem Carrier (Twilio, Voxbone, OVH, Sewan…).",{"type":20,"tag":134,"props":409,"children":410},{},[411,413,418],{"type":25,"value":412},"Ein ",{"type":20,"tag":77,"props":414,"children":415},{},[416],{"type":25,"value":417},"Media-Gateway",{"type":25,"value":419}," (LiveKit-SIP, FreeSWITCH, Asterisk), das auf der Carrier-Seite SIP und auf der Plattformseite WebRTC spricht.",{"type":20,"tag":134,"props":421,"children":422},{},[423,424,429],{"type":25,"value":400},{"type":20,"tag":77,"props":425,"children":426},{},[427],{"type":25,"value":428},"Transkribierer",{"type":25,"value":430},", der gegen Rauschen, Akzente und überlappende Stimmen robust ist.",{"type":20,"tag":134,"props":432,"children":433},{},[434,435,440],{"type":25,"value":400},{"type":20,"tag":77,"props":436,"children":437},{},[438],{"type":25,"value":439},"Synthesizer",{"type":25,"value":441},", der Eigennamen, Zahlen und Daten korrekt ausspricht.",{"type":20,"tag":21,"props":443,"children":444},{},[445],{"type":25,"value":446},"Keines dieser Elemente ist trivial. Alle interagieren miteinander.",{"type":20,"tag":46,"props":448,"children":450},{"id":449},"was-betool-übernimmt",[451],{"type":25,"value":452},"Was betool übernimmt",{"type":20,"tag":21,"props":454,"children":455},{},[456],{"type":25,"value":457},"Die Spracharchitektur von betool — LiveKit + LiveKit-SIP + dedizierter Worker + LLM-Streaming in die Sprachsynthese — deckt die obigen Anforderungen out of the box ab. Sie behalten die Kontrolle über:",{"type":20,"tag":130,"props":459,"children":460},{},[461,472,491],{"type":20,"tag":134,"props":462,"children":463},{},[464,466,470],{"type":25,"value":465},"Den ",{"type":20,"tag":77,"props":467,"children":468},{},[469],{"type":25,"value":405},{"type":25,"value":471}," (Ihr Carrier, Ihre Nummern).",{"type":20,"tag":134,"props":473,"children":474},{},[475,477,482,484,489],{"type":25,"value":476},"Die ",{"type":20,"tag":77,"props":478,"children":479},{},[480],{"type":25,"value":481},"Modelle",{"type":25,"value":483}," (managed Modelle, BYOK oder private Modelle) und die ",{"type":20,"tag":77,"props":485,"children":486},{},[487],{"type":25,"value":488},"Stimmen",{"type":25,"value":490}," (Transkription mit Deepgram oder faster-whisper; Synthese mit ElevenLabs, Cartesia, OpenAI oder Deepgram Aura).",{"type":20,"tag":134,"props":492,"children":493},{},[494,495,500],{"type":25,"value":476},{"type":20,"tag":77,"props":496,"children":497},{},[498],{"type":25,"value":499},"Parameter",{"type":25,"value":501}," (Empfindlichkeit des Barge-in, Erkennung des Sprecherwechsels, Wartesätze, Weiterleitung an einen Menschen).",{"type":20,"tag":21,"props":503,"children":504},{},[505,507,512],{"type":25,"value":506},"Sie konfigurieren nicht die Echtzeit-Klempnerei — das ist Aufgabe der Plattform. Sie gestalten das ",{"type":20,"tag":77,"props":508,"children":509},{},[510],{"type":25,"value":511},"Gespräch",{"type":25,"value":513},", was die eigentliche geschäftliche Herausforderung ist.",{"title":7,"searchDepth":515,"depth":515,"links":516},2,[517,518,519,520,521,522],{"id":48,"depth":515,"text":51},{"id":91,"depth":515,"text":94},{"id":246,"depth":515,"text":249},{"id":315,"depth":515,"text":318},{"id":384,"depth":515,"text":387},{"id":449,"depth":515,"text":452},"markdown","content:de:blog:2.voix-temps-reel-vs-batch.md","content","de\u002Fblog\u002F2.voix-temps-reel-vs-batch.md","de\u002Fblog\u002F2.voix-temps-reel-vs-batch","md"]