Guide de démarrage rapide Fish Audio S2 Pro pour le clonage vocal et la synthèse vocale multilingue

Guide de démarrage rapide Fish Audio S2 Pro pour le clonage vocal et la synthèse vocale multilingue

Fish Audio S2 Pro est disponible sur Novita AI en tant qu’API de synthèse vocale (TTS) hébergée, sans temps de démarrage à froid. Ce guide de démarrage rapide couvre le parcours développeur : obtenir votre clé API, confirmer l’endpoint, envoyer votre première requête TTS avec une voix clonée, et comprendre les paramètres importants pour le clonage vocal et le contrôle des émotions. S2 Pro repose sur une architecture Double-Autorégressive entraînée sur un vaste corpus multilingue — la fonctionnalité qui le distingue du TTS générique est que chaque voix clonée fonctionne dans toutes les langues prises en charge sans réentraînement.

Quand utiliser ce guide de démarrage rapide

Utilisez ce guide si vous devez :

  • Synthétiser de la parole à partir de texte dans un large éventail de langues prises en charge en utilisant une voix clonée personnalisée.
  • Cloner une voix à partir d’un échantillon audio de 10 à 30 secondes et la réutiliser dans plusieurs requêtes sans coût supplémentaire par requête.
  • Contrôler la prosodie et les émotions en ligne à l’aide de balises entre crochets en langage naturel ([whisper], [excited]).
  • Construire des pipelines nécessitant un TTS multilingue sans intégrations séparées par langue.

Si vous avez uniquement besoin d’un TTS anglais de base avec des voix intégrées et sans clonage, évaluez d’abord le modèle Fish Audio S1 ou GLM TTS — l’avantage de S2 Pro se manifeste lorsque vous avez besoin de clonage cross-lingue ou d’un contrôle fin des émotions.

Étape 1 : Obtenez votre clé API Novita

Créez un compte Novita AI et générez une clé API depuis la console Novita AI. Stockez-la comme variable d’environnement :

export NOVITA_API_KEY="votre_cle_api_ici"

Gardez la clé hors du code côté client, des bundles frontend et des dépôts publics.

Étape 2 : Confirmez le modèle et l’endpoint

La documentation Novita AI pour Fish Audio S2 Pro TTS se trouve dans la référence API Fish Audio S2 Pro. Vérifiez le chemin d’endpoint actuel et l’identifiant du modèle avant de coder — l’URL de l’endpoint hébergé et le schéma de requête sont confirmés dans cette référence.

Pour le clonage vocal, trois endpoints Novita sont utilisés dans le workflow :

Étape Méthode Endpoint
Télécharger l’échantillon audio POST https://api.novita.ai/v1/files
Créer le clone (asynchrone) POST https://api.novita.ai/v1/async/voice-cloning
Interroger le résultat GET https://api.novita.ai/v1/async/task-result
TTS avec voix clonée POST https://api.novita.ai/v4beta/txt2speech

Le clonage vocal utilise le modèle fish-audio-voice-cloning pour l’étape de création du clone, séparé du modèle TTS.

Étape 3 : Clonez une voix

Le clonage vocal nécessite trois appels API : télécharger un court échantillon audio, créer le clone, puis récupérer le voice_id. Une fois que vous avez un voice_id, vous pouvez le réutiliser dans les requêtes TTS indéfiniment sans coût supplémentaire.

Exigences pour l’échantillon audio :

  • Durée : 10 à 30 secondes donne les meilleurs résultats
  • Format : MP3 ou WAV
  • Contenu : Parole claire avec un minimum de bruit de fond
  • Transcription : Fournir le texte exact parlé améliore la précision du clone

Python : Workflow de clonage complet

import base64
import os
import time
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai"

# Étape 1 : Télécharger le fichier audio
with open("voice_sample.mp3", "rb") as f:
    encoded_audio = base64.b64encode(f.read()).decode("utf-8")

upload_response = requests.post(
    f"{BASE_URL}/v1/files",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "file": encoded_audio,
        "purpose": "voice-cloning",
    },
)
upload_response.raise_for_status()
file_id = upload_response.json()["file_id"]
print(f"ID du fichier téléchargé : {file_id}")

# Étape 2 : Créer le clone vocal
clone_response = requests.post(
    f"{BASE_URL}/v1/async/voice-cloning",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "model": "fish-audio-voice-cloning",
        "audio_file_id": file_id,
        "text": "Texte prononcé dans l'échantillon audio ici.",
    },
)
clone_response.raise_for_status()
task_id = clone_response.json()["task_id"]
print(f"ID de la tâche de clonage : {task_id}")

