Sintesi vocale con emozione: come dirigerla

Rene, Kabir Goel 
Sintesi vocale con emozione: come dirigerla

La sintesi vocale con emozione è una voce sintetica che suona contenta, preoccupata, dispiaciuta o infastidita quando il momento lo richiede, invece di leggere tutto con lo stesso tono educato e piatto. I modelli attuali fanno già molto da soli: leggono la frase e decidono come deve suonare. I controlli che aggiungi servono a sfumare, non a salvare una frase scritta senza emozione.

Quest’ordine riassume la guida. Se crei agenti vocali o app, gran parte della qualità emotiva che senti viene dalle parole che il tuo sistema scrive e dalla voce che scegli. Tag e parametri regolano il resto. Di seguito: come funziona ogni approccio, come lo espongono le principali API, codice funzionante per Sonic di Cartesia e come capire se il risultato è buono.

Da dove viene l’emozione nel TTS

Una frase non definisce un’unica interpretazione corretta. “I can’t believe it” può essere gioia, rabbia, dolore o sarcasmo. Il nostro team di ricerca descrive la sintesi vocale come un problema uno-a-molti: il modello deve scegliere dove fare pause, quali parole accentuare, a che velocità parlare e quale sentimento trasmettere, spesso partendo da un testo che non lo dice.

Un modello può fare questa scelta in quattro modi:

  • La deduce dal testo. Il modello legge le parole e la punteggiatura intorno alla frase e sceglie un’interpretazione. È il comportamento predefinito di tutti i modelli attuali, e quello che conta di più.
  • La nomini tu. Un parametro o un tag dice angry o calm. Il modello si sposta in quella direzione, entro limiti ragionevoli.
  • Scegli uno stile. Alcune voci hanno stili di eloquio con un nome, come assistenza clienti o telegiornale, ognuno registrato o addestrato come un’interpretazione a sé.
  • La descrivi. Un prompt in linguaggio naturale dice “dillo con calore, come per rassicurare un amico”. Il modello interpreta la descrizione.

Tutte le API mescolano questi approcci. Cambia quale considerano il controllo principale.

Come le principali API ricevono la direzione emotiva

Secondo la documentazione di ciascun fornitore, consultata il 12 ottobre 2026:

APICome dirigi l’emozioneDa sapere
Cartesia Sonic 3.6Per impostazione predefinita, la deduce dal testo. generation_config.emotion per richiesta, o un tag <emotion value="..."/> in linea. [laughter] per ridere.58 valori, 6 principali. I tag sono in beta e solo in inglese; in tutte le lingue Sonic legge comunque l’emozione dal testo. Funziona quando il tag concorda con le parole. L’emozione può cambiare a metà stream.
ElevenLabs v4 e v3Tag audio tra parentesi quadre nel testo, come [sarcastic], [whispers] o [laughs].I tag sono istruzioni libere, non un elenco fisso. v4 e v3 non supportano i tag SSML di pausa.
Azure SpeechSSML <mstts:express-as style="..."> con uno styledegree da 0,01 a 2. Le voci HD accettano anche marcatori di stile come [whispering].Gli stili delle voci neurali esistono solo per alcune voci. Verifica la voce prima di progettare attorno a uno stile.
Gemini TTSUn campo prompt in linguaggio naturale accanto al testo, più tag in linea come [laughs] e [sigh].I modelli TTS preview 2.5 e 3.1 escono dall’API Gemini non prima del 17 novembre 2026.
OpenAI gpt-4o-mini-ttsUna stringa instructions, come “Speak in a cheerful and positive tone.”Deprecato. OpenAI ritira tutti i modelli del suo endpoint vocale il 6 gennaio 2027.
Amazon PollyNessun tag di emozione. Uno stile da conduttore di notiziario su alcune voci neurali.L’interpretazione dipende soprattutto dalla voce e dal testo.

