Fish Audio S2 API
Die Fish Audio S2 API ist eine Text-to-Speech REST API in Produktionsqualität, die von einem 4-Milliarden-Parameter-Modell betrieben wird, das auf 10 Millionen Stunden Audiomaterial trainiert wurde. Sie unterstützt Stimmklonierung, Streaming und über 50 Sprachen. Um die Fish Audio S2 API effizient zu nutzen, einschließlich dem Senden von Anfragen, dem Verwalten von Referenzen und dem Ausführen von Unit-Tests, ist Apidog der schnellste Weg, um jeden Endpunkt zu erkunden, zu dokumentieren und zu validieren.
Einführung
KI-generierte Stimmen haben eine Schwelle überschritten. Moderne TTS-Modelle klingen nicht mehr wie Roboter – sie flüstern, lachen und ändern den Ton mitten im Satz. Die Fish Audio S2 API steht an der Spitze dieser Entwicklung: ein 4-Milliarden-Parameter-Modell, das auf über 10 Millionen Stunden mehrsprachigen Audiomaterials trainiert wurde und in der Lage ist, Sprache zu erzeugen, die von einer menschlichen Aufnahme nicht zu unterscheiden ist.
Ob Sie ein Podcast-Automatisierungstool, einen interaktiven Sprachassistenten oder eine Echtzeit-Synchronisationspipeline entwickeln, die Integration der Fish Audio S2 API in Ihren Stack erfordert mehr als nur eine einzelne POST-Anfrage. Sie müssen Authentifizierung, Referenz-Audio-Verwaltung, Streaming-Verhalten und entscheidend, wie man zuverlässige Unit-Tests schreibt, verstehen, damit Ihre Integration in der Produktion nicht stillschweigend fehlschlägt.
Was ist die Fish Audio S2 API?
Die Fish Audio S2 API ist die HTTP-Schnittstelle zu Fish Speech S2-Pro, einem Open-Source-TTS-System, das auf einer Dual-Autoregressiven (Dual-AR) Architektur basiert. Das Modell trennt die semantische Generierung (4 Mrd. Parameter, langsames AR entlang der Zeitachse) von der Rest-Codebook-Generierung (400 Mio. Parameter, schnelles AR entlang der Tiefenachse), was eine hochwertige Synthese mit einem Echtzeitfaktor von 0,195 auf einer einzigen NVIDIA H200 ermöglicht.
Wichtige Funktionen der Fish Audio S2 API:
| Funktion | Details |
|---|---|
| Sprachen | ~50 (Englisch, Chinesisch, Japanisch, Koreanisch, Arabisch, Französisch, Deutsch und mehr) |
| Stimmklonierung | 10–30 Sekunden Referenz-Audio, kein Fine-Tuning erforderlich |
| Inline-Emotionskontrolle | Tags in natürlicher Sprache: [laugh], [whispers], [super happy] |
| Generierung mehrerer Sprecher | Native <|speaker:i|> Token-Unterstützung |
| Streaming | Echtzeit-Chunk-Audio über "streaming": true |
| Ausgabeformate | WAV, MP3, PCM |
| Authentifizierung | Bearer-Token (Authorization: Bearer YOUR_API_KEY) |
Die Basis-URL der Fish Audio S2 API nach der lokalen Bereitstellung ist http://127.0.0.1:8080. Alle Endpunkte fallen unter den /v1/-Namensraum.
Erste Schritte mit der Fish Audio S2 API und Apidog
Voraussetzungen für die Fish Audio S2 API
Bevor Sie Ihren ersten Fish Audio S2 API-Aufruf tätigen, benötigen Sie zwei Dinge: einen bereitgestellten Fish Speech S2-Pro-Server und einen API-Client, der binäre Audio-Antworten verarbeiten kann.
Starten Sie den Fish Audio S2 API-Server:
python tools/api_server.py \
--llama-checkpoint-path checkpoints/s2-pro \
--decoder-checkpoint-path checkpoints/s2-pro/codec.pth \
--listen 0.0.0.0:8080 \
--compile \
--half \
--api-key YOUR_API_KEY \
--workers 4
Das --compile-Flag aktiviert die torch.compile-Optimierung – dies reduziert die Inferenzlatenz um etwa das 10-fache, fügt aber beim ersten Start einmalige Aufwärmkosten hinzu. Das --half-Flag ermöglicht FP16 für einen reduzierten GPU-Speicherverbrauch.
Sobald der Server läuft, überprüfen Sie ihn mit einem Health-Check:
curl http://127.0.0.1:8080/v1/health
# {"status":"ok"}
Einrichtung der Fish Audio S2 API in Apidog
Laden Sie Apidog kostenlos herunter und erstellen Sie ein neues HTTP-Projekt. Fügen Sie die Basis-URL http://127.0.0.1:8080 unter Umgebungen hinzu. Legen Sie dann einen globalen Header fest:
Authorization: Bearer YOUR_API_KEY
Apidog speichert dies auf Umgebungsebene, sodass jede von Ihnen gesendete Fish Audio S2 API-Anfrage das Token automatisch erbt – kein manuelles Einfügen des Headers pro Anfrage. Dies ist besonders nützlich, wenn Sie zwischen mehreren Fish Audio S2 API-Umgebungen (lokale Entwicklung, Staging, Produktion) wechseln müssen.
Ihre erste Fish Audio S2 API-Anfrage in Apidog tätigen
Testen des Fish Audio S2 API Text-to-Speech Endpunkts
Der primäre Fish Audio S2 API-Endpunkt ist POST /v1/tts. Erstellen Sie in Apidog eine neue Anfrage mit dieser URL, setzen Sie die Methode auf POST und verwenden Sie den folgenden JSON-Body:
{
"text": "Hello! This is a test of the Fish Audio S2 API.",
"format": "wav",
"streaming": false,
"temperature": 0.8,
"top_p": 0.8,
"repetition_penalty": 1.1,
"max_new_tokens": 1024
}
Vollständiges Fish Audio S2 API TTS Anforderungsschema:
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
text | String | erforderlich | Zu synthetisierender Text |
format | "wav" | Ausgabe-Audioformat: wav, mp3, pcm | |
chunk_length | Integer | 200 | Synthese-Chunk-Größe (100–300) |
seed | Integer | null | Seed für reproduzierbare Ausgabe festlegen |
streaming | Boolean | false | Audio in Echtzeit-Chunks zurückgeben |
max_new_tokens | Integer | 1024 | Maximale Anzahl der zu generierenden Tokens |
temperature | Float | 0.8 | Sampling-Zufälligkeit (0.1–1.0) |
top_p | Float | 0.8 | Nucleus-Sampling-Schwellenwert (0.1–1.0) |
repetition_penalty | Float | 1.1 | Bestrafung wiederholter Sequenzen (0.9–2.0) |
use_memory_cache | String | "off" | Referenzkodierung im Speicher cachen |
Klicken Sie in Apidog auf Senden. Die Fish Audio S2 API gibt rohe Audio-Bytes zurück. Apidog erkennt automatisch die audio/wav-Antwort und rendert einen Inline-Audioplayer – Sie können die generierte Sprache direkt in der Oberfläche anhören, ohne eine einzige Zeile Client-Code zu schreiben.
Stimmklonierung mit der Fish Audio S2 API
Hochladen eines Referenz-Audios zur Fish Audio S2 API über Apidog
Die Fish Audio S2 API unterstützt Zero-Shot-Stimmklonierung über das Feld references in der TTS-Anfrage. Sie übergeben einen base64-kodierten Audioclip zusammen mit dessen Transkript, und das Modell klont diese Stimme für die Ausgabe.
Laden Sie zuerst eine benannte Referenz mit POST /v1/references/add hoch:
{
"id": "my-voice-clone",
"text": "This is the reference transcription matching the audio.",
"audio": "<base64-encoded-wav-bytes>"
}
Verwenden Sie in Apidog den Body-Typ Binary, um die Audiodatei direkt hochzuladen, oder wechseln Sie zu Form Data, um die Datei- und Textfelder zusammen zu übergeben. Die Fish Audio S2 API gibt zurück:
{
"success": true,
"message": "Reference added successfully",
"reference_id": "my-voice-clone"
}
Referenzieren Sie es nun in Ihren TTS-Aufrufen mit reference_id:
{
"text": "This sentence will be spoken in the cloned voice.",
"reference_id": "my-voice-clone",
"format": "mp3"
}
Das Referenzmanagement-Panel von Apidog (unter Sammlungen) ermöglicht es Ihnen, diese Anfrage als wiederverwendbare Vorlage zu speichern, sodass Sie Stimmen einfach durch Ändern des reference_id-Werts austauschen können – nützlich beim Testen mehrerer geklonter Stimmen mit demselben Skript.
Wie man Fish Audio S2 API-Integrationen mit Unit-Tests testet
Warum Unit-Tests für die Fish Audio S2 API wichtig sind
Eine Fish Audio S2 API-Integration weist mehrere Fehlermodi auf, die ohne automatisierte Unit-Tests unsichtbar sind: eine Referenz-ID, die nicht mehr existiert, ein temperature-Wert außerhalb des Bereichs, eine Streaming-Antwort, die falsch verbraucht wird, oder eine Diskrepanz im Audioformat. Unit-Tests fangen diese Regressionen ab, bevor sie die Benutzer erreichen.
Schreiben von Unit-Tests für die Fish Audio S2 API mit Python
Hier ist eine Python Unit-Test-Suite, die die Kernabläufe der Fish Audio S2 API mit pytest und httpx abdeckt:
import pytest
import httpx
import base64
BASE_URL = "http://127.0.0.1:8080"
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
class TestFishAudioS2API:
"""Unit tests for Fish Audio S2 API endpoints."""
def test_health_check(self):
"""Unit test: Fish Audio S2 API health endpoint returns ok."""
response = httpx.get(f"{BASE_URL}/v1/health", headers=HEADERS)
assert response.status_code == 200
assert response.json()["status"] == "ok"
def test_tts_basic_request(self):
"""Unit test: Fish Audio S2 API TTS returns binary audio."""
payload = {
"text": "Unit test: verifying Fish Audio S2 API TTS output.",
"format": "wav",
"seed": 42, # Fixed seed for deterministic unit test output
}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=60,
)
assert response.status_code == 200
assert response.headers["content-type"] == "audio/wav"
assert len(response.content) > 1000 # Minimum viable audio size
def test_tts_invalid_temperature_raises_error(self):
"""Unit test: Fish Audio S2 API rejects out-of-range temperature."""
payload = {"text": "test", "temperature": 99.0}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=30,
)
assert response.status_code == 422 # Validation error expected
def test_reference_add_and_list(self):
"""Unit test: Fish Audio S2 API reference management endpoints."""
# Add a reference
with open("test_reference.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
add_response = httpx.post(
f"{BASE_URL}/v1/references/add",
json={
"id": "unit-test-voice",
"text": "This is a unit test reference audio.",
"audio": audio_b64,
},
headers=HEADERS,
)
assert add_response.json()["success"] is True
# Verify reference appears in list
list_response = httpx.get(
f"{BASE_URL}/v1/references/list", headers=HEADERS
)
assert "unit-test-voice" in list_response.json()["reference_ids"]
# Cleanup: delete reference after unit test
httpx.request(
"DELETE",
f"{BASE_URL}/v1/references/delete",
json={"reference_id": "unit-test-voice"},
headers=HEADERS,
)
Führen Sie die Unit-Test-Suite aus mit:
pytest test_fish_audio_s2_api.py -v
Ausführen von Fish Audio S2 API Unit-Tests mit Apidog
Neben Python-Unit-Tests verfügt Apidog über eine integrierte Funktion für Test-Szenarien (automatisiertes Testen), die dieselben Fish Audio S2 API-Prüfungen ohne eine lokale Python-Umgebung ausführt. In Apidog:
- Öffnen Sie Ihre Fish Audio S2 API-Sammlung
- Klicken Sie auf Test-Szenarien → Neues Szenario
- Anfragen hinzufügen: Health Check → TTS-Anfrage → Referenz hinzufügen → Referenzliste
- Fügen Sie im Reiter Assertions für die TTS-Anfrage hinzu:
- Antwortstatus =
200 - Antwort-Header
content-typeenthältaudio - Antwortzeit <
30000ms
- Klicken Sie auf Ausführen, um die vollständige Unit-Test-Sequenz auszuführen
Apidog generiert einen Bestanden/Fehlgeschlagen-Bericht für jede Fish Audio S2 API-Assertion, mit Antwortzeiten und Diff-Ansichten. Sie können diesen Bericht exportieren oder so planen, dass er bei einem CI-Trigger ausgeführt wird – Apidog wird damit zum Unit-Test-Runner für Ihre Fish Audio S2 API, ohne dass Sie Boilerplate-Code für ein Test-Framework schreiben müssen.
Erweiterte Funktionen der Fish Audio S2 API
Streaming von Audio von der Fish Audio S2 API
Für Echtzeit-Wiedergabeanwendungen unterstützt die Fish Audio S2 API chunked streaming. Setzen Sie "streaming": true in Ihrem Anfrage-Body:
import httpx
with httpx.stream(
"POST",
"http://127.0.0.1:8080/v1/tts",
json={
"text": "Streaming audio from the Fish Audio S2 API in real time.",
"format": "wav",
"streaming": True,
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=None,
) as response:
with open("streamed_output.wav", "wb") as audio_file:
for chunk in response.iter_bytes(chunk_size=4096):
audio_file.write(chunk)
Die Fish Audio S2 API beginnt mit der Rückgabe von Audio-Bytes, bevor die vollständige Synthese abgeschlossen ist – die Zeit bis zum ersten Audio beträgt ungefähr 100 ms. Dies macht sie für Live-Sprachanwendungen praktikabel, bei denen ein Benutzer sofortiges Feedback erwartet.
Inline-Emotionskontrolle über die Fish Audio S2 API
Die Fish Audio S2 API übergibt Tags für Emotionen in natürlicher Sprache direkt im Feld text:
{
"text": "[whispers] The secret is hidden here. [super happy] I found it!",
"format": "wav"
}
Es ist kein spezieller Parameter erforderlich – das Modell interpretiert die Klammer-Tags als Prosodie-Anweisungen. Gültige Tag-Beispiele aus der Fish Speech-Quelle: [laugh], [cough], [pitch up], [professional broadcast tone], [whisper in small voice].
Fazit
Die Fish Audio S2 API stellt eine wirklich produktionsreife TTS-Engine über eine übersichtliche REST-Schnittstelle bereit. Von der grundlegenden Synthese bis zur Zero-Shot-Stimmklonierung und Echtzeit-Streaming decken die sechs Endpunkte die gesamte Bandbreite der Workflows zur Stimmerzeugung ab, die ein Entwickler benötigt. Die Schlüssel zu einer zuverlässigen Integration sind: das Festlegen der richtigen Sampling-Parameter (temperature, top_p, repetition_penalty), die korrekte Verwaltung des Referenz-Audio-Lebenszyklus und die Pflege einer Unit-Test-Suite, die den Vertrag jedes Endpunkts validiert.
Apidog verkürzt die Lernkurve drastisch. Nutzen Sie es, um Ihre erste Fish Audio S2 API-Anfrage in weniger als zwei Minuten zu senden, binäre Audio-Antworten inline anzuhören, Copy-Paste-Client-Code zu generieren und automatisierte Unit-Tests für jeden Fish Audio S2 API-Endpunkt auszuführen, ohne ein Test-Framework konfigurieren zu müssen. Wenn Sie bereit sind, die API-Spezifikation mit Ihrem Team zu teilen oder die Fish Audio S2 API-Integration für Stakeholder zu dokumentieren, hält die automatisch generierte Dokumentation von Apidog alles synchron.
Laden Sie Apidog kostenlos herunter und importieren Sie die Fish Audio S2 API-Sammlung, um noch heute mit dem Testen zu beginnen.
Häufig gestellte Fragen
Was ist die Fish Audio S2 API? Die Fish Audio S2 API ist die REST-Schnittstelle zu Fish Speech S2-Pro, einem 4-Milliarden-Parameter-Text-to-Speech-Modell, das auf 10 Millionen Stunden Audiomaterial trainiert wurde. Sie unterstützt Stimmklonierung, Streaming, Emotionskontrolle und über 50 Sprachen über HTTP-Endpunkte unter /v1/.
Wie authentifiziere ich mich bei der Fish Audio S2 API? Senden Sie einen Bearer-Token in jedem Anfrage-Header: Authorization: Bearer YOUR_API_KEY. Der API-Schlüssel wird beim Serverstart über das Flag --api-key konfiguriert. Apidog ermöglicht es Ihnen, diesen Token auf Umgebungsebene zu speichern, sodass er automatisch auf alle Fish Audio S2 API-Anfragen angewendet wird.
Kann ich Fish Audio S2 API-Integrationen ohne Code schreiben mit Unit-Tests testen? Ja. Die Test-Szenarien-Funktion von Apidog ermöglicht es Ihnen, Unit-Tests für jeden Fish Audio S2 API-Endpunkt über eine visuelle Oberfläche zu erstellen und auszuführen. Sie definieren Assertions (Statuscode, Antwortzeit, Header-Werte) und Apidog führt diese bei Bedarf oder nach einem CI-Zeitplan aus – kein Test-Framework-Setup erforderlich.
Welche Audioformate unterstützt die Fish Audio S2 API? Die Fish Audio S2 API gibt Audio in den Formaten WAV, MP3 oder PCM zurück. Geben Sie das Format mit dem Feld "format" in Ihrem TTS-Anfrage-Body an. WAV ist der Standard.
Wie funktioniert die Stimmklonierung in der Fish Audio S2 API? Laden Sie einen 10–30 Sekunden langen Referenz-Audioclip und sein Transkript auf POST /v1/references/add hoch. Übergeben Sie dann die Referenz-ID an jede TTS-Anfrage über "reference_id". Die Fish Audio S2 API klont diese Stimme ohne Fine-Tuning oder zusätzliches Modelltraining.
Was ist der Echtzeitfaktor der Fish Audio S2 API? Auf einer einzelnen NVIDIA H200 erreicht die Fish Audio S2 API einen RTF (Real-Time Factor) von 0,195 bei aktiviertem Streaming, was bedeutet, dass sie etwa 5 Sekunden Audio pro Sekunde Rechenzeit generiert. Die Zeit bis zum ersten Audio beträgt ungefähr 100 ms.
Wie teste ich Fish Audio S2 API-Antworten in Apidog? Wenn die Fish Audio S2 API binäres Audio zurückgibt, rendert Apidog automatisch einen Inline-Audioplayer. Sie müssen die Datei nicht lokal speichern, um die Ausgabe zu überprüfen – Sie können zuhören, Antwort-Header prüfen und Assertions hinzufügen, alles vom selben Apidog-Anfragepanel aus.
