Caso di studio sull'agente vocale basato sull'intelligenza artificiale

Vocale

Un operatore che risponde alla linea telefonica di un'azienda, trova la risposta nei documenti della stessa azienda e apre il ticket di assistenza prima ancora che il chiamante abbia riattaccato — utilizzando i numeri già in loro possesso e, se lo desiderano, sul proprio hardware.

  • Settore industrialeInbound support and telephony
  • UtentiSupport teams on a Yeastar or SIP PBX
  • CoperturaEvery call, around the clock
  • ServiziProduct Design, Development, AI
Vocale: piattaforma di agenti vocali basati sull'intelligenza artificiale

Panoramica

Vocale integra un agente basato sull’intelligenza artificiale nella linea telefonica già in uso presso un’azienda. Il cliente compone il numero che ha sempre chiamato; l’agente risponde al primo squillo, parla la sua lingua, fornisce risposte basate sui manuali e sulle politiche aziendali e, quando la risposta è in realtà «qualcuno deve occuparsene», apre un ticket di assistenza con i dettagli già raccolti.

Il sistema telefonico rimane invariato. L’azienda mantiene il proprio provider, i propri numeri e il proprio piano tariffario; una piattaforma Yeastar o SIP compatibile viene collegata una sola volta tramite un modulo, e il trunk e l’instradamento delle chiamate vengono configurati a livello di piattaforma. A questo punto, il lavoro consiste nel caricare i documenti che l’operatore deve conoscere, scrivere le poche frasi che ne definiscono lo stile e testarlo in un browser finché non suona corretto — il tutto prima che gli venga inoltrata una sola chiamata reale.

La scelta che determina il successo o il fallimento del modello economico è dove vengono eseguiti i modelli; per questo la piattaforma offre due motori all’interno di un unico prodotto. Nel livello ospitato, il riconoscimento vocale, il ragionamento e la voce provengono da un’API di terze parti e ogni minuto viene conteggiato. Nel livello self-hosted tutti e tre i servizi girano su una GPU sotto il controllo diretto dell’azienda, nessun file audio o documento esce dalla sede e il costo di una chiamata è pari al consumo di energia elettrica. Il passaggio da un livello all’altro avviene tramite configurazione; il comportamento dell’agente rimane invariato in entrambi i casi.

  • Next.js 15
  • TypeScript
  • Tailwind CSS
  • Supabase
  • PostgreSQL
  • LiveKit
  • WebRTC
  • SIP telephony
  • Python
  • vLLM + Qwen3-8B
  • Faster-Whisper
  • Coqui XTTS-v2
  • Pinecone

Video del progetto

vocaleCollega il cavo della linea telefonica. Si sente il segnale di linea libera.

Una guida passo passo a Vocale: dal collegamento di un sistema telefonico e dal caricamento di un manuale fino a una chiamata in tempo reale che risponde alla domanda e archivia quella a cui non è riuscita a rispondere.

Funzionalità chiave

  • Risponde al telefono

    Si integra con il sistema Yeastar o SIP già in uso nell'azienda, in modo che le chiamate raggiungano l'operatore ai numeri che i clienti hanno sempre composto.

  • Basato sui vostri documenti

    I manuali, le linee guida e i listini prezzi vengono caricati, indicizzati e consultati nel momento stesso in cui viene posta la domanda; in questo modo, la risposta proviene dal materiale dell’azienda stessa piuttosto che dalla memoria del modello.

  • Apre i ticket durante la chiamata

    Quando un chiamante ha bisogno di parlare con qualcuno, l'operatore raccoglie le informazioni relative all'oggetto della richiesta, ai dati di contatto e al grado di urgenza mentre il chiamante è ancora in linea, quindi crea direttamente il ticket.

  • Sa chi sta chiamando

    Il database clienti esistente è collegato in modalità di sola lettura, quindi un numero in entrata viene associato a un account prima ancora che l'operatore dica una parola.

  • Due motori, un unico prodotto

    Lo stesso agente può essere eseguito su un’API in modalità hosted oppure interamente su una GPU privata. L’azienda sceglie in base al costo e alla destinazione consentita dei propri dati.

La sfida

Il telefono squilla alle sette di sera. La risposta è in un PDF sull'unità condivisa. Non c'è nessuno a leggerla.

L'efficacia di una linea di assistenza dipende esclusivamente dalle persone che rispondono, e le domande che arrivano sono quasi sempre le stesse: quali sono gli orari di apertura, questo servizio è coperto, come si fa a resettarlo? Le risposte sono già scritte — in un manuale, in una politica aziendale, in un listino prezzi — ma non si trovano in un posto accessibile a chi chiama né a un operatore mentre qualcuno è in attesa. Mettere un'intelligenza artificiale in linea risolve la metà del problema della disponibilità. Noleggiarne una al minuto sostituisce silenziosamente il problema con uno di costi, perché meglio funziona, più viene utilizzata e più aumenta il costo mensile.

  • Chiamate al di fuori dell'orario di ufficio

    La sera, nei fine settimana e nei giorni festivi le chiamate vengono deviate alla segreteria telefonica — e ciò che finisce lì sono per lo più richieste di routine che una persona avrebbe risolto in un minuto.

  • Risposte a cui nessuno può arrivare

    Le informazioni sono contenute nei documenti, ma non in un formato che possa essere consultato mentre un chiamante è in attesa in linea.

  • Tariffa al minuto

    Le piattaforme di IA vocale gestite prevedono una tariffa al minuto di chiamata, quindi il costo aumenta con l’aumentare dell’utilizzo: un incentivo sbagliato per attivare una linea di assistenza.