Octave di Hume, che accettava istruzioni di recitazione in linguaggio naturale, era in questa tabella fino a poco tempo fa. Hume chiude le sue API TTS ed EVI il 13 novembre 2026. Se stai migrando, la nostra guida alle alternative a Hume spiega cosa salvare per primo.

In produzione conta un aspetto. I controlli di tipo prompt (Gemini e il modello OpenAI in uscita) sono testo libero: non c’è un vocabolario fisso da testare, e per riprodurre un’interpretazione bisogna conservare la formulazione esatta dell’istruzione e ripetere i test a ogni modifica. Un valore con un nome (l’elenco di emozioni di Sonic, gli stili di Azure) è un’impostazione che puoi versionare, testare e annullare, ed è quello che serve quando 10.000 chiamate al giorno passano dallo stesso agente.

Scrivi prima l’emozione nelle parole

È il passaggio che molti team saltano, e quello che funziona meglio.

Sonic 3.6 adatta ritmo e intonazione al contesto emotivo del testo, senza tag. In test alla cieca testa a testa in inglese americano, gli ascoltatori hanno preferito Sonic 3.6 a Eleven v3 nel 92% dei casi, grazie a un’intonazione migliore e a un’emozione guidata dal contesto. In altre parole, il modello ascolta già le tue parole. Dagli parole che valga la pena ascoltare.

In un agente vocale, questo significa che l’emozione sta nel prompt dell’LLM. Se vuoi un tono empatico, l’LLM deve scrivere un testo empatico. Confronta due risposte a un cliente il cui ordine è in ritardo:

  • “Il tuo ordine è in ritardo. La nuova data di consegna è giovedì.”
  • “Mi dispiace, so che ci contavi. Ora arriverà giovedì.”

Nessun tag farà suonare dispiaciuta la prima. La seconda suona dispiaciuta senza alcun tag. La nostra guida alla scelta dei modelli di IA vocale lo dice dall’altro lato: Sonic si esprime in linea con il testo e ignora un’impostazione che lo contraddice.

Alcune abitudini di scrittura che aiutano qualsiasi modello:

  • Mantieni la punteggiatura normale. Un punto interrogativo, una virgola prima di “ma” o un punto esclamativo danno indicazioni sull’interpretazione. Togliere la punteggiatura per “ripulire” l’output dell’LLM appiattisce la voce.
  • Lascia esitare l’agente dove esiterebbe una persona. Sonic interpreta le esitazioni nel testo, come “ehm” o “hmm”, come un ritmo naturale di riflessione. Usale con parsimonia, prima di un numero appena consultato o dopo una domanda difficile, non in ogni frase.
  • Non raccontare l’emozione. “Disse lei, arrabbiata” viene letto ad alta voce. Metti la rabbia in quello che dice.

Scegli una voce con il temperamento giusto

Le voci hanno un umore predefinito. Una voce pensata come un aggiustatutto allegro non suonerà come un confidente di fiducia, qualunque tag tu usi. Abbina prima la voce al lavoro, poi rifinisci.

Su Cartesia, la libreria delle voci contrassegna le voci espressive con il tag Emotive, e i controlli di emozione rispondono meglio con quelle. La documentazione indica Leo, Jace, Kyle, Gavin, Maya, Tessa, Dana e Marian come le voci con la gamma emotiva più ampia. Se cloni una voce, il clone mantiene l’interpretazione della registrazione di partenza, quindi registra il campione con l’umore che vuoi dare all’agente.

Controllare l’emozione con Sonic

Quando parole e voce sono a posto, ecco come spingere oltre l’interpretazione. Questi esempi usano l’SDK Python di Cartesia versione 4.2.0 e sonic-3.6. Imposta prima CARTESIA_API_KEY nel tuo ambiente e installa cartesia[websockets] per l’esempio in streaming. Il nostro tutorial di sintesi vocale in Python spiega la configurazione.

Un’emozione per tutta la richiesta

import os

from cartesia import Cartesia

