Skip to main content
Ten interfejs oparty jest na oficjalnym API TTS Fish Audio, różni się jedynie metodą autoryzacji (używając tokena z tej platformy) oraz asynchronicznym wywołaniem zwrotnym (rozszerzenie callback_url), struktura ciała żądania jest zgodna z upstream. Adres to POST https://api.acedata.cloud/fish/tts.

Proces aplikacji

Aby korzystać z Fish TTS API, najpierw przejdź do konsoli Ace Data Cloud, aby uzyskać swój token API, zachowaj go na przyszłość. Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, po zakończeniu zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę. Jeden token API wystarczy do wywołania wszystkich usług platformy, nie ma potrzeby składania osobnych wniosków dla każdej usługi. Pierwsze zgłoszenie otrzyma darmowy limit, aby móc skorzystać z bezpłatnej wersji; w przypadku niewystarczającego limitu można doładować saldo ogólne w konsoli.
📘 Pełna dokumentacja: Fish TTS API →

Nagłówki żądania

Pola ciała żądania

Nazewnictwo pól jest całkowicie zgodne z upstream. Z wyjątkiem callback_url, pozostałe pola mają takie same znaczenie i wartości jak w oficjalnej dokumentacji TTS Fish.

Przykład 1: Minimalne żądanie (text + format=mp3)

Odpowiedź (testowana):
audio_url wskazuje na CDN tej platformy, można bezpośrednio pobrać lub odtworzyć w <audio>. Link jest długoterminowy, ale nadal zaleca się przechowywanie kopii w swoim własnym magazynie.

Przykład 2: Użycie klonowanego głosu reference_id

Poniżej użyto jednego z publicznych głosów hiszpańskich na platformie Fish (_id można uzyskać za pomocą Fish Model Query):
Odpowiedź (testowana):

Przykład 3: Regulacja prędkości / głośności (prosody)

Odpowiedź (testowana):
speed większe niż 1 przyspiesza, mniejsze niż 1 spowalnia; volume w dB, 0 oznacza brak zmian, liczby dodatnie to wzmocnienie, liczby ujemne to osłabienie.

Przykład 4: Zmiana modelu + kontrola bitrate

Przez nagłówek HTTP model: s1 przełączamy się na model stabilny, dodajemy mp3_bitrate: 128 w ciele żądania, aby kontrolować bitrate MP3:
Zwróć (testowane):

Przykład 5: PCM surowa fala

W przypadku, gdy potrzebujesz na bieżąco łączyć w przeglądarce lub przeprowadzać dalsze przetwarzanie (miksowanie, zmiana prędkości) po stronie klienta, zaleca się użycie pcm:
Zwróć (testowane):
Rozszerzenie linku podąża za format w żądaniu: mp3 daje .mp3, wav i pcm daje .wav (kontener WAV, 16 bit PCM).

Asynchroniczny callback (callback_url)

Dla długich tekstów, jednorazowa synteza może zająć od kilkunastu do kilkudziesięciu sekund, jeśli połączenie zostanie przerwane, należy spróbować ponownie. Po przesłaniu callback_url w ciele żądania, interfejs natychmiast zwróci {task_id, started_at}, a gdy zadanie zostanie zakończone, pełny wynik zostanie zwrócony w formacie POST JSON na ten URL, z tym samym task_id w ciele żądania.
Natychmiastowa odpowiedź (testowane):
Później callback_url otrzyma coś w stylu:
Można również użyć Fish Tasks API do aktywnego pobierania wyników według task_id, szczegóły w tym dokumencie.

Obsługa błędów

  • 400 token_mismatched: Brakujące lub nieprawidłowe parametry żądania (najczęściej text jest pusty lub format ma wartość inną niż mp3/wav/pcm).
  • 401 invalid_token: Token autoryzacyjny nie istnieje lub jest nieprawidłowy.
  • 429 too_many_requests: Przekroczenie limitu szybkości konta.
  • 500 api_error: Błąd wewnętrzny serwera.
Przykład odpowiedzi błędu:
Błędy walidacji parametrów umieszczają oryginalny komunikat błędu pydantic w polu message, co ułatwia zlokalizowanie, który parametr jest nieprawidłowy, na przykład:

Wnioski

Minimalny koszt integracji z Fish TTS to: w istniejącym kodzie wywołującym api.fish.audio/v1/tts zamienić autoryzację na token platformy i w ciele żądania jawnie dodać format: "mp3". W przypadku długich tekstów zaleca się użycie asynchronicznego callbacku callback_url; w celu odkrycia reference_id dla klonowania głosu, należy skorzystać z Fish Model Query oraz Fish Model Get.