Fish Audio Docs
API ReferenzText-to-Speech

HTTP synchronisieren

Generieren Sie Sprache synchron mit Open API v1.

HTTP synchronisieren

Verwenden Sie den Synchronisierungsendpunkt TTS, wenn der Text kurz genug für einen Anfrage-Antwort-Fluss ist und Ihr Produkt auf den Ton warten kann, bevor es fortfährt. Für Langtext, Batch-Arbeit oder für den Benutzer sichtbare Warteschlangen verwenden Sie Asynchrone Jobs.

Wenn Ihr Client die Anforderungsform OpenAI /v1/audio/speech erwartet, verwenden Sie stattdessen den Endpunkt OpenAI-kompatibler TTS.

POST /api/open/v1/speech/tts
Authorization: Bearer FISHAUDIO_API_KEY
Content-Type: application/json

Anfrage

{
  "text": "Hello from Fish Audio.",
  "voiceId": "00a1b221-6137-4b73-ad62-b0cbce134167",
  "modelId": "fishaudio-s21pro-flash",
  "format": "mp3"
}

Gemeinsame Bereiche:

FeldGeben Sieein Notizen
textZeichenfolgeZu synthetisierender Text. Leerzeichen normalisieren, bevor großer generierter Text gesendet wird.
voiceIdZeichenfolgeBevorzugte Sprach-ID für neue Integrationen.
modelIdZeichenfolgeTTS-Engine-Modell-ID, zum Beispiel fishaudio-s21pro-flash.
formatZeichenfolgeAusgabecontainer wie mp3, abhängig von den aktivierten Modellen.
cacheboolescher WertWenn „true“, kann die Antwort JSON-Metadaten und eine Audio-URL zurückgeben.

Neue Integrationen sollten voiceId von GET /api/open/v1/voices verwenden. Für einen schnellen Verbindungstest nutzen Sie die öffentliche Systemstimme 00a1b221-6137-4b73-ad62-b0cbce134167.

Mischen Sie keine Felder aus älteren SDKs oder anderen Site-Varianten in den aktuellen Open API-Vertrag für Übersee.

curl https://fishaudio.org/api/open/v1/speech/tts \
  -H "Authorization: Bearer FISHAUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello from Fish Audio.","voiceId":"00a1b221-6137-4b73-ad62-b0cbce134167","modelId":"fishaudio-s21pro-flash","format":"mp3"}' \
  --output speech.mp3

Antwort

Wenn cache false ist oder weggelassen wird, geben erfolgreiche Antworten binäres Audio zurück. Wenn cache true ist, geben erfolgreiche Antworten JSON-Metadaten zurück:

{
  "audio_url": "https://example.com/generated.mp3",
  "credits_used": 12,
  "quota_remaining": 987988
}

Ihr Client sollte auf dem Content-Type-Header verzweigen, anstatt eine Antwortform anzunehmen. Speichern Sie generierte Audiodaten in Ihrem eigenen dauerhaften Speicher, wenn die URL nur von kurzer Dauer ist.

Abrechnung und Gutschriften

Die Synchronisierung TTS verbraucht Credits basierend auf generierten Inhalten und Modellkonfiguration. Da der Endpunkt die Generierung innerhalb der HTTP-Anfrage durchführt, bedeutet ein Client-Timeout nicht immer, dass der Server die Arbeit abgebrochen hat. Verwenden Sie Idempotenz in Ihrer eigenen Anwendungsschicht, wenn Sie Benutzeraktionen wiederholen.

Wenn Sie einen genauen Kontostand nach der Generierung benötigen, rufen Sie nach Abschluss der Anfrage Profile auf. Bevorzugen Sie bei großen Stapeln asynchrone Jobs, damit jede Aufgabe eine dauerhafte ID und einen dauerhaften Status hat.

Fehler

StatusBedeutungAktion
400Text, Sprach-ID, Format oder Nutzdatenform sind ungültigKorrigieren Sie die Anfrage, bevor Sie es erneut versuchen
401API-Schlüssel fehlt oder ist ungültigServerseitige Anmeldeinformationen aktualisieren
402Credits oder Kontingent reichen nicht ausStoppen Sie den Stapel und zeigen Sie einen Abrechnungsstatus an
429Tarif begrenztMit Backoff erneut versuchen
500Generierung nach Validierung fehlgeschlagenVersuchen Sie es nur erneut, wenn Ihr Produkt doppelte Audiodaten toleriert