with Cartesia(api_key=os.environ["CARTESIA_API_KEY"]) as client:
    response = client.tts.generate(
        model_id="sonic-3.6",
        transcript="I'm sorry, I know you were counting on this. It's now arriving Thursday.",
        voice="6ccbfb76-1fc6-48f7-b71d-91ac6298247b",  # Tessa, an Emotive voice
        language="en",
        output_format={"container": "wav", "encoding": "pcm_s16le", "sample_rate": 44100},
        generation_config={"emotion": "sympathetic", "speed": 0.95},
    )
    response.write_to_file("apology.wav")

generation_config vale solo per quella richiesta; non esiste un’impostazione per tutto l’account. speed va da 0,6 a 1,5 e volume da 0,5 a 2,0, e Sonic tratta tutti e tre come indicazioni, non come moltiplicatori rigidi, così il parlato resta naturale. Per un cambiamento ben udibile, fai una regolazione più ampia: 0,7 invece di 0,9.

Cambiare emozione all’interno di un testo

transcript = (
    '<emotion value="calm"/> I can help with that. '
    '<emotion value="excited"/> Good news, your refund went through this morning!'
)

I tag in linea sono comodi per una battuta scritta con una svolta netta. I cambi a metà testo sono la parte più sperimentale della funzione, quindi, quando il cambio conta, invia ogni parte nel proprio contesto di generazione.

Cambiare emozione durante lo streaming

Sull’API WebSocket, ogni porzione di testo inviata può avere le proprie impostazioni. È lo schema di un agente che trasforma in voce i token dell’LLM man mano che arrivano:

with client.tts.websocket_connect() as ws:
    ctx = ws.context(
        model_id="sonic-3.6",
        voice="6ccbfb76-1fc6-48f7-b71d-91ac6298247b",
        output_format={"container": "raw", "encoding": "pcm_s16le", "sample_rate": 44100},
        language="en",
    )
    ctx.push("Well, maybe if you just ")
    ctx.push("loosen up a little!", generation_config={"emotion": "angry"})
    ctx.no_more_inputs()
    for response in ctx.receive():
        if response.type == "chunk" and response.audio:
            ...  # play or buffer the audio

L’esempio viene dall’esempio di emozione via WebSocket della nostra documentazione. Per una risata, scrivi [laughter] nel testo. Per una pausa esatta, usa <break time="1s"/>, anche se una virgola o un punto di solito danno una pausa migliore.

Quale valore scegliere

Parti dalle sei emozioni principali: neutral, calm, angry, content, sad e scared. Sono quelle con più dati di addestramento. Le altre 52 (sympathetic, apologetic, curious, skeptical, determined, sarcastic e così via) sono nell’elenco completo e vale la pena provarle quando un valore principale ci va vicino ma non centra il punto. Molti agenti di assistenza se la cavano con tre: calm come predefinito, sympathetic per le cattive notizie e content quando il problema è risolto.

Come capire se l’emozione è giusta

L’emozione è la parte della qualità TTS che nessuna metrica coglie. Un controllo basato sulla trascrizione, come il word error rate, giudica perfetta una lettura furiosa di “Grazie per l’attesa”. Bisogna ascoltare, tenendo presente la situazione.

  • Spiega lo scenario a chi ascolta. “Un agente di assistenza dice a un cliente che il suo volo è cancellato” porta a un giudizio utile. “Valuta questa clip” porta a un giudizio sulla voce.
  • Testa conversazioni complete, non frasi isolate. Un’emozione adatta a un turno può sembrare strana tre turni dopo, e una voce che cambia umore durante una chiamata è un difetto che si sente solo nel contesto.
  • Aspettati che gli ascoltatori non siano d’accordo. Ad alcuni piace un agente espressivo; altri trovano la stessa interpretazione esagerata e stancante. Riporta questa divisione invece di farne la media. La nostra guida al mean opinion score spiega perché un solo numero la nasconde.
  • Ascolta attraverso il vero percorso di streaming. Un modello che sceglie l’emozione sbagliata nel primo blocco audio a volte non si riprende. In un render offline non lo senti.

