Torna agli insights
AI engineeringVoice agentNota tecnica

Nota tecnica: un assistente vocale AI che richiama in pochi secondi

Anatomia tecnica di un agente vocale dimostrativo: l'architettura a quattro stadi, il budget di latenza e le sfide difficili come il barge-in.

Giuseppe Pelligra7 min di lettura
Nota tecnica: un assistente vocale AI che richiama in pochi secondi

Un assistente vocale che funziona bene sembra banale a chi lo ascolta: chiama, parla, capisce, risponde. È proprio quando sembra banale che l'ingegneria sotto ha fatto il suo lavoro. Questa è una nota tecnica su un agente vocale dimostrativo, costruito per esplorare un problema concreto: trasformare un evento applicativo in una chiamata in uscita nel giro di pochi secondi, con una conversazione che non sembri un risponditore automatico.

Il problema

La premessa tecnica è semplice da formulare e difficile da risolvere: si può ridurre a pochi secondi il tempo fra un evento applicativo e una conversazione telefonica automatica, mantenendo una qualità di interazione accettabile?

"Utile" è la parola che alza l'asticella. Un messaggio registrato si costruisce in un pomeriggio. Un agente che ascolta, capisce una risposta non prevista, gestisce un'interruzione e sa quando è il suo turno di parlare è un problema di sistemi distribuiti in tempo reale, travestito da chiacchierata.

L'architettura a quattro stadi

Il sistema è una catena di quattro stadi, ognuno con il suo costo in millisecondi.

1. Telefonia. Uno strato di telefonia programmabile gestisce la chiamata in uscita e trasporta l'audio nei due sensi. È il binario su cui corre tutto: introduce una latenza di rete che non si può eliminare, solo assorbire.

2. Riconoscimento vocale (speech-to-text). L'audio della persona viene trascritto in testo. Qui la scelta decisiva è lo streaming: la trascrizione deve arrivare in modo incrementale, parola dopo parola, mentre la persona parla ancora. Aspettare la fine della frase per iniziare a trascrivere aggiunge un ritardo che si sente.

3. Modello linguistico (LLM). Il testo trascritto, insieme allo storico della conversazione e alle istruzioni di sistema, arriva al modello che decide cosa rispondere. Anche qui la risposta va prodotta in streaming: i primi token devono partire subito, senza attendere la frase completa.

4. Sintesi vocale (text-to-speech). Il testo della risposta torna audio. La sintesi inizia appena arrivano le prime parole dal modello, non quando la frase è finita.

Il principio che tiene insieme tutto è uno: gli stadi si sovrappongono. Mentre la persona pronuncia la coda della frase, la trascrizione è già partita; mentre il modello genera la fine della risposta, la sintesi sta già parlando. Una catena rigida, in cui ogni stadio aspetta il precedente, somma le latenze e produce silenzi imbarazzanti. Una catena a pipeline le maschera. Sopra i quattro stadi c'è un orchestratore che gestisce lo stato della conversazione e decide quando avviare, interrompere e chiudere ogni passaggio.

Le sfide difficili

L'architettura, descritta così, sembra lineare. I problemi veri arrivano dopo.

Il budget di latenza

La metrica che governa tutto non è la qualità del modello: è il tempo totale che passa da quando la persona smette di parlare a quando sente la prima parola della risposta. In una conversazione umana quella pausa è di qualche centinaio di millisecondi. Oltre, l'interlocutore percepisce esitazione; molto oltre, pensa che la linea sia caduta.

Il budget complessivo va ripartito fra i quattro stadi, e ogni stadio va trattato come una voce di un bilancio. Il riconoscimento in streaming riduce la voce dello speech-to-text. La generazione in streaming, unita a istruzioni che spingono verso risposte brevi, riduce la voce dell'LLM. La sintesi incrementale riduce quella del text-to-speech. La latenza di rete della telefonia, invece, non si comprime: si può solo evitare di sprecarla. La regola che ne è emersa: ogni stadio deve iniziare a produrre output prima che il precedente abbia finito.

Il barge-in

