Salta al contenuto

Come ottimizzi la latenza per la Conversational AI?

La latenza è ciò che distingue una buona applicazione di Conversational AI da una eccellente

Diagram of a speech processing system showing data flow from user input to output speech, including components like telephone network, ASR, VAD, LLM, TTS, and latency indicators.

Per la maggior parte delle applicazioni, la latenza è una preoccupazione marginale. Tuttavia, per la conversational AI, la latenza è ciò che distingue una buona applicazione da una eccellente.

Per cominciare, l'obiettivo della conversational AI è piuttosto ambizioso: offrire la stessa sensazione, naturalezza e voce di una conversazione umana, superando però l’intelligenza umana. Per riuscirci, un’applicazione deve conversare senza lunghi silenzi. Altrimenti, il realismo viene meno.

La sfida della latenza nella conversational AI è amplificata dalla sua natura a blocchi. La conversational AI è composta da una serie di processi intermedi, tutti all’avanguardia nei rispettivi ambiti. Ognuno di questi processi aggiunge latenza.

Come azienda specializzata in generazione vocale, abbiamo studiato a lungo come ridurre al minimo la latenza nella conversational AI. Oggi vogliamo condividere ciò che abbiamo imparato, sperando che possa essere utile a chiunque voglia sviluppare applicazioni di conversational AI.

Le quattro componenti fondamentali

Ogni applicazione di conversational AI coinvolge almeno quattro passaggi: speech-to-text, turn-taking, elaborazione del testo (cioè LLM) e text-to-speech. Anche se questi passaggi vengono eseguiti in parallelo, ognuno contribuisce comunque alla latenza complessiva.

La latenza nella conversational AI ha caratteristiche uniche. Molti problemi di latenza nei processi possono essere ricondotti a un singolo collo di bottiglia. Ad esempio, quando un sito web fa una richiesta al database, la latenza di rete è quella che incide di più, mentre la latenza della VPC backend è trascurabile. Nella conversational AI, invece, le componenti di latenza non sono così diverse tra loro: sono irregolari, ma il contributo di ciascuna è simile. Quindi, la latenza è la somma delle parti.

Speech to Text

L'“orecchio” del sistema

Il riconoscimento vocale automatico (ASR)—a volte chiamato anche speech-to-text (STT)—è il processo che trasforma l’audio parlato in testo scritto.

La latenza dell’ASR non è il tempo necessario a generare il testo, perché il processo di speech-to-text avviene in background mentre l’utente parla. La latenza è invece il tempo tra la fine del discorso e la fine della generazione del testo.

Flowchart showing user input speech processed by ASR system.

Per questo, intervalli di parlato brevi o lunghi possono avere una latenza ASR simile. La latenza può variare tra le diverse implementazioni di ASR (in alcuni casi non c’è latenza di rete perché il modello è integrato nel browser, come su Chrome/Chromium). Il modello open source standard, Whisper, aggiunge oltre 300 ms di latenza. La nostra implementazione personalizzata aggiunge meno di 100 ms.

Turn-Taking / Interruzione

L'“istinto” del sistema

Turn-taking / Interruzione (TTI) è un processo intermedio che determina quando l’utente ha finito di parlare. Il modello sottostante è chiamato Voice Activity Detector (o VAD).

Il turn-taking segue regole complesse. Una breve esclamazione (es. “eh già”) non dovrebbe far scattare un nuovo turno; altrimenti la conversazione risulterebbe troppo spezzettata. Deve invece valutare quando l’utente cerca davvero l’attenzione del modello e quando ha concluso il proprio pensiero.

Un buon VAD non segnala un nuovo turno ogni volta che rileva silenzio. Tra le parole (e le frasi) c’è silenzio, e il modello deve essere sicuro che l’utente abbia davvero finito di parlare. Per farlo in modo affidabile, deve cercare una soglia di silenzio (o meglio, l’assenza di parlato). Questo processo introduce un ritardo, che contribuisce alla latenza complessiva percepita dall’utente.

Flowchart showing the process of speech recognition and language modeling, with steps including input speech, ASR, VAD, and LLM.

Tecnicamente, se tutte le altre componenti della conversational AI avessero zero latenza, la latenza dovuta al TTI sarebbe positiva. Anche gli umani fanno una breve pausa prima di rispondere. Una macchina che si prende lo stesso tempo rende l’interazione più realistica. Tuttavia, dato che anche le altre componenti introducono latenza, è meglio che quella del TTI sia minima.

Elaborazione del testo

Il “cervello” del sistema

A questo punto, il sistema deve generare una risposta. Oggi questo avviene di solito tramite un Large Language Model (LLM), come GPT-4 o Gemini Flash 1.5.

La scelta del modello linguistico fa una grande differenza. Modelli come Gemini Flash 1.5 sono velocissimi—generano output in meno di 350 ms. Modelli più avanzati, in grado di gestire richieste più complesse—come le varianti di GPT-4 e Claude—possono impiegare tra 700 e 1000 ms.Scegliere il modello giusto è di solito il modo più semplice per ridurre la latenza quando ottimizzi un processo di conversational AI.

Tuttavia, la latenza dell’LLM è il tempo che serve per iniziare a generare i token. Questi token possono essere subito inviati in streaming al processo successivo di text-to-speech . Poiché il text-to-speech è rallentato dal ritmo naturale della voce umana, l’LLM lo supera sempre in velocità—quello che conta davvero è la latenza del primo token (cioè il time to first byte).

