Génération de parole basique
Votre première génération vocale
Maintenant que vous savez créer et gérer des voix, passons à l’essentiel : générer de la parole. L’API Speech de Mistral transforme du texte en audio en quelques lignes de Python. Cette leçon couvre la génération basique avec une voix sauvegardée.
L’endpoint /v1/audio/speech
La génération de parole utilise la méthode client.audio.speech.complete(). Elle prend en entrée du texte et un identifiant de voix, et retourne de l’audio encodé en base64.
Code Python complet
Voici le code pour générer un fichier audio à partir de texte :
import base64
from pathlib import Path
from mistralai.client import Mistral
client = Mistral(api_key="votre-cle-api")
# Générer de la parole avec une voix sauvegardée
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="Bonjour et bienvenue dans cette formation sur Voxtral TTS.",
voice_id="votre-voice-id",
response_format="mp3",
)
# Décoder le base64 et sauvegarder en fichier
audio_bytes = base64.b64decode(response.audio_data)
Path("sortie.mp3").write_bytes(audio_bytes)
print(f"Audio généré : {len(audio_bytes)} octets")
Décortiquer les paramètres
model
Le modèle à utiliser pour la génération. Pour l’instant, le seul modèle disponible est voxtral-mini-tts-2603. Spécifiez-le toujours explicitement pour garantir la compatibilité si de nouveaux modèles sont ajoutés.
input
Le texte à convertir en parole. Quelques règles :
- Longueur maximale : 300 mots pour une qualité optimale
- Pas d’emojis : le modèle ne sait pas les interpréter
- Pas de formatage complexe : évitez le Markdown, le HTML ou les caractères spéciaux
- Épeler les chiffres : écrivez « vingt-trois » plutôt que « 23 »
- Épeler les abréviations : écrivez « Société à Responsabilité Limitée » plutôt que « SARL »
voice_id
L’identifiant de la voix à utiliser. Vous l’obtenez soit :
- En créant une voix via
client.audio.voices.create()(voir leçon 5) - En listant vos voix via
client.audio.voices.list() - En utilisant l’ID d’une voix professionnelle Mistral
response_format
Le format de l’audio généré. Les options sont mp3, wav, pcm, flac et opus. Nous détaillerons chaque format dans la leçon 12.
Exemple : générer un audiobook
Voici un exemple plus élaboré qui génère un chapitre d’audiobook en découpant le texte en segments :
import base64
from pathlib import Path
from mistralai.client import Mistral
client = Mistral(api_key="votre-cle-api")
voice_id = "votre-voice-id"
# Texte découpé en paragraphes (max 300 mots chacun)
paragraphes = [
"Premier paragraphe du chapitre. Le narrateur introduit le contexte.",
"Deuxième paragraphe. L'action commence à se développer.",
"Troisième paragraphe. Le suspense monte progressivement.",
]
audio_complet = b""
for i, texte in enumerate(paragraphes):
print(f"Génération du segment {i + 1}/{len(paragraphes)}...")
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input=texte,
voice_id=voice_id,
response_format="wav",
)
audio_complet += base64.b64decode(response.audio_data)
Path("chapitre-01.wav").write_bytes(audio_complet)
print("Chapitre audio généré avec succès !")
Limites de la concaténation
La concaténation brute de fichiers WAV fonctionne car le format est non compressé. Pour les formats compressés (MP3, Opus), vous devrez utiliser une bibliothèque comme pydub pour fusionner correctement les segments.
Gestion des erreurs
En production, gérez toujours les erreurs possibles :
try:
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="Texte à convertir en parole.",
voice_id=voice_id,
response_format="mp3",
)
audio_bytes = base64.b64decode(response.audio_data)
Path("sortie.mp3").write_bytes(audio_bytes)
except Exception as e:
print(f"Erreur lors de la génération : {e}")
Les erreurs courantes incluent :
voice_idinvalide ou supprimé- Texte trop long (> 300 mots)
- Quota API dépassé
- Format de sortie non supporté
Points clés à retenir
- La génération utilise
client.audio.speech.complete()avec le modèlevoxtral-mini-tts-2603 - Le texte doit respecter la limite de 300 mots et éviter les emojis et le formatage
- Épelez les chiffres et les abréviations pour une prononciation correcte
- L’audio retourné est en base64 — décodez-le avant de sauvegarder
- Pour les textes longs, découpez en segments et concaténez les résultats