Le persone interrompono. È un segno di conversazione sana, non un'anomalia. Se l'agente continua a parlare sopra la persona, l'effetto è quello di un risponditore sordo. Gestire il barge-in significa rilevare che la persona ha ripreso a parlare mentre l'agente è ancora in turno, fermare subito la riproduzione, scartare la risposta in corso e ripartire dall'ascolto.

La difficoltà non è rilevare la voce: è distinguere un'interruzione reale da un "sì", "certo", "ok" detto per accompagnare l'ascolto. Tagliare la propria risposta a ogni piccolo segnale rende l'agente nervoso; ignorarli lo rende invadente. La soglia fra le due cose è uno dei punti più delicati da calibrare.

La gestione del silenzio e la fine del turno

Il problema speculare: quando la persona ha finito di parlare? Un silenzio breve può essere una pausa di pensiero in mezzo a una frase. Un silenzio più lungo è la fine del turno. Se l'agente risponde troppo presto, taglia la parola; se aspetta troppo, lascia un vuoto.

Non esiste una soglia di silenzio valida sempre. Una pausa dopo "allora, ci pensavo, e..." è diversa da una pausa dopo una frase conclusa. I segnali utili sono più d'uno: la durata del silenzio, ma anche la compiutezza grammaticale di quanto trascritto e l'intonazione finale. Combinarli dà una stima del fine turno molto più affidabile del solo cronometro.

Le frasi brevi e l'audio reale

Gran parte delle conversazioni telefoniche è fatta di frammenti: "sì", "no", "non ora", "richiamatemi dopo". Sono i casi in cui il riconoscimento vocale sbaglia di più, perché ha pochissimo contesto. E l'audio telefonico è di qualità modesta: banda stretta, rumore di fondo, compressione. Un sistema collaudato in studio, con un microfono buono, incontra la realtà solo quando esce sulla linea. Va progettato per gestire la trascrizione incerta, non per pretendere che sia perfetta.

Lezioni e limiti

Alcune conclusioni si possono generalizzare a qualunque agente vocale.

La latenza è una funzionalità. Un modello brillante con una catena lenta produce un'esperienza peggiore di un modello modesto con una catena reattiva. Il tempo di risposta non è una metrica tecnica di contorno: è la qualità percepita.

Lo streaming non è opzionale. Ogni stadio che lavora "a frase intera" rompe la pipeline e somma ritardo. Streaming end-to-end o conversazione lenta: non c'è una via di mezzo.

La conversazione vive nei bordi. L'intelligenza dell'agente non si vede quando tutto fila liscio, ma su interruzioni, esitazioni, sovrapposizioni e silenzi ambigui. È lì che si decide se sembra naturale.

Il prompt non è l'ingegneria. Decidere cosa dire è una piccola parte del lavoro. Decidere quando dirlo, quando tacere e quando fermarsi è il sistema di controllo, e sta tutto nell'orchestratore.

I limiti sono altrettanto chiari. Un agente del genere è solido sul percorso per cui è stato progettato e fragile fuori. Gestisce bene una conversazione breve e mirata; va in difficoltà su richieste lunghe, ambigue o emotivamente cariche. Non sostituisce una persona: estende un primo contatto fino a quando una persona può prenderne il posto.

Una nota etica

Un sistema che telefona con una voce dal suono naturale solleva una questione che non è tecnica. La scelta progettuale adottata, e che considero non negoziabile, è la trasparenza: l'agente dichiara fin dall'inizio di essere un assistente automatico. Non imita una persona, non lascia credere di esserlo.

È anche una posizione coerente con come va trattata in generale l'AI applicata, lo stesso principio della sicurezza dell'AI in azienda. L'articolo 50 dell'AI Act va nella stessa direzione: quando un sistema di AI è progettato per interagire direttamente con persone fisiche, queste devono essere informate che stanno interagendo con un sistema di AI, salvo che sia ovvio dal contesto.

Fonti principali

La fiducia, in questi sistemi, si costruisce dicendo cosa sono, non nascondendolo. Un agente vocale che dichiara la propria natura e si rivela comunque utile è un risultato migliore di uno che inganna per qualche secondo in più di attenzione.