- Wann dieser Schnellstart verwendet wird
- Schritt 1: Holen Sie sich Ihren Novita-API-Schlüssel
- Schritt 2: Modell und Endpunkt bestätigen
- Schritt 3: Eine Stimme klonen
- Schritt 4: Eine TTS-Anfrage senden
- Schritt 5: Preise, Limits und häufige Fehler prüfen
- Emotionssteuerungs-Tags
- Wichtige Parameter
- Fehlerbehebung
- FAQ
- Empfohlene Artikel
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.
