La synthèse vocale avec émotion, c’est une voix de synthèse qui sonne ravie, inquiète, désolée ou agacée quand le moment l’exige, au lieu de tout lire sur le même ton poli et plat. Les modèles actuels en font déjà beaucoup d’eux-mêmes : ils lisent la phrase et décident comment elle doit sonner. Les réglages que vous ajoutez servent à nuancer, pas à sauver une phrase écrite sans émotion.
Cet ordre résume tout le guide. Si vous créez des agents vocaux ou des applications, l’essentiel de la qualité émotionnelle que vous entendez vient des mots que votre système écrit et de la voix que vous choisissez. Les balises et les paramètres règlent le reste. Voici comment fonctionne chaque approche, comment les principales API l’exposent, du code fonctionnel pour Sonic de Cartesia, et comment savoir si le résultat est bon.
D’où vient l’émotion en TTS
Une phrase ne définit pas une seule interprétation correcte. « I can’t believe it » peut être de la joie, de la fureur, du chagrin ou du sarcasme. Notre équipe de recherche décrit la synthèse vocale comme un problème un-à-plusieurs : le modèle doit choisir où faire des pauses, quels mots accentuer, à quelle vitesse parler et quel sentiment porter, souvent à partir d’un texte qui ne le dit pas.
Un modèle peut faire ce choix de quatre façons :
- Il la déduit du texte. Le modèle lit les mots et la ponctuation autour de la phrase et choisit une interprétation. C’est le comportement par défaut de tous les modèles actuels, et celui qui compte le plus.
- Vous la nommez. Un paramètre ou une balise indique
angryoucalm. Le modèle penche dans ce sens, dans des limites raisonnables. - Vous choisissez un style. Certaines voix proposent des styles d’élocution nommés, par exemple service client ou journal télévisé, chacun enregistré ou entraîné comme une interprétation à part.
- Vous la décrivez. Un prompt en langage naturel dit « dis-le chaleureusement, comme pour rassurer un ami ». Le modèle interprète la description.
Toutes les API combinent ces approches. Ce qui change, c’est celle qu’elles traitent comme contrôle principal.
Comment les principales API reçoivent la direction émotionnelle
D’après la documentation de chaque fournisseur, consultée le 12 octobre 2026 :
| API | Comment diriger l’émotion | À savoir |
|---|---|---|
| Cartesia Sonic 3.6 | Par défaut, déduite du texte. generation_config.emotion par requête, ou une balise <emotion value="..."/> en ligne. [laughter] pour rire. | 58 valeurs, dont 6 principales. Les balises sont en bêta et en anglais uniquement ; dans toutes les langues, Sonic lit toujours l’émotion dans le texte. Fonctionne quand la balise s’accorde avec les mots. L’émotion peut changer en cours de flux. |
| ElevenLabs v4 et v3 | Des balises audio entre crochets dans le texte, comme [sarcastic], [whispers] ou [laughs]. | Les balises sont des instructions libres, pas une liste fixe. v4 et v3 ne prennent pas en charge les balises SSML de pause. |
| Azure Speech | SSML <mstts:express-as style="..."> avec un styledegree de 0,01 à 2. Les voix HD acceptent aussi des marqueurs de style comme [whispering]. | Les styles des voix neuronales n’existent que pour une partie des voix. Vérifiez la voix avant de concevoir autour d’un style. |
| Gemini TTS | Un champ prompt en langage naturel à côté du texte, plus des balises en ligne comme [laughs] et [sigh]. | Les modèles TTS preview 2.5 et 3.1 quittent l’API Gemini au plus tôt le 17 novembre 2026. |
| OpenAI gpt-4o-mini-tts | Une chaîne instructions, comme « Speak in a cheerful and positive tone. » | Obsolète. OpenAI retire tous les modèles de son endpoint vocal le 6 janvier 2027. |
| Amazon Polly | Pas de balises d’émotion. Un style présentateur de journal sur certaines voix neuronales. | L’interprétation dépend surtout de la voix et du texte. |
Octave, de Hume, qui acceptait des instructions de jeu en langage naturel, figurait dans ce tableau jusqu’à récemment. Hume ferme ses API TTS et EVI le 13 novembre 2026. Si vous migrez, notre guide des alternatives à Hume indique ce qu’il faut sauvegarder d’abord.
Un point compte en production. Les contrôles de type prompt (Gemini, et le modèle OpenAI qui s’en va) sont du texte libre : il n’y a pas de vocabulaire fixe à tester, et pour reproduire une interprétation il faut conserver la formulation exacte de l’instruction et retester à chaque modification. Une valeur nommée (la liste d’émotions de Sonic, les styles d’Azure) est un réglage que vous pouvez versionner, tester et annuler, ce qu’il vous faut quand 10 000 appels par jour passent par le même agent.
Écrivez d’abord l’émotion dans les mots
C’est l’étape que la plupart des équipes sautent, et celle qui marche le mieux.
Sonic 3.6 adapte son rythme et son intonation au contexte émotionnel du texte, sans balises. Lors de tests à l’aveugle en face-à-face en anglais américain, les auditeurs ont préféré Sonic 3.6 à Eleven v3 dans 92 % des cas, grâce à une meilleure intonation et à une émotion guidée par le contexte. Autrement dit, le modèle écoute déjà vos mots. Donnez-lui des mots qui valent la peine d’être écoutés.
Pour un agent vocal, cela signifie que l’émotion se trouve dans le prompt du LLM. Si vous voulez un ton empathique, le LLM doit écrire un texte empathique. Comparez deux réponses à un client dont la commande est en retard :
- « Votre commande est retardée. La nouvelle date de livraison est jeudi. »
- « Je suis désolé, je sais que vous comptiez dessus. Elle arrivera jeudi. »
Aucune balise ne fera paraître la première désolée. La seconde l’est sans aucune balise. Notre guide pour choisir des modèles d’IA vocale le dit dans l’autre sens : Sonic s’exprime en accord avec le texte et ignore un réglage qui le contredit.
Quelques habitudes d’écriture qui aident n’importe quel modèle :
- Gardez une ponctuation normale. Un point d’interrogation, une virgule avant « mais » ou un point d’exclamation donnent des indications sur l’interprétation. Supprimer la ponctuation pour « nettoyer » la sortie du LLM aplatit la voix.
- Laissez l’agent hésiter là où une personne hésiterait. Sonic interprète les hésitations du texte, comme « euh » ou « hmm », comme un rythme naturel de réflexion. Utilisez-les avec parcimonie, avant un chiffre consulté ou après une question difficile, pas dans chaque phrase.
- Ne racontez pas l’émotion. « Dit-elle avec colère » sera lu à voix haute. Mettez la colère dans ce qu’elle dit.
Choisissez une voix au bon tempérament
Les voix ont une humeur par défaut. Une voix conçue comme un dépanneur enjoué ne sonnera pas comme un confident de confiance, quelle que soit la balise. Adaptez d’abord la voix au travail, puis affinez.
Chez Cartesia, la bibliothèque de voix marque les voix expressives avec la balise Emotive, et les contrôles d’émotion réagissent mieux avec elles. La documentation cite Leo, Jace, Kyle, Gavin, Maya, Tessa, Dana et Marian comme les voix à la plus grande palette émotionnelle. Si vous clonez une voix, le clone reprend l’interprétation de l’enregistrement source : enregistrez donc l’échantillon dans l’humeur que vous voulez donner à l’agent.
Contrôler l’émotion avec Sonic
Une fois les mots et la voix en place, voici comment pousser l’interprétation plus loin. Ces exemples utilisent le SDK Python de Cartesia en version 4.2.0 et sonic-3.6. Définissez d’abord CARTESIA_API_KEY dans votre environnement et installez cartesia[websockets] pour l’exemple en flux. Notre tutoriel de synthèse vocale en Python explique la configuration.
Une émotion pour toute la requête
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 ne s’applique qu’à cette requête ; il n’existe pas de réglage pour tout le compte. speed va de 0,6 à 1,5 et volume de 0,5 à 2,0, et Sonic traite les trois comme des indications et non comme des multiplicateurs stricts, pour que la voix reste naturelle. Pour un changement nettement audible, faites un ajustement plus marqué : 0,7 plutôt que 0,9.
Changer d’émotion dans un texte
transcript = (
'<emotion value="calm"/> I can help with that. '
'<emotion value="excited"/> Good news, your refund went through this morning!'
)
Les balises en ligne sont pratiques pour une réplique écrite à l’avance avec un tournant net. Les changements en milieu de texte sont la partie la plus expérimentale de la fonction : quand le changement compte, envoyez chaque partie dans son propre contexte de génération.
Changer d’émotion pendant le flux
Sur l’API WebSocket, chaque morceau de texte envoyé peut porter ses propres réglages. C’est le schéma d’un agent qui convertit en voix les tokens du LLM au fur et à mesure :
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
Cet exemple vient de l’exemple d’émotion par WebSocket de notre documentation. Pour un rire, mettez [laughter] dans le texte. Pour une pause exacte, utilisez <break time="1s"/>, même si une virgule ou un point donne souvent une meilleure pause.
Quelle valeur choisir
Commencez par les six émotions principales : neutral, calm, angry, content, sad et scared. Ce sont elles qui ont le plus de données d’entraînement. Les 52 autres (sympathetic, apologetic, curious, skeptical, determined, sarcastic et le reste) figurent dans la liste complète et valent la peine d’être testées quand une valeur principale est proche sans être juste. Beaucoup d’agents de support s’en sortent avec trois : calm par défaut, sympathetic pour les mauvaises nouvelles et content une fois le problème réglé.
Comment savoir si l’émotion est juste
L’émotion est la partie de la qualité TTS qu’aucune métrique ne capte. Un contrôle fondé sur la transcription, comme le taux d’erreur sur les mots, note comme parfaite une lecture furieuse de « Merci de votre patience ». Il faut écouter, en gardant la situation en tête.
- Expliquez le scénario à l’auditeur. « Un agent de support annonce à un client que son vol est annulé » donne un jugement utile. « Notez ce clip » donne un jugement sur la voix.
- Testez des conversations complètes, pas des phrases isolées. Une émotion qui convient à un tour de parole peut sembler étrange trois tours plus tard, et une voix dont l’humeur dérive au fil d’un appel est un défaut qu’on n’entend qu’en contexte.
- Attendez-vous à des désaccords. Certains aiment un agent expressif ; d’autres trouvent la même interprétation surjouée et fatigante. Rapportez ce partage au lieu de le noyer dans une moyenne. Notre guide du mean opinion score explique pourquoi un seul chiffre le masque.
- Écoutez par le vrai chemin de streaming. Un modèle qui choisit la mauvaise émotion dès le premier morceau audio ne se rattrape pas toujours. On ne l’entend pas dans un rendu hors ligne.
La place de Cartesia
Sonic est conçu pour la parole en temps réel : agents vocaux, appels téléphoniques et applications qui répondent à voix haute. Par défaut, l’émotion vient du texte, les réglages fonctionnent pendant le streaming, et le réglage d’émotion est une valeur nommée que vous pouvez tester et versionner comme le reste de votre agent. Si vous construisez un agent téléphonique sans vouloir assembler vous-même la reconnaissance vocale, un LLM et la TTS, Managed Agents gère toute la boucle avec Sonic comme voix.
Si vous produisez un livre audio ou une voix off vidéo et voulez retoucher l’interprétation ligne par ligne sur une timeline, un éditeur de studio convient mieux qu’une API. Notre guide des alternatives à ElevenLabs en présente plusieurs.
Pour entendre la différence, ouvrez le playground, choisissez une voix Emotive et lisez la même phrase avec calm, puis avec sympathetic. Réécrivez ensuite la phrase pour qu’elle sonne désolée sans aucune balise. La seconde expérience est souvent la plus instructive.