Fish Audio S2 Pro – Schnellstart für Sprachklonierung und mehrsprachige TTS

Fish Audio S2 Pro – Schnellstart für Sprachklonierung und mehrsprachige TTS

Fish Audio S2 Pro ist auf Novita AI als gehostete TTS-API ohne Kaltstart verfügbar. Dieser Schnellstart behandelt den Entwicklerpfad: Holen Sie sich Ihren API-Schlüssel, bestätigen Sie den Endpunkt, senden Sie Ihre erste TTS-Anfrage mit einer geklonten Stimme und verstehen Sie die Parameter, die für Sprachklonierung und Emotionssteuerung wichtig sind. S2 Pro basiert auf einer Dual-Autoregressive-Architektur, die mit einem großen mehrsprachigen Korpus trainiert wurde. Das Merkmal, das es von generischer TTS unterscheidet, ist, dass jede geklonte Stimme ohne Neutraining in allen unterstützten Sprachen funktioniert.

Wann dieser Schnellstart verwendet wird

Verwenden Sie diesen Leitfaden, wenn Sie Folgendes benötigen:

  • Sprachsynthese aus Text in einer Vielzahl unterstützter Sprachen mit einer benutzerdefinierten geklonten Stimme.
  • Klonen einer Stimme aus einer 10–30 Sekunden langen Audioaufnahme und deren Wiederverwendung für mehrere Anfragen ohne zusätzliche Kosten pro Anfrage.
  • Steuerung von Prosodie und Emotion mittels natürlichsprachlicher Klammer-Tags ([whisper], [excited]).
  • Aufbau von Pipelines, die mehrsprachige TTS ohne separate sprachspezifische Integrationen benötigen.

Wenn Sie nur grundlegende englische TTS mit integrierten Stimmen und ohne Klonierung benötigen, evaluieren Sie zuerst das Fish Audio S1-Modell oder GLM TTS – der Vorteil von S2 Pro zeigt sich, wenn Sie sprachübergreifende Klonierung oder feinkörnige Emotionssteuerung benötigen.

Schritt 1: Holen Sie sich Ihren Novita-API-Schlüssel

Erstellen Sie ein Novita AI-Konto und generieren Sie einen API-Schlüssel in der Novita AI-Konsole. Speichern Sie ihn als Umgebungsvariable:

export NOVITA_API_KEY="your_api_key_here"

Bewahren Sie den Schlüssel außerhalb von clientseitigem Code, Frontend-Bundles und öffentlichen Repositories auf.

Schritt 2: Modell und Endpunkt bestätigen

Die Novita AI-Dokumentation für Fish Audio S2 Pro TTS finden Sie in der Fish Audio S2 Pro API-Referenz. Überprüfen Sie vor dem Codieren den aktuellen Endpunkt-Pfad und die Modellkennung – die gehostete Endpunkt-URL und das Anforderungsschema sind in dieser Referenz bestätigt.

Für die Sprachklonierung werden im Workflow drei Novita-Endpunkte verwendet:

Schritt Methode Endpunkt
Audioaufnahme hochladen POST https://api.novita.ai/v1/files
Klon erstellen (asynchron) POST https://api.novita.ai/v1/async/voice-cloning
Ergebnis abfragen GET https://api.novita.ai/v1/async/task-result
TTS mit geklonter Stimme POST https://api.novita.ai/v4beta/txt2speech

Für die Klonerstellung wird das Modell fish-audio-voice-cloning verwendet, getrennt vom TTS-Modell.

Schritt 3: Eine Stimme klonen

Das Klonen einer Stimme erfordert drei API-Aufrufe: Hochladen einer kurzen Audioaufnahme, Erstellen des Klons und anschließendes Abrufen der voice_id. Sobald Sie eine voice_id haben, können Sie diese unbegrenzt in TTS-Anfragen ohne zusätzliche Kosten wiederverwenden.

Anforderungen an die Audioaufnahme:

  • Dauer: 10–30 Sekunden liefern die besten Ergebnisse
  • Format: MP3 oder WAV
  • Inhalt: Saubere Sprache mit minimalen Hintergrundgeräuschen
  • Transkript: Die Angabe des exakten gesprochenen Texts verbessert die Klon-Genauigkeit

Python: Vollständiger Klon-Workflow

import base64
import os
import time
import requests

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

# Schritt 1: Audiodatei hochladen
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"Hochgeladene Datei-ID: {file_id}")

# Schritt 2: Sprachklon erstellen
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": "Text spoken in the audio sample goes here.",
    },
)
clone_response.raise_for_status()
task_id = clone_response.json()["task_id"]
print(f"Klon-Aufgaben-ID: {task_id}")