Dove si colloca Cartesia

Sonic è pensato per il parlato in tempo reale: agenti vocali, telefonate e app che rispondono a voce. Per impostazione predefinita l’emozione viene dal testo, i controlli funzionano durante lo streaming e l’impostazione di emozione è un valore con un nome che puoi testare e versionare come il resto dell’agente. Se stai costruendo un agente telefonico e non vuoi collegare da solo riconoscimento vocale, LLM e TTS, Managed Agents gestisce l’intero ciclo con Sonic come voce.

Se produci un audiolibro o una voce fuori campo per un video e vuoi rifinire l’interpretazione riga per riga su una timeline, un editor da studio è più adatto di un’API. La nostra guida alle alternative a ElevenLabs ne elenca diversi.

Per sentire la differenza, apri il playground, scegli una voce Emotive e leggi la stessa frase con calm e poi con sympathetic. Poi riscrivi la frase in modo che suoni dispiaciuta senza alcun tag. Il secondo esperimento di solito è il più istruttivo.

Guide correlate

Domande frequenti

La sintesi vocale può esprimere emozioni?

Sì. I modelli TTS neurali attuali leggono il contesto emotivo della frase e adattano tono, ritmo ed enfasi, senza markup aggiuntivo. La maggior parte delle API permette anche di spingere l'interpretazione: Sonic di Cartesia accetta un valore di emozione, ElevenLabs tag audio tra parentesi quadre, Azure stili di eloquio in SSML e Gemini TTS un prompt in linguaggio naturale. Le parole contano comunque di più: un tag che contraddice la frase di solito perde.

Come si aggiunge emozione alla sintesi vocale?

Parti dal testo: scrivi la frase come la direbbe una persona in quello stato d'animo, con una punteggiatura naturale. Poi scegli una voce adatta, perché ogni voce ha un temperamento predefinito. Solo dopo aggiungi un controllo. Con Cartesia, passa generation_config={"emotion": "calm"} nella richiesta oppure inserisci <emotion value="calm"/> nel testo. Ascolta il risultato nel contesto in cui verrà riprodotto.

Quali emozioni può esprimere Cartesia Sonic?

Sonic 3.6 accetta 58 valori di emozione, da neutral e calm a sarcastic, apologetic e determined. Sei di questi (neutral, calm, angry, content, sad e scared) hanno più dati di addestramento e danno i risultati più affidabili. I controlli di emozione sono in beta, funzionano in inglese e rispondono meglio con le voci contrassegnate come Emotive nella libreria. Senza un valore, Sonic deduce l'emozione dal testo.

Si può cambiare emozione a metà di uno stream?

Sì. Sull'API WebSocket di Cartesia, ogni porzione di testo inviata a un contesto può avere il proprio generation_config, quindi una frase può iniziare neutra e finire arrabbiata. Anche i tag <emotion> in linea funzionano all'interno di un unico testo, ma la documentazione di Cartesia consiglia un contesto di generazione separato per ogni emozione quando il cambio conta.

Perché il mio tag di emozione non funziona?

Di solito perché il tag contraddice le parole. La documentazione di Cartesia cita come esempio <emotion value="sad"/> I'm so excited!, che difficilmente funzionerà. Altre cause comuni: la voce non è espressiva, il testo non è in inglese o il valore non è nell'elenco supportato. Riscrivi la frase in modo che siano le parole a portare l'emozione, poi usa il tag per regolare l'intensità.

Esiste una sintesi vocale con emozione gratuita?

Il piano gratuito di Cartesia include 20.000 crediti al mese, e il playground ha controlli di emozione, velocità e volume, quindi puoi provare l'interpretazione emotiva senza pagare. Un credito copre un carattere di sintesi vocale. L'uso commerciale parte dal piano Pro, a 5 $ al mese. Consulta i prezzi per le quote attuali.