Aller au contenu principal

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èrevoice_idref_audio
PersistanceVoix sauvegardée dans le compteAucune persistance
RéutilisationIllimitéeÀ chaque requête
LatenceLégèrement plus rapide (voix déjà traitée)Légèrement plus lent (traitement à chaque appel)
GestionCRUD complet (modifier, supprimer)Rien à gérer
Coût réseauJuste le voice_id (quelques octets)Audio complet à chaque requête
ConfidentialitéAudio stocké dans le cloudAudio 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_audio permet 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_audio puis sauvegarder la voix une fois satisfait