# Étape 3 : Interroger pour obtenir le voice_id
voice_id = None
while True:
    result = requests.get(
        f"{BASE_URL}/v1/async/task-result",
        headers={"Authorization": f"Bearer {API_KEY}"},
        params={"task_id": task_id},
    ).json()
    if result["status"].endswith("SUCCEED"):
        voice_id = result["result"]["voice_id"]
        print(f"ID de voix clonée : {voice_id}")
        break
    elif "FAILED" in result["status"]:
        raise RuntimeError(f"Échec du clone : {result}")
    time.sleep(2)

Sauvegardez le voice_id. Vous l’utiliserez comme reference_id dans chaque appel TTS.

cURL : Création du clone (après téléchargement du fichier)

curl -s -X POST https://api.novita.ai/v1/async/voice-cloning \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "fish-audio-voice-cloning",
    "audio_file_id": "VOTRE_ID_DE_FICHIER",
    "text": "Texte prononcé dans l'\''échantillon audio ici."
  }'

Étape 4 : Envoyez une requête TTS

Une fois que vous avez un voice_id de l’étape 3, passez-le comme reference_id dans la requête TTS. Le modèle génère la parole avec la voix clonée.

Python

import os
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
VOICE_ID = "votre_id_de_voix_clonee"  # depuis l'étape 3

response = requests.post(
    "https://api.novita.ai/v4beta/txt2speech",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "text": "Bienvenue dans la démo. Cette voix a été clonée à partir d'un court échantillon audio.",
        "reference_id": VOICE_ID,
        "format": "mp3",
        "sample_rate": 44100,
    },
)
response.raise_for_status()
audio_url = response.json()["audio_url"]
print(f"URL audio : {audio_url}")

cURL

curl -s -X POST https://api.novita.ai/v4beta/txt2speech \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Bienvenue dans la démo. Cette voix a été clonée à partir d'\''un court échantillon audio.",
    "reference_id": "VOTRE_ID_DE_VOIX_CLONEE",
    "format": "mp3",
    "sample_rate": 44100
  }'

La réponse contient une audio_url — une URL pré-signée pointant vers le fichier audio généré.

Étape 5 : Vérifiez les tarifs, limites et erreurs courantes

Tarifs (vérifiez les tarifs actuels sur novita.ai/pricing) :

Opération Prix
Génération TTS ~15,00 $ / 1M de caractères
Clonage vocal 0,10 $ par voix (unique)

Le clonage vocal est facturé une fois par clone, pas par requête TTS. Une fois cloné, l’utilisation du voice_id dans les appels TTS coûte uniquement le tarif TTS par caractère.

Limites par requête :

Limite Valeur
Longueur maximale d’entrée 10 000 caractères
Échantillon recommandé pour le clonage 10 à 30 secondes
Formats de sortie pris en charge mp3, opus, wav, pcm
Taux d’échantillonnage audio Jusqu’à 44 100 Hz

Erreurs courantes :

Erreur Cause Correctif
401 Unauthorized Clé API invalide ou manquante Vérifiez que NOVITA_API_KEY est définie et correcte
400 Bad Request lors du téléchargement Fichier audio trop volumineux ou mauvais format Utilisez MP3/WAV, gardez sous quelques Mo
Statut de la tâche FAILED Échantillon audio trop court ou trop bruyant Utilisez 10 à 30 s de parole claire
Audio vide ou déformé Champ text vide ou trop long Gardez l’entrée sous 10 000 caractères

Balises de contrôle des émotions

S2 Pro prend en charge les balises [crochet]] en ligne qui contrôlent la façon dont le modèle rend des mots ou phrases spécifiques. Elles sont interprétées comme des instructions en langage naturel lors de la génération — vous n’êtes pas limité à une liste fixe de tokens.

text_with_emotion = (
    "[cheerful] Bienvenue ! [pause] "
    "Je suis vraiment content que vous soyez là. "
    "[whisper] Entre nous, cette partie est secrète. [normal] "
    "Bon, commençons."
)

response = requests.post(
    "https://api.novita.ai/v4beta/txt2speech",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "text": text_with_emotion,
        "reference_id": VOICE_ID,
        "format": "mp3",
        "sample_rate": 44100,
    },
)

Exemples de balises entre crochets que le modèle comprend :

