[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-\u002Fit\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":521,"_id":522,"_source":523,"_file":524,"_stem":525,"_extension":526},"\u002Fit\u002Fblog\u002Fvoix-temps-reel-vs-batch","blog",false,"","Agente AI telefonico: voce in tempo reale o batch","Perché un assistente vocale richiede un'architettura radicalmente diversa da un chatbot testuale, e cosa significa per latenza, barge-in e scelta del modello.","Équipe betool","2026-04-28",[13,14,15],"voice","architecture","latency",{"type":17,"children":18,"toc":512},"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,441,446,452,457,500],{"type":20,"tag":21,"props":22,"children":23},"element","p",{},[24,27,33,35],{"type":25,"value":26},"text","Quando un fornitore ti propone un ",{"type":20,"tag":28,"props":29,"children":30},"em",{},[31],{"type":25,"value":32},"\"agente AI telefonico\"",{"type":25,"value":34},", poni una sola domanda: ",{"type":20,"tag":28,"props":36,"children":37},{},[38],{"type":25,"value":39},"\"Qual è la vostra latenza end-to-end tra la fine del parlato dell'utente e l'inizio della risposta?\"",{"type":20,"tag":21,"props":41,"children":42},{},[43],{"type":25,"value":44},"Se la risposta supera gli 1,5 secondi, non è un agente telefonico. È un chatbot con un modulo ASR \u002F TTS incollato davanti.",{"type":20,"tag":46,"props":47,"children":49},"h2",{"id":48},"la-regola-degli-800-ms",[50],{"type":25,"value":51},"La regola degli 800 ms",{"type":20,"tag":21,"props":53,"children":54},{},[55,57,62,64,69],{"type":25,"value":56},"Al telefono, una persona tollera il silenzio dopo la propria domanda. Ma quel silenzio ha una soglia: oltre gli 800 ms, l'interlocutore percepisce l'altro capo come ",{"type":20,"tag":28,"props":58,"children":59},{},[60],{"type":25,"value":61},"\"bloccato\"",{"type":25,"value":63},". A 1.500 ms, chi chiama dice ",{"type":20,"tag":28,"props":65,"children":66},{},[67],{"type":25,"value":68},"\"pronto?\"",{"type":25,"value":70},". A 3.000 ms, riaggancia dando per scontato un problema di linea.",{"type":20,"tag":21,"props":72,"children":73},{},[74,76,82],{"type":25,"value":75},"L'obiettivo per un agente vocale serio è quindi: ",{"type":20,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":25,"value":81},"meno di 800 ms",{"type":25,"value":83}," tra la fine del parlato e il primo byte udibile della risposta.",{"type":20,"tag":21,"props":85,"children":86},{},[87],{"type":25,"value":88},"Scomponiamolo.",{"type":20,"tag":46,"props":90,"children":92},{"id":91},"il-budget-temporale-nel-dettaglio",[93],{"type":25,"value":94},"Il budget temporale nel dettaglio",{"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},"Degli ~800 ms disponibili, ",{"type":20,"tag":77,"props":111,"children":112},{},[113],{"type":25,"value":114},"circa 270 ms sono consumati da ASR + TTS + trasporto",{"type":25,"value":116},". Restano ",{"type":20,"tag":77,"props":118,"children":119},{},[120],{"type":25,"value":121},"530 ms per l'LLM",{"type":25,"value":123}," — inclusi il tempo di prefill, il ragionamento e la generazione del primo token.",{"type":20,"tag":21,"props":125,"children":126},{},[127],{"type":25,"value":128},"Implicazioni:",{"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},"Un grande modello di ragionamento, non-streaming",{"type":25,"value":143},": diversi secondi prima della prima parola udibile. ",{"type":20,"tag":77,"props":145,"children":146},{},[147],{"type":25,"value":148},"Fuori discussione",{"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},"Un modello di fascia alta in streaming",{"type":25,"value":160},": primo token rapido nei giorni buoni, molto meno in quelli cattivi. ",{"type":20,"tag":77,"props":162,"children":163},{},[164],{"type":25,"value":165},"Accettabile ma tirato",{"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},"Un modello veloce in streaming",{"type":25,"value":176}," (gamme « leggere » di Claude, GPT e Gemini): ",{"type":20,"tag":77,"props":178,"children":179},{},[180],{"type":25,"value":181},"Comodo",{"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},"Un piccolo modello open-weight servito sulla tua GPU (vLLM)",{"type":25,"value":192},": ",{"type":20,"tag":77,"props":194,"children":195},{},[196],{"type":25,"value":197},"Eccellente",{"type":25,"value":199}," (e privato).",{"type":20,"tag":21,"props":201,"children":202},{},[203],{"type":25,"value":204},"Misura il TTFT sul tuo traffico reale: varia in base al fornitore, alla regione e all'ora.",{"type":20,"tag":21,"props":206,"children":207},{},[208],{"type":25,"value":209},"Un'architettura vocale seria richiede quindi:",{"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},"Tutto è in streaming",{"type":25,"value":223}," — ASR, LLM, TTS. Nemmeno un anello in modalità batch.",{"type":20,"tag":134,"props":225,"children":226},{},[227,232],{"type":20,"tag":77,"props":228,"children":229},{},[230],{"type":25,"value":231},"Il modello LLM è scelto per il TTFT",{"type":25,"value":233}," (time to first token), non per il punteggio MMLU.",{"type":20,"tag":134,"props":235,"children":236},{},[237,242],{"type":20,"tag":77,"props":238,"children":239},{},[240],{"type":25,"value":241},"Il TTS inizia a parlare al primo token ricevuto",{"type":25,"value":243},", non dopo che la risposta completa è pronta.",{"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},"Su un canale testuale, l'utente aspetta che il bot finisca. Al telefono, ",{"type":20,"tag":77,"props":256,"children":257},{},[258],{"type":25,"value":259},"interrompe",{"type":25,"value":261},". Tre volte su cinque, nelle conversazioni naturali.",{"type":20,"tag":21,"props":263,"children":264},{},[265,267,272],{"type":25,"value":266},"Un agente vocale che non sa gestire di essere interrotto risulta ",{"type":20,"tag":28,"props":268,"children":269},{},[270],{"type":25,"value":271},"\"robotico\"",{"type":25,"value":273}," — continua a parlare mentre l'utente cerca di interromperlo. È intollerabile e segnala immediatamente un bot costruito male.",{"type":20,"tag":21,"props":275,"children":276},{},[277,279,283],{"type":25,"value":278},"Il ",{"type":20,"tag":77,"props":280,"children":281},{},[282],{"type":25,"value":246},{"type":25,"value":284}," tecnico richiede:",{"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},"Il TTS si ferma immediatamente non appena l'ASR rileva un segnale vocale in uscita dall'utente.",{"type":20,"tag":134,"props":294,"children":295},{},[296],{"type":25,"value":297},"L'LLM scarta la completion in corso (senza fare storie).",{"type":20,"tag":134,"props":299,"children":300},{},[301],{"type":25,"value":302},"Il buffer audio in uscita viene svuotato all'istante (altrimenti si sente una mezza sillaba residua).",{"type":20,"tag":134,"props":304,"children":305},{},[306],{"type":25,"value":307},"La cronologia della conversazione annota che la risposta non è stata ascoltata per intero — per evitare di ripeterla inavvertitamente.",{"type":20,"tag":21,"props":309,"children":310},{},[311],{"type":25,"value":312},"È un dettaglio tecnico che cambia tutto nel modo in cui l'interazione viene percepita.",{"type":20,"tag":46,"props":314,"children":316},{"id":315},"gestire-lincertezza",[317],{"type":25,"value":318},"Gestire l'incertezza",{"type":20,"tag":21,"props":320,"children":321},{},[322],{"type":25,"value":323},"Al telefono, l'ASR commette errori regolarmente. Mentre un chatbot testuale riceve sempre il testo esatto digitato dall'utente, l'agente vocale riceve una trascrizione spesso imperfetta.",{"type":20,"tag":21,"props":325,"children":326},{},[327],{"type":25,"value":328},"Strategie che funzionano:",{"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},"Chiedere conferma",{"type":25,"value":341}," sugli elementi ad alto impatto (numero di pratica, importo, cognome insolito). Non in modo sistematico — diventa insopportabile.",{"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},"Non fidarsi ciecamente dell'LLM",{"type":25,"value":351}," quando l'ASR è ambiguo. Se la frase ricevuta è ",{"type":20,"tag":28,"props":353,"children":354},{},[355],{"type":25,"value":356},"\"voglio disdire il mio contratto\"",{"type":25,"value":358}," con un punteggio di confidenza basso, è meglio chiedere ",{"type":20,"tag":28,"props":360,"children":361},{},[362],{"type":25,"value":363},"\"Intendeva disdire il suo contratto?\"",{"type":25,"value":365}," piuttosto che avviare la procedura di disdetta.",{"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},"Interrompere le derive",{"type":25,"value":375}," — un agente che si allontana dal copione va riportato in carreggiata da un nodo condizione \u002F operatore, non da un prompt che ",{"type":20,"tag":28,"props":377,"children":378},{},[379],{"type":25,"value":380},"\"dovrebbe bastare\"",{"type":25,"value":150},{"type":20,"tag":46,"props":383,"children":385},{"id":384},"anche-il-telefono-è-uno-stack",[386],{"type":25,"value":387},"Anche il telefono è uno stack",{"type":20,"tag":21,"props":389,"children":390},{},[391],{"type":25,"value":392},"Oltre all'AI, un agente telefonico richiede:",{"type":20,"tag":130,"props":394,"children":395},{},[396,408,419,430],{"type":20,"tag":134,"props":397,"children":398},{},[399,401,406],{"type":25,"value":400},"Un ",{"type":20,"tag":77,"props":402,"children":403},{},[404],{"type":25,"value":405},"trunk SIP",{"type":25,"value":407}," di un operatore (Twilio, Voxbone, OVH, Sewan…).",{"type":20,"tag":134,"props":409,"children":410},{},[411,412,417],{"type":25,"value":400},{"type":20,"tag":77,"props":413,"children":414},{},[415],{"type":25,"value":416},"media gateway",{"type":25,"value":418}," (LiveKit-SIP, FreeSWITCH, Asterisk) che parla SIP lato operatore e WebRTC lato piattaforma.",{"type":20,"tag":134,"props":420,"children":421},{},[422,423,428],{"type":25,"value":400},{"type":20,"tag":77,"props":424,"children":425},{},[426],{"type":25,"value":427},"trascrittore",{"type":25,"value":429}," robusto a rumore, accenti e voci sovrapposte.",{"type":20,"tag":134,"props":431,"children":432},{},[433,434,439],{"type":25,"value":400},{"type":20,"tag":77,"props":435,"children":436},{},[437],{"type":25,"value":438},"sintetizzatore",{"type":25,"value":440}," che pronuncia correttamente nomi propri, numeri e date.",{"type":20,"tag":21,"props":442,"children":443},{},[444],{"type":25,"value":445},"Nessuno di questi elementi è banale. E tutti interagiscono tra loro.",{"type":20,"tag":46,"props":447,"children":449},{"id":448},"di-cosa-si-occupa-betool",[450],{"type":25,"value":451},"Di cosa si occupa betool",{"type":20,"tag":21,"props":453,"children":454},{},[455],{"type":25,"value":456},"L'architettura vocale di betool — LiveKit + LiveKit-SIP + worker dedicato + LLM in streaming verso la sintesi vocale — copre di serie i requisiti sopra descritti. Tu mantieni il controllo di:",{"type":20,"tag":130,"props":458,"children":459},{},[460,470,489],{"type":20,"tag":134,"props":461,"children":462},{},[463,464,468],{"type":25,"value":278},{"type":20,"tag":77,"props":465,"children":466},{},[467],{"type":25,"value":405},{"type":25,"value":469}," (il tuo operatore, i tuoi numeri).",{"type":20,"tag":134,"props":471,"children":472},{},[473,475,480,482,487],{"type":25,"value":474},"I ",{"type":20,"tag":77,"props":476,"children":477},{},[478],{"type":25,"value":479},"modelli",{"type":25,"value":481}," (modelli gestiti, BYOK o modelli privati) e le ",{"type":20,"tag":77,"props":483,"children":484},{},[485],{"type":25,"value":486},"voci",{"type":25,"value":488}," (trascrizione Deepgram o faster-whisper; sintesi ElevenLabs, Cartesia, OpenAI o Deepgram Aura).",{"type":20,"tag":134,"props":490,"children":491},{},[492,493,498],{"type":25,"value":474},{"type":20,"tag":77,"props":494,"children":495},{},[496],{"type":25,"value":497},"parametri",{"type":25,"value":499}," (sensibilità del barge-in, rilevamento di fine turno, frasi di attesa, trasferimento a un operatore umano).",{"type":20,"tag":21,"props":501,"children":502},{},[503,505,510],{"type":25,"value":504},"Non configuri l'impianto in tempo reale — è compito della piattaforma. Tu progetti la ",{"type":20,"tag":77,"props":506,"children":507},{},[508],{"type":25,"value":509},"conversazione",{"type":25,"value":511},", che è la vera sfida di business.",{"title":7,"searchDepth":513,"depth":513,"links":514},2,[515,516,517,518,519,520],{"id":48,"depth":513,"text":51},{"id":91,"depth":513,"text":94},{"id":246,"depth":513,"text":249},{"id":315,"depth":513,"text":318},{"id":384,"depth":513,"text":387},{"id":448,"depth":513,"text":451},"markdown","content:it:blog:2.voix-temps-reel-vs-batch.md","content","it\u002Fblog\u002F2.voix-temps-reel-vs-batch.md","it\u002Fblog\u002F2.voix-temps-reel-vs-batch","md"]