Synthèse vocale avec émotion : comment la diriger

Rene, Kabir Goel 
Synthèse vocale avec émotion : comment la diriger

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 angry ou calm. 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 :

APIComment diriger l’émotionÀ savoir
Cartesia Sonic 3.6Par 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 v3Des 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 SpeechSSML <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 TTSUn 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-ttsUne 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 PollyPas 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.

Guides associés

FAQ

La synthèse vocale peut-elle exprimer des émotions ?

Oui. Les modèles de TTS neuronaux actuels lisent le contexte émotionnel de la phrase et adaptent la hauteur, le rythme et l'accentuation, sans balisage supplémentaire. La plupart des API permettent aussi d'aller plus loin : Sonic de Cartesia accepte une valeur d'émotion, ElevenLabs des balises audio entre crochets, Azure des styles d'élocution en SSML et Gemini TTS un prompt en langage naturel. Les mots restent ce qui compte le plus : une balise qui contredit la phrase perd généralement.

Comment ajouter de l'émotion à la synthèse vocale ?

Commencez par le texte : écrivez la phrase comme la dirait une personne dans cet état, avec une ponctuation naturelle. Choisissez ensuite une voix adaptée, car chaque voix a un tempérament par défaut. Ajoutez seulement alors un contrôle. Avec Cartesia, passez generation_config={"emotion": "calm"} dans la requête, ou insérez <emotion value="calm"/> dans le texte. Écoutez le résultat dans le contexte où il sera diffusé.

Quelles émotions Cartesia Sonic peut-il exprimer ?

Sonic 3.6 accepte 58 valeurs d'émotion, de neutral et calm à sarcastic, apologetic et determined. Six d'entre elles (neutral, calm, angry, content, sad et scared) disposent du plus de données d'entraînement et donnent les résultats les plus fiables. Les contrôles d'émotion sont en bêta, fonctionnent en anglais et réagissent mieux avec les voix marquées Emotive dans la bibliothèque. Sans valeur, Sonic déduit l'émotion du texte.

Peut-on changer d'émotion au milieu d'un flux ?

Oui. Sur l'API WebSocket de Cartesia, chaque morceau de texte envoyé à un contexte peut porter son propre generation_config : une phrase peut commencer neutre et finir en colère. Les balises <emotion> en ligne fonctionnent aussi dans un même texte, mais la documentation de Cartesia recommande un contexte de génération distinct pour chaque émotion quand le changement compte.

Pourquoi ma balise d'émotion ne fonctionne-t-elle pas ?

Le plus souvent parce qu'elle contredit les mots. La documentation de Cartesia donne l'exemple <emotion value="sad"/> I'm so excited!, qui a peu de chances de fonctionner. Autres causes fréquentes : la voix n'est pas expressive, le texte n'est pas en anglais ou la valeur ne figure pas dans la liste prise en charge. Réécrivez la phrase pour que les mots portent l'émotion, puis utilisez la balise pour régler l'intensité.

Existe-t-il une synthèse vocale avec émotion gratuite ?

Le forfait gratuit de Cartesia inclut 20 000 crédits par mois, et le playground propose des réglages d'émotion, de vitesse et de volume : vous pouvez donc essayer sans payer. Un crédit correspond à un caractère de synthèse vocale. L'usage commercial commence avec le forfait Pro, à 5 $ par mois. Consultez les tarifs pour les quotas actuels.