Balise Effet
[whisper] Parole chuchotée
[excited] Plus d’énergie, rythme plus rapide
[calm] Ton ralenti et mesuré
[laughs] Rire intégré dans la parole
[professional broadcast tone] Style de présentation de journaliste
[pitch up] Augmente la hauteur pour le texte suivant
[pause] Pause brève

Les balises sont des descriptions libres, pas des valeurs d’énumération fixes. Le modèle a appris les correspondances balise-acoustique à partir des données d’entraînement, donc les phrases descriptives fonctionnent aussi. Expérimentez avec des balises spécifiques pour votre cas d’usage ; les résultats peuvent varier avec des formulations inhabituelles.

Paramètres clés

Paramètre Type Notes
text string Requis. Jusqu’à 10 000 caractères.
reference_id string Requis. ID du modèle vocal — voice_id cloné ou référence vocale système.
format string Format de sortie : mp3, opus, wav, pcm. Par défaut : mp3.
sample_rate integer Taux d’échantillonnage audio en Hz. 44100 recommandé pour une haute fidélité.
temperature number Contrôle le caractère aléatoire de la génération. Plus élevé = prosodie plus variée.
top_p number Seuil d’échantillonnage du noyau.

Pour le schéma complet des paramètres et toute option supplémentaire spécifique à S2 Pro, consultez la référence API Novita AI Fish Audio S2 Pro.

Dépannage

La voix clonée semble robotique ou incohérente. L’échantillon était probablement trop court ou contenait du bruit de fond. Enregistrez un clip propre de 20 à 30 secondes avec un rythme constant et sans chevauchement. Fournir la transcription exacte du texte de l’échantillon (text) dans la requête de clonage améliore l’alignement phonémique.

L’URL audio renvoie 404 après interrogation. Les URL pré-signées expirent. Téléchargez ou traitez l’audio rapidement après avoir reçu l’URL.

Les balises d’émotion ne produisent pas l’effet attendu. Le comportement des balises dépend des distributions des données d’entraînement. Essayez des formulations plus descriptives — par exemple, [very softly, barely audible] au lieu de [quiet]. Certaines balises fonctionneront mieux que d’autres ; testez avec des entrées courtes d’abord.

Le statut de la tâche de clonage reste en attente. Ajoutez un intervalle d’interrogation (1 à 2 secondes entre les vérifications) pour éviter la limitation de débit sur l’endpoint de résultat de tâche. Si la tâche reste en attente pendant plus de deux minutes, vérifiez l’étape de téléchargement du fichier — le file_id a peut-être expiré.

Besoin d’utiliser la même voix dans plusieurs langues. Passez le même voice_id avec du texte dans n’importe quelle langue prise en charge. S2 Pro applique le timbre de la voix clonée à la nouvelle langue sans nécessiter de clone séparé. Consultez la référence API S2 Pro pour la liste actuelle des langues prises en charge.

FAQ

Qu’est-ce qui différencie S2 Pro de Fish Audio S1 ? S2 Pro utilise une architecture Double-Autorégressive plus grande, entraînée sur un large corpus multilingue. Les différences pratiques : un support linguistique plus large, un contrôle des émotions en ligne via des balises entre crochets, et une capacité de synthèse multi-locuteurs non disponible dans S1. Voir la référence API S2 Pro pour la liste actuelle des langues.

Puis-je cloner une voix une fois et l’utiliser pour toutes les langues prises en charge ? Oui. Une voix clonée à partir d’un échantillon en anglais peut générer de la parole en japonais, espagnol, arabe ou toute autre langue prise en charge en utilisant le même voice_id. Le modèle transfère le timbre vocal à travers les langues sans formation supplémentaire.

Quelle doit être la durée de l’échantillon vocal ? 10 à 30 secondes de parole claire et constante. Des échantillons plus courts peuvent fonctionner mais peuvent produire des résultats moins stables. Les échantillons de plus de 30 secondes n’améliorent pas significativement la qualité du clone.

Le clonage vocal est-il facturé par requête TTS ? Non. Les 0,10 $ pour le clonage vocal sont des frais uniques par clone. Après la création, l’utilisation de ce voice_id dans les requêtes TTS coûte uniquement le tarif TTS par caractère.

Que se passe-t-il si j’omets un reference_id ? Consultez la référence API S2 Pro pour le comportement par défaut actuel — le modèle peut utiliser une voix par défaut ou exiger une référence.

Comment obtenir une clé API ? Inscrivez-vous sur novita.ai et générez une clé depuis la console Novita AI.

Articles recommandés