Flowchart of speech processing system showing input speech, ASR, VAD, LLM, and TTS components with data flow and latency indicated.

Ci sono altri fattori che incidono sulla latenza di un LLM oltre alla scelta del modello. Tra questi, la lunghezza del prompt e la dimensione della knowledge base. Più sono grandi, maggiore sarà la latenza. In sintesi: più informazioni l’LLM deve considerare, più tempo impiega. Per questo, le aziende devono trovare il giusto equilibrio tra fornire abbastanza contesto e non appesantire troppo il modello.

Text to Speech

La “bocca” del sistema

L’ultima componente della conversational AI è il text-to-speech (TTS). La latenza effettiva del text-to-speech è il tempo che serve per iniziare a parlare dopo aver ricevuto i token dall’elaborazione del testo. Tutto qui—dato che i token successivi vengono generati più velocemente del parlato umano, la latenza del text-to-speech è solo il time to first byte.

Diagram of a speech processing system showing input speech, ASR, VAD, LLM, TTS, and output speech with data flow and latency indicators.

In passato, il text-to-speech era particolarmente lento, poteva impiegare anche 2-3 secondi per generare il parlato. Oggi, modelli all’avanguardia come il nostro motore Turbo generano parlato con appena 300 ms di latenza e il nuovo motore Flash TTS è ancora più veloce. Flash ha un tempo di modello di 75 ms e può raggiungere una latenza audio end-to-end di 135 ms per il time to first byte, il miglior risultato del settore (ci tocca vantarci un po’!).

Altri fattori che incidono

Oltre alle quattro componenti, ci sono altri elementi che contribuiscono alla latenza complessiva della conversational AI.

Latenza di rete

Ci sarà sempre una certa latenza dovuta al trasferimento dei dati da una posizione all’altra. Per alcune applicazioni di conversational AI, i processi di ASR, TTI, LLM e TTS dovrebbero idealmente essere nello stesso luogo, così l’unica fonte di latenza di rete significativa è tra chi parla e l’intero sistema.Questo ci dà un vantaggio sulla latenza perché possiamo risparmiare due chiamate al server grazie al nostro TTS e a una soluzione di trascrizione interna.

Diagram of a speech processing system showing input speech, ASR, VAD, LLM, TTS, and output speech with latency and network latency indicators.

Function Calling

Molte applicazioni di conversational AI servono per richiamare funzioni (cioè interfacciarsi con strumenti e servizi). Ad esempio, potrei chiedere vocalmente all’IA di controllare il meteo. Questo richiede ulteriori chiamate API a livello di elaborazione del testo, che possono aggiungere molta latenza a seconda delle necessità.

Per esempio, se devo ordinare una pizza a voce, potrebbero servire più chiamate API, alcune delle quali con ritardi notevoli (es. l’elaborazione di una carta di credito).

Diagram of a speech processing system showing input speech, ASR, VAD, LLM/function calling, TTS, and output speech with data flow and latency indicated.

Tuttavia, un sistema di conversational AI può ridurre i ritardi delle function call facendo rispondere l’LLM all’utente prima che la funzione sia completata (es. “Controllo subito il meteo per te”). Questo simula una conversazione reale e mantiene l’utente coinvolto.

Flowchart of a speech synthesis system showing user input, system processing, and output speech, with components like ASR, VAD, TTS, and LLM.

Questi pattern asincroni si gestiscono di solito tramite webhooks, evitando richieste troppo lunghe.

Telefonia

Un’altra funzione comune per le piattaforme di conversational AI è permettere all’utente di chiamare tramite telefono (o, in alcuni casi, di effettuare una chiamata per conto dell’utente). La telefonia aggiunge ulteriore latenza—e questa può variare molto in base alla geografia.

Diagram of a speech processing system showing data flow and latency between components.

Di base, la telefonia aggiunge circa 200 ms di latenza se resta nella stessa regione. Per chiamate globali (es. Asia → USA), il tempo di trasmissione può aumentare molto, arrivando anche a 500 ms. Questo succede spesso se gli utenti hanno numeri di telefono fuori dalla regione in cui si trovano—costringendo il traffico a passare per le reti telefoniche del paese di origine.

Un pensiero finale

Speriamo che questa panoramica sulla conversational AI agent ti sia stata utile. In sintesi, le applicazioni dovrebbero puntare a una latenza inferiore al secondo. Questo si ottiene di solito scegliendo l’LLM più adatto al compito. È importante anche mantenere il dialogo con l’utente quando processi più complessi sono in corso, per evitare lunghe pause.

Alla fine, l’obiettivo è creare realismo. L’utente deve sentire la naturalezza di parlare con una persona, ottenendo però i vantaggi di un programma. Ottimizzando ogni sotto-processo, oggi tutto questo è possibile.

Noi di ElevenLabs ottimizziamo ogni parte di un sistema di AI voice agent con i nostri modelli STT e TTS all’avanguardia. Lavorando su ogni fase del processo, riusciamo a ottenere conversazioni fluide. Questa visione d’insieme ci permette di ridurre la latenza—anche solo di 1 ms—a ogni passaggio.

Scopri gli articoli del team ElevenLabs

Crea con l'audio IA della massima qualità