Dieser Artikel beschreibt die Integrationsanleitung für die Fish TTS API. Diese Schnittstelle ist vollständig kompatibel mit der offiziellen Fish Audio OpenAPI und ermöglicht es, bestehenden Code, derDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
https://api.fish.audio/v1/tts aufruft, direkt auf https://api.xhuoapi.ai/v1/fish/tts zu migrieren. Es ist lediglich erforderlich, die Authentifizierungsinformationen auszutauschen, ohne die Struktur des Anfragekörpers ändern zu müssen.
Antragsverfahren
Um die API nutzen zu können, müssen Sie zunächst auf der entsprechenden Seite der Fish TTS API den Dienst beantragen. Nach dem Aufruf der Seite klicken Sie auf die Schaltfläche „Acquire“. Falls Sie noch nicht angemeldet oder registriert sind, werden Sie automatisch zur Anmeldeseite weitergeleitet, um sich zu registrieren und anzumelden. Nach der Anmeldung kehren Sie automatisch zur ursprünglichen Seite zurück. Bei der ersten Beantragung erhalten Sie ein kostenloses Kontingent, mit dem Sie die API kostenfrei nutzen können.Unterschiede zur offiziellen API
Diese API bietet auf Basis der offiziellen Fish Audio Anfrage- und Antwortfelder einige wenige Erweiterungen, um eine bessere Integration auf unserer Plattform zu ermöglichen:- Authentifizierungsmethode: Verwendung von
Authorization: Bearer {token}, wobei{token}der auf unserer Plattform beantragte Schlüssel ist und nicht der offizielle Fish-Schlüssel. - TTS-Modellauswahl: Über den HTTP-Header
modelspezifizierbar, wählbar zwischens1oders2-pro, Standardwert ists2-pro. Dies entspricht dem offiziellen Verhalten von Fish. - Standardwert für
latency: Die Upstream-API/fish/v1/ttsgibt einen Fehler zurück, wennlatencynicht übergeben wird. Diese Schnittstelle ergänzt bei Fehlen automatischlatency=normal, was dem Standardverhalten von Fish entspricht. - Asynchrone Callback-Funktion (Plattformerweiterung): Wird im Anfragekörper zusätzlich das Feld
callback_urlübergeben, antwortet die API sofort mit{task_id, started_at}. Nach Abschluss der Verarbeitung sendet die Upstream-API das vollständige Ergebnis{audio_url, ...}als POST-JSON an die angegebene URL zurück. Die offizielle Fish-API unterstützt dieses Feld nicht; dessen Verwendung löst nur unseren asynchronen Ablauf aus.
text, reference_id, references, prosody, format, sample_rate, mp3_bitrate, chunk_length, temperature, top_p usw.) direkt an die Upstream-API weitergeleitet, das Verhalten entspricht vollständig der offiziellen Dokumentation.
Grundlegende Nutzung
Die minimale Anfrage benötigt nur das Feldtext. Ein Beispiel mit CURL:
audio_url: URL der generierten Audiodatei, kann direkt heruntergeladen oder abgespielt werden.latency_ms(optional): Verarbeitungsdauer upstream in Millisekunden.
reference_id hinzufügen:
Asynchrone Callback-Funktion
Da die Generierung bei längeren Texten zeitintensiv sein kann und eine dauerhafte Verbindung Systemressourcen beansprucht, bietet diese API eine asynchrone Callback-Funktion (eine Erweiterung gegenüber der offiziellen Fish-API). Der Ablauf ist folgender: Der Client übergibt im Anfragekörper zusätzlich das Feldcallback_url. Die API antwortet sofort mit einer Antwort, die task_id enthält. Nach Abschluss der Generierung sendet die Upstream-API das finale Ergebnis mit audio_url und weiteren Feldern als POST-JSON an die callback_url. Im Anfragekörper der Callback-Anfrage ist ebenfalls die gleiche task_id enthalten, um das asynchrone Ergebnis mit der ursprünglichen Aufgabe zu verknüpfen.
Beispielanfrage:
callback_url das vollständige Ergebnis:
task_id aktiv abzufragen.
Fehlerbehandlung
Die Fehlerantworten dieser Schnittstelle verwenden die HTTP-Statuscodes von Fish, der Antwortkörper folgt jedoch einem einheitlichen Format, um Konsistenz mit den/fish/audios und /fish/voices APIs zu gewährleisten:
400 token_mismatched: Ungültige Anfrage, möglicherweise fehlende oder ungültige Parameter.400 api_not_implemented: Ungültige Anfrage, möglicherweise fehlende oder ungültige Parameter.401 invalid_token: Nicht autorisiert, ungültiger oder fehlender Autorisierungstoken.429 too_many_requests: Zu viele Anfragen, das Ratenlimit wurde überschritten.500 api_error: Interner Serverfehler, es ist ein Fehler aufgetreten.