La nostra soluzione

Un agente, sulla linea che hai già.

Vocale si colloca tra il sistema telefonico di un’azienda e il suo patrimonio di conoscenze. Il PBX si collega tramite un modulo e l’instradamento viene configurato a monte. I documenti vengono caricati e indicizzati. Il comportamento dell’agente viene impostato in linguaggio semplice anziché in codice, e l’intero processo può essere simulato in un browser prima che arrivi una chiamata reale. Una volta in funzione, tutte le sue azioni vengono registrate — la trascrizione, le ricerche effettuate, i ticket aperti — in modo che il team possa valutare se sta svolgendo correttamente il proprio lavoro prima di affidargli ulteriori incarichi.

Si collega al centralino, non lo aggira

Yeastar e i sistemi SIP compatibili si registrano tramite un modulo, e l'azienda mantiene il proprio provider, i propri numeri e il proprio piano tariffario.

Recupero prima che parli

Una domanda che richiede un dato di fatto avvia una ricerca tra i documenti indicizzati, e la risposta viene elaborata sulla base dei risultati ottenuti — anche l’assenza di risultati costituisce una risposta che l’agente è autorizzato a fornire.

In hosting o self-hosted, il comportamento è lo stesso

Il parlato, il linguaggio e la voce vengono eseguiti tramite un’API di terze parti o su una GPU privata. Il passaggio da una soluzione all’altra richiede solo una configurazione, non una ricompilazione.

Come funziona

Provalo prima che lo faccia un cliente

A sandbox that runs the whole pipeline in the browser. Pick a caller, start the call, and the transcript arrives live beside it as the agent hears and answers. Every session it has ever handled — browser or phone, inbound or outbound — is one click away in the rail on the left.

La console dell'agente vocale Vocale: un'ampia schermata in modalità standby con, accanto, un pannello di trascrizione in tempo reale, un selettore di chiamanti e, sotto, un pulsante "Avvia chiamata", oltre a una barra laterale con la cronologia delle chiamate recenti in cui i numeri sono stati oscurati.

I documenti a cui fa riferimento

Files are dropped straight onto the page, then parsed, split and indexed. Each row reports how many pages went in and how many searchable pieces came out, so it is obvious at a glance when a document is ready to be quoted on a call and when it is still being worked on.

La pagina della knowledge base: un pannello di caricamento “drag-and-drop” situato sopra una tabella di documenti indicizzati che mostra il nome, lo stato, il numero di pagine e il numero di blocchi.

Ciò a cui non è riuscita a rispondere diventa un ticket

The agent collects the subject, the customer and the urgency while the caller is still on the line and files the ticket itself, transcript attached. Support opens the queue to a list of real problems in the caller's own words instead of a column of missed calls.

La pagina dei ticket: una tabella dei ticket di assistenza con numero, oggetto, cliente, stato, priorità e data di creazione; la maggior parte di essi viene aperta automaticamente durante le chiamate.

Sa chi sta chiamando

An existing customer database connects read-only, with a mapping step for whichever columns hold the name and the number. From then on an inbound call is matched against it before the agent speaks — and the records stay where they are. Vocale reads them; it does not become the place they live.

La pagina dei clienti mostra un database esterno sincronizzato contenente 14.039 record, con i controlli “Modifica mappature” e “Modifica connessione”. Le colonne “Nome” e “Telefono” sono oscurate.

Numeri assegnati dalla console

Telephony is the one part a business should not have to get right alone, so provisioning is an operator job rather than a self-service form. Each number is registered, pointed at an organisation and switched on from here — which doubles as the fastest way to see which tenants are actually taking calls.

La schermata dei numeri SIP dell'amministratore: contatori relativi al numero totale, ai numeri attivi e a quelli inattivi, oltre a una tabella che associa ciascun numero a un nome, a un'organizzazione e a un tenant con un pulsante per attivare/disattivare lo stato.

Quanto costa ogni minuto

Spend is metered the way the models bill it — caller speech, agent speech and replayed history, broken out per model and per organisation. It is what turns the choice between a hosted API and a private GPU into a decision with a number attached rather than an argument.

Il pannello di controllo dei costi amministrativi e di utilizzo: costo totale, costo medio per chiamata, numero di chiamate e minuti e costo al minuto, un grafico della spesa giornaliera, una ripartizione per tipologia di costo e per modello, nonché le tariffe in vigore.

