Aller au contenu principal
Leçon 11 sur 14 · Voxtral TTS — Synthèse Vocale et Clonage

Contrôle du texte et prononciation

Leçon 11 sur 14 Mis à jour le 3 novembre 2026 Développeur
Sur cette page
  1. Maîtriser ce que Voxtral prononce
  2. Écrire les chiffres comme on les dit
  3. Sigles et abréviations
  4. Ponctuer pour respirer
  5. Découper les textes longs
  6. Ce qu’il faut retirer du texte
  7. Les textes multilingues
  8. Diriger la voix avec Voxtral TTS 3
  9. Points clés à retenir

Cours mis à jour le 3 novembre 2026 pour Voxtral TTS 3, d’après le guide Migrate from Voxtral 2 et les pages Text to Speech de Mistral : voxtral-mini-tts-2603, déprécié le 31 octobre 2026 et retiré le 30 avril 2027, est remplacé dans les exemples par voxtral-mini-tts-3-0. Les voix prédéfinies de Voxtral 2 (gb_jane_neutral…) restent acceptées ; Voxtral 3 ajoute les balises [emotion=…] et [pace=…] dans le texte, le réglage expressiveness, la prononciation personnalisée (phoneme_hints) et 35 langues. Mistral conseille de remesurer la latence après la migration. Sources : Migrate from Voxtral 2 · Speech generation.

Maîtriser ce que Voxtral prononce

Voxtral produit une parole naturelle à partir de texte brut, et pour un récit ou un dialogue ordinaire cela suffit largement. Les difficultés commencent avec ce qui n’est pas de la prose : un numéro de téléphone, un acronyme, une date, un pourcentage. Le texte d’entrée devient alors votre seul instrument de contrôle — il n’y a pas de balisage à ajouter, c’est la manière d’écrire qui dicte le rendu vocal. Cette leçon rassemble les techniques qui font la différence entre un message professionnel et une lecture approximative.

Écrire les chiffres comme on les dit

Le modèle interprète les chiffres de manière variable, et le résultat est difficile à prédire à l’avance. La règle est donc simple : dans un texte destiné à la synthèse, on écrit les nombres en toutes lettres, exactement comme un présentateur radio les lirait.

ÉcrivezNe pas écrirePourquoi
« deux mille vingt-six »« 2026 »Le modèle pourrait dire « vingt-vingt-six »
« zéro un, quarante-deux, trente-sept »« 01 42 37 »Numéro de téléphone mal prononcé
« quinze virgule cinq pour cent »« 15,5% »Symbole % non interprété
« trois heures quarante-cinq »« 3h45 »Format abrégé ambigu

Remarquez le traitement du numéro de téléphone : les virgules ne sont pas décoratives, elles imposent les groupes de deux chiffres et le rythme haché qu’un humain adopte naturellement pour dicter un numéro.

Sigles et abréviations

Les abréviations posent le même problème, avec une nuance : selon le cas, vous voulez qu’elles soient développées ou épelées. Un sigle laissé brut sera parfois prononcé comme un mot, ce qui donne des résultats gênants dans un message client.

# Mauvais : le modèle pourrait prononcer "sarl" comme un mot
input_mauvais = "Notre SARL est basée à Paris."

# Bon : prononciation explicite
input_bon = "Notre Société à Responsabilité Limitée est basée à Paris."

# Alternative pour les sigles lettre par lettre
input_sigle = "Notre S.A.R.L. est basée à Paris."

La troisième forme est l’astuce à retenir : en insérant un point entre chaque lettre, vous obtenez une lecture lettre par lettre. C’est ce qu’il faut pour un code de réservation, un immatriculation ou un identifiant que l’auditeur doit noter.

Ponctuer pour respirer

Faute de balisage dédié, c’est la ponctuation qui règle le silence. La virgule vaut une pause courte, de l’ordre de 200 ms ; le point une pause moyenne, environ 500 ms ; les points de suspension une respiration longue, proche de 800 ms ; et le tiret long installe une pause dramatique, celle qu’on place avant une révélation.

# Texte avec pauses contrôlées
texte = (
    "Mesdames et messieurs... "
    "bienvenue à cette conférence. "
    "Aujourd'hui, nous allons parler — "
    "d'un sujet qui va changer votre façon de travailler."
)

Le débit, lui, vient d’abord de l’échantillon de référence : une voix source qui parle vite donnera une voix synthétique qui parle vite. Vous pouvez néanmoins l’infléchir par le texte. Ajouter de la ponctuation ralentit le débit et aère le propos ; supprimer des virgules et raccourcir les phrases l’accélère. Pour appuyer un mot, écrivez-le en majuscules — « C’est ABSOLUMENT essentiel » — et vous obtiendrez l’insistance sans avoir à retoucher l’audio.

Découper les textes longs

La documentation de Voxtral 2 conseillait de rester sous 300 mots par requête pour obtenir les meilleurs résultats. Celle de Voxtral TTS 3 ne fixe plus de seuil, mais signale qu’une balise d’émotion placée devant une longue phrase peut écourter l’audio à une virgule. Découper reste donc la bonne pratique.

