Clonage vocal à la volée
Cloner sans sauvegarder
Dans la leçon précédente, vous avez appris à générer de la parole avec une voix sauvegardée (créée via l’API Voices). Mais Voxtral offre une alternative puissante : le clonage à la volée (on-the-fly). Cette méthode permet de reproduire une voix directement dans la requête de génération, sans créer de voix permanente.
Le paramètre ref_audio
Au lieu de passer un voice_id, vous fournissez un audio de référence directement dans l’appel de génération via le paramètre ref_audio :
import base64
from pathlib import Path
from mistralai.client import Mistral
client = Mistral(api_key="votre-cle-api")
# Encoder l'audio de référence
ref_audio_b64 = base64.b64encode(
Path("reference.mp3").read_bytes()
).decode()
# Générer avec clonage à la volée
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="Cette parole va ressembler à la voix de référence.",
ref_audio=ref_audio_b64,
response_format="wav",
)
audio_bytes = base64.b64decode(response.audio_data)
Path("sortie-clonee.wav").write_bytes(audio_bytes)
print("Audio généré avec clonage à la volée !")
La différence clé : aucune voix n’est créée dans votre compte. L’audio de référence est utilisé pour cette requête uniquement, puis oublié.
Quand utiliser le clonage à la volée ?
Le clonage à la volée est idéal dans ces situations :
Tests et prototypage
Vous expérimentez avec différents échantillons audio et ne souhaitez pas polluer votre liste de voix avec des dizaines d’essais :
# Tester rapidement plusieurs échantillons
echantillons = ["sample1.mp3", "sample2.mp3", "sample3.mp3"]
for fichier in echantillons:
ref_b64 = base64.b64encode(Path(fichier).read_bytes()).decode()
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="Ceci est un test de qualité vocale.",
ref_audio=ref_b64,
response_format="mp3",
)
sortie = f"test-{Path(fichier).stem}.mp3"
Path(sortie).write_bytes(base64.b64decode(response.audio_data))
print(f"Généré : {sortie}")
Utilisations ponctuelles
Vous avez besoin de cloner une voix pour un usage unique (un message personnalisé, une démo) et ne prévoyez pas de la réutiliser.
Confidentialité renforcée
L’audio de référence n’est pas stocké côté serveur. C’est important si vous traitez des voix sensibles et que vous ne souhaitez pas qu’elles persistent dans le cloud.
voice_id vs ref_audio : comparaison
| Critère | voice_id | ref_audio |
|---|---|---|
| Persistance | Voix sauvegardée dans le compte | Aucune persistance |
| Réutilisation | Illimitée | À chaque requête |
| Latence | Légèrement plus rapide (voix déjà traitée) | Légèrement plus lent (traitement à chaque appel) |
| Gestion | CRUD complet (modifier, supprimer) | Rien à gérer |
| Coût réseau | Juste le voice_id (quelques octets) | Audio complet à chaque requête |
| Confidentialité | Audio stocké dans le cloud | Audio non stocké |
Bonnes pratiques
Si vous utilisez la même voix régulièrement
Créez une voix sauvegardée avec client.audio.voices.create(). Vous économiserez de la bande passante et gagnerez en latence.
Si vous testez ou utilisez une voix ponctuellement
Utilisez ref_audio pour éviter de créer des voix que vous devrez nettoyer ensuite.
Combiner les deux approches
Rien ne vous empêche de tester avec ref_audio, puis de sauvegarder la voix quand vous êtes satisfait :
# Phase 1 : test rapide avec ref_audio
ref_b64 = base64.b64encode(Path("ma-voix.mp3").read_bytes()).decode()
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="Test de qualité.",
ref_audio=ref_b64,
response_format="mp3",
)
# Écouter le résultat...
# Phase 2 : satisfait ? Sauvegarder la voix
voice = client.audio.voices.create(
name="ma-voix-validee",
sample_audio=ref_b64,
sample_filename="ma-voix.mp3",
languages=["fr"],
gender="male",
)
print(f"Voix sauvegardée : {voice.id}")
Points clés à retenir
- Le paramètre
ref_audiopermet de cloner une voix sans la sauvegarder - L’audio de référence est encodé en base64 et envoyé directement dans la requête
- Le clonage à la volée est idéal pour les tests, les usages ponctuels et la confidentialité
- Pour une utilisation régulière, préférez une voix sauvegardée (moins de latence, moins de bande passante)
- Vous pouvez tester avec
ref_audiopuis sauvegarder la voix une fois satisfait