Impatto e risultati

Rispondono al primo squillo e i prezzi sono quelli del software.

Ciò che conta in una linea di assistenza non è la precisione in astratto, ma se la chiamata ha ricevuto risposta e se la risposta era corretta. Vocale risponde a tutte le chiamate, a qualsiasi ora, nella lingua del chiamante, e lascia una trascrizione in modo che la seconda domanda possa essere chiarita. Il costo indicato di seguito corrisponde a quanto addebitato dalla piattaforma sul piano in hosting per un mese di chiamate effettive; il piano self-hosted trasferisce tale costo sull’hardware già pagato dall’azienda, e la tariffa al minuto smette del tutto di variare.

Copertura delle chiamate, senza turni prestabiliti né liste d'attesa
Costo a minuto per chiamata, piano in hosting
Lingue in cui è possibile impostare l'agente
Modalità di esecuzione: API ospitata o GPU privata

Architettura

Cosa può fare un'azienda dalla dashboard

Diagramma di flusso. Un utente con un PBX Yeastar o simile effettua l’accesso e raggiunge una dashboard principale, che si suddivide in sette aree: Configurazione della telefonia e del PBX; Knowledge Base con funzioni di caricamento, visualizzazione ed eliminazione dei documenti; Configurazione degli agenti vocali con impostazione dei messaggi di sistema e interfaccia di chat e vocale di prova; Operazioni in tempo reale e monitoraggio con cronologia delle conversazioni e attività degli agenti; Integrazione del sistema di ticketing con funzioni di connessione, creazione, visualizzazione, modifica ed eliminazione; Gestione delle informazioni sui clienti con connessione al database clienti e creazione di nuovi clienti; e Gestione dell’account con modifica del profilo, download dei dati ed eliminazione dell’account.
Sette aree accessibili con un unico login. La telefonia e la gestione delle informazioni vengono configurate una volta sola; le operazioni, la gestione dei ticket e i dati dei clienti sono le attività quotidiane.

Anatomia di un singolo turno di parola

Diagramma di sequenza di un turno di conversazione. L'audio WebRTC dell'utente raggiunge un server LiveKit, che inoltra i frame audio all'agente. Il rilevamento dell’attività vocale identifica il parlato, il buffer viene inviato a Faster-Whisper che restituisce una trascrizione, il turno dell’utente viene salvato su PostgreSQL, il contesto e la cronologia della chat vengono inviati al modello linguistico Qwen3-8B gestito da vLLM che restituisce i token in streaming, il testo viene normalizzato e aggregato in frasi prima che XTTS-v2 lo converta in frame audio, il turno dell’assistente viene salvato e l’audio ritorna all’utente tramite WebRTC.
Input vocale, output vocale, in un unico passaggio — con entrambe le parti trascritte in tempo reale. Nel piano self-hosted, ogni modulo all’interno dell’agente è un modello che gira sulla GPU dell’azienda stessa.

Cosa c'era da risolvere

Essere interrotti a metà frase

Solution: I chiamanti interrompono la risposta non appena l’hanno compresa, e un operatore che continua a parlare sembra confuso. Il rilevamento dell’attività vocale interrompe l’audio in uscita non appena il chiamante parla, quindi trunca la trascrizione dell’operatore limitandola a ciò che è stato effettivamente udito — in questo modo la conversazione prosegue sulla base della chiamata vissuta dal chiamante, anziché su quella che il sistema aveva pianificato.

Silenzio mentre riflette

Solution: La ricerca nei documenti richiede un tempo tale da sembrare una chiamata interrotta. L’operatore inserisce una breve pausa naturale dopo mezzo secondo e la interrompe se la ricerca restituisce il risultato per prima, il che concede il tempo necessario al recupero dei dati senza che si crei alcun momento di silenzio imbarazzante.

Testo che non viene letto ad alta voce

Solution: Ciò che è scritto per lo schermo non è scritto per la voce: importi in valuta, date espresse in cifre, acronimi. Un livello di normalizzazione riscrive importi, date, orari e abbreviazioni nella loro forma parlata, a seconda della lingua, prima ancora che raggiungano il modello vocale.

Una GPU, diverse conversazioni

Solution: Una sessione vocale in tempo reale mantiene i propri modelli nella memoria video, quindi la capacità è limitata dalla VRAM piuttosto che dalla potenza di calcolo pura. Le sessioni vengono assegnate per scheda e il carico di lavoro viene distribuito esplicitamente tra le schede: se si lascia il pooling predefinito, le attività relative al parlato e al linguaggio finiscono sulla stessa GPU e si ostacolano a vicenda.

Domande

No. Vocale si collega al sistema telefonico che già utilizzi — Yeastar e piattaforme SIP compatibili — e le chiamate continuano ad arrivare sui numeri che i tuoi clienti già possiedono. La connessione viene configurata una sola volta dalla dashboard, dopodiché vengono configurati il trunk e l'instradamento.

Si perdono le chiamate dopo le cinque?

Mettiamo un operatore in linea con te.