La parade consiste à découper en segments de 200 à 300 mots, mais jamais au milieu d’une phrase : une coupure hors frontière naturelle s’entend immédiatement. La fonction suivante n’accepte de fermer un segment qu’après un mot terminé par un point.

def decouper_texte(texte, max_mots=250):
    """Découpe un texte en segments de max_mots mots."""
    mots = texte.split()
    segments = []
    segment_courant = []

    for mot in mots:
        segment_courant.append(mot)
        # Découper aux phrases (après un point)
        if len(segment_courant) >= max_mots and mot.endswith("."):
            segments.append(" ".join(segment_courant))
            segment_courant = []

    if segment_courant:
        segments.append(" ".join(segment_courant))

    return segments

# Utilisation
texte_long = "..."  # Votre texte complet
segments = decouper_texte(texte_long)

for i, segment in enumerate(segments):
    print(f"Segment {i + 1} : {len(segment.split())} mots")
    response = client.audio.speech.complete(
        model="voxtral-mini-tts-3-0",
        input=segment,
        voice_id=voice_id,
        response_format="wav",
    )
    # Sauvegarder chaque segment

Ce qu’il faut retirer du texte

Certains caractères perturbent franchement la génération. Les emojis ne sont pas supportés : le modèle les ignore ou les interprète au hasard. Les balises HTML et le Markdown sont prononcés comme du texte, ce qui transforme un contenu recopié depuis un CMS en charabia. Les URL sont épelées caractère par caractère, slash et point compris. Quant aux symboles de programmation — accolades, crochets, flèches —, ils sont mal interprétés. D’où la reformulation en langage naturel :

# Mauvais
input_mauvais = "Visitez https://mistral.ai pour en savoir plus 🎉"

# Bon
input_bon = "Visitez le site mistral point ai pour en savoir plus."

Prenez l’habitude de faire passer tout contenu issu d’une base ou d’un site par une fonction de nettoyage avant l’appel API. C’est moins coûteux que de réécouter des heures d’audio pour repérer un emoji oublié.

Les textes multilingues

Un cas se règle tout seul : le mélange de langues. Voxtral détecte les changements et adapte la prononciation sans que vous ayez à annoter quoi que ce soit.

texte_mixte = (
    "Bienvenue dans notre présentation. "
    "As we say in English, the sky is the limit. "
    "Willkommen bei unserer Vorstellung."
)

La qualité est optimale tant que les langues employées font partie des 35 langues de Voxtral TTS 3. Au-delà, la prononciation reste plausible mais l’accent dérive, ce qu’un auditeur natif repère aussitôt.

Diriger la voix avec Voxtral TTS 3

Voxtral TTS 3 ajoute trois leviers de contrôle, qui s’écrivent dans la requête elle-même.

Les balises d’émotion et de rythme se placent dans input, entre crochets, devant le texte qu’elles concernent : [emotion=calm], [emotion=happy], [pace=slow] ou [pace=fast]. Elles ne sont pas prononcées, valent jusqu’à la balise suivante, et se combinent ([emotion=calm][pace=slow]). Trente-quatre émotions sont documentées, d’amused à wistful. Avec Voxtral 2, l’émotion passait par le choix d’une variante de voix (gb_jane_sad) ; ces variantes restent acceptées.

expressiveness, de 1.0 à 5.0, règle la force avec laquelle la parole suit ce que vous demandez : plus haut, l’émotion ressort davantage, au prix d’une ressemblance moindre avec la voix. Partez de la valeur par défaut, montez si l’émotion ne passe pas, descendez si la diction paraît forcée.

phoneme_hints fixe la prononciation d’un mot — un nom de marque, un acronyme — par une liste de phonèmes, pris dans une liste fermée de 50 (un phonème inconnu renvoie une erreur 422).

import base64
from pathlib import Path

reponse = client.audio.speech.complete(
    model="voxtral-mini-tts-3-0",
    input="[emotion=calm][pace=slow]I like tomato soup.",
    voice_id="gb_jane_neutral",
    phoneme_hints={"tomato": ["t", "ə", "m", "ɑ", "t", "oʊ"]},
    response_format="wav",
)
Path("soupe.wav").write_bytes(base64.b64decode(reponse.audio_data))

Deux précautions, tirées de la documentation : une balise placée devant une longue phrase peut écourter l’audio à une virgule — gardez les phrases balisées courtes —, et les instructions de style en langage naturel (instruction) ne sont pas disponibles au lancement de Voxtral TTS 3.

Points clés à retenir

  • Épelez les chiffres et les abréviations en toutes lettres pour une prononciation correcte
  • Utilisez la ponctuation pour contrôler les pauses (virgule, point, points de suspension)
  • Découpez les textes longs en segments qui finissent sur une phrase complète
  • Évitez les emojis, le HTML, les URLs et le code dans le texte d’entrée
  • Voxtral TTS 3 gère les textes multilingues dans ses 35 langues ; la langue est portée par la voix
  • Balises [emotion=…] et [pace=…], expressiveness et phoneme_hints dirigent la voix avec Voxtral TTS 3