# Schritt 3: Auf die voice_id warten
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"Geklonte Stimmen-ID: {voice_id}")
        break
    elif "FAILED" in result["status"]:
        raise RuntimeError(f"Klon fehlgeschlagen: {result}")
    time.sleep(2)

Speichern Sie die voice_id. Sie wird als reference_id in jedem TTS-Aufruf verwendet.

cURL: Klon erstellen (nach Datei-Upload)

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": "YOUR_FILE_ID",
    "text": "Text spoken in the audio sample goes here."
  }'

Schritt 4: Eine TTS-Anfrage senden

Sobald Sie eine voice_id aus Schritt 3 haben, übergeben Sie diese als reference_id in der TTS-Anfrage. Das Modell generiert Sprache in der geklonten Stimme.

Python

import os
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
VOICE_ID = "your_cloned_voice_id"  # aus Schritt 3

response = requests.post(
    "https://api.novita.ai/v4beta/txt2speech",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "text": "Welcome to the demo. This voice was cloned from a short audio sample.",
        "reference_id": VOICE_ID,
        "format": "mp3",
        "sample_rate": 44100,
    },
)
response.raise_for_status()
audio_url = response.json()["audio_url"]
print(f"Audio-URL: {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": "Welcome to the demo. This voice was cloned from a short audio sample.",
    "reference_id": "YOUR_CLONED_VOICE_ID",
    "format": "mp3",
    "sample_rate": 44100
  }'

Die Antwort enthält eine audio_url – eine vorab signierte URL, die auf die generierte Audiodatei verweist.

Schritt 5: Preise, Limits und häufige Fehler prüfen

Preise (Aktuelle Preise auf novita.ai/pricing prüfen):

Vorgang Preis
TTS-Generierung ~15,00 $ / 1 Mio. Zeichen
Sprachklonierung 0,10 $ pro Stimme (einmalig)

Die Sprachklonierung wird einmal pro Klon abgerechnet, nicht pro TTS-Anfrage. Nach dem Klonen kostet die Verwendung der voice_id in TTS-Aufrufen nur den zeichenbasierten TTS-Tarif.

Limits pro Anfrage:

Limit Wert
Maximale Eingabelänge 10.000 Zeichen
Empfohlene Probenlänge zum Klonen 10–30 Sekunden
Unterstützte Ausgabeformate mp3, opus, wav, pcm
Audio-Abtastrate Bis zu 44.100 Hz

Häufige Fehler:

Fehler Ursache Behebung
401 Unauthorized Ungültiger oder fehlender API-Schlüssel Prüfen, ob NOVITA_API_KEY gesetzt und korrekt ist
400 Bad Request beim Datei-Upload Audiodatei zu groß oder falsches Format MP3/WAV verwenden, unter wenigen MB halten
Klon-Aufgabe mit Status FAILED Audio-Probe zu kurz oder zu verrauscht 10–30 s saubere Sprache verwenden
Leeres oder verzerrtes Audio text-Feld leer oder über Limit Eingabe unter 10.000 Zeichen halten

Emotionssteuerungs-Tags

S2 Pro unterstützt Inline-[Klammer]-Tags, die steuern, wie das Modell bestimmte Wörter oder Phrasen wiedergibt. Diese werden während der Generierung als natürlichsprachliche Anweisungen interpretiert – Sie sind nicht auf eine festgelegte Liste von Tokens beschränkt.

text_with_emotion = (
    "[cheerful] Welcome back! [pause] "
    "I'm really glad you're here. "
    "[whisper] Just between us, this part is a secret. [normal] "
    "Anyway, let's get started."
)

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,
    },
)

Beispiele für Klammer-Tags, die das Modell versteht:

Tag Wirkung
[whisper] Flüsternd vorgetragen
[excited] Höhere Energie, schnelleres Tempo
[calm] Langsamer, abgemessener Ton
[laughs] Lachen in die Sprache eingebettet
[professional broadcast tone] Nachrichtensprecher-Stil
[pitch up] Erhöht die Tonhöhe für den folgenden Text
[pause] Kurze Pause

Tags sind freie Beschreibungen, keine festen Aufzählungswerte. Das Modell hat Tag-zu-Akustik-Zuordnungen aus den Trainingsdaten gelernt, daher funktionieren auch beschreibende Formulierungen. Experimentieren Sie mit spezifischen Tags für Ihren Anwendungsfall; die Ergebnisse können bei ungewöhnlichen Formulierungen variieren.

Wichtige Parameter

Parameter Typ Hinweise
text string Erforderlich. Maximal 10.000 Zeichen.
reference_id string Erforderlich. Sprachmodell-ID – geklonte voice_id oder eine Systemstimme.
format string Ausgabeformat: mp3, opus, wav, pcm. Standard: mp3.
sample_rate integer Audio-Abtastrate in Hz. 44100 für hohe Wiedergabetreue empfohlen.
temperature number Steuert die Generierungs-Zufälligkeit. Höher = abwechslungsreichere Prosodie.
top_p number Schwellwert für Nucleus-Sampling.

Das vollständige Parameterschema und weitere S2 Pro-spezifische Optionen finden Sie in der Novita AI Fish Audio S2 Pro API-Referenz.

Fehlerbehebung

Die geklonte Stimme klingt roboterhaft oder inkonsistent. Die Probe war wahrscheinlich zu kurz oder hatte Hintergrundgeräusche. Nehmen Sie eine saubere 20–30-Sekunden-Aufnahme mit gleichmäßigem Tempo und ohne Überlappungen auf. Die Angabe des genauen text-Transkripts der Probe in der Klon-Anfrage verbessert die Phonem-Ausrichtung.

Audio-URL gibt nach dem Abfragen 404 zurück. Vorab signierte URLs laufen ab. Laden Sie das Audio nach Erhalt der URL herunter oder verarbeiten Sie es zeitnah.

Emotions-Tags zeigen nicht die gewünschte Wirkung. Das Tag-Verhalten hängt von der Verteilung der Trainingsdaten ab. Versuchen Sie aussagekräftigere Formulierungen – zum Beispiel [very softly, barely audible] statt [quiet]. Manche Tags funktionieren besser als andere; testen Sie zuerst mit kurzen Eingaben.

Der Status der Klon-Aufgabe bleibt auf „ausstehend“. Fügen Sie ein Polling-Intervall (1–2 Sekunden zwischen den Abfragen) ein, um eine Ratenbegrenzung des Aufgaben-Ergebnis-Endpunkts zu vermeiden. Wenn die Aufgabe länger als zwei Minuten ausstehend bleibt, überprüfen Sie den Datei-Upload-Schritt – die file_id könnte abgelaufen sein.

Dieselbe Stimme in verschiedenen Sprachen verwenden. Übergeben Sie dieselbe voice_id mit Text in einer beliebigen unterstützten Sprache. S2 Pro wendet die Klangfarbe der geklonten Stimme auf die neue Sprache an, ohne dass ein separater Klon erforderlich ist. Die aktuelle Liste der unterstützten Sprachen finden Sie in der S2 Pro API-Referenz.

FAQ

Was unterscheidet S2 Pro von Fish Audio S1? S2 Pro verwendet eine größere Dual-Autoregressive-Architektur, die mit einem breiten mehrsprachigen Korpus trainiert wurde. Die praktischen Unterschiede: breitere Sprachunterstützung, Inline-Emotionssteuerung über Klammer-Tags und Multi-Speaker-Synthese, die in S1 nicht verfügbar ist. Die aktuelle Sprachliste finden Sie in der S2 Pro API-Referenz.

Kann ich eine Stimme einmal klonen und für alle unterstützten Sprachen verwenden? Ja. Eine aus einer englischen Probe geklonte Stimme kann mit derselben voice_id Sprache in Japanisch, Spanisch, Arabisch oder jeder anderen unterstützten Sprache generieren. Das Modell überträgt die Klangfarbe der Stimme ohne zusätzliches Training auf andere Sprachen.

Wie lang sollte die Sprachprobe sein? 10–30 Sekunden saubere, gleichmäßige Sprache. Kürzere Proben können funktionieren, liefern aber möglicherweise weniger stabile Ergebnisse. Proben über 30 Sekunden verbessern die Klonqualität nicht wesentlich.

Wird die Sprachklonierung pro TTS-Anfrage abgerechnet? Nein. Die Gebühr von 0,10 $ für die Sprachklonierung ist eine einmalige Gebühr pro Klon. Nach der Erstellung kostet die Verwendung dieser voice_id in TTS-Anfragen nur den zeichenbasierten TTS-Tarif.

Was passiert, wenn ich eine reference_id weglasse? Informationen zum aktuellen Standardverhalten finden Sie in der S2 Pro API-Referenz – das Modell verwendet möglicherweise eine Standardstimme oder erfordert eine Referenz.

Wie erhalte ich einen API-Schlüssel? Registrieren Sie sich unter novita.ai und generieren Sie einen Schlüssel in der Novita AI-Konsole.

Empfohlene Artikel