Skip to main content
Questo API si basa su Fish Audio Official TTS API, con differenze solo nel metodo di autenticazione (utilizzando il token di questa piattaforma) e nel callback asincrono (estensione callback_url), la struttura del corpo della richiesta è la stessa dell’upstream. L’indirizzo è POST https://api.acedata.cloud/fish/tts.

Processo di Richiesta

Per utilizzare Fish TTS API, prima vai al Ace Data Cloud Console per ottenere il tuo API Token, da tenere come riserva. Se non hai ancora effettuato il login o registrato, verrai automaticamente reindirizzato alla pagina di login che ti invita a registrarti e accedere, una volta completato verrai riportato automaticamente alla pagina corrente. Un API Token è sufficiente per accedere a tutti i servizi della piattaforma, non è necessario richiederne uno separato per ogni servizio. La prima richiesta ti darà un credito gratuito, per un’esperienza gratuita; se il credito è insufficiente, puoi ricaricare il saldo generale nella console.
📘 Documentazione Completa: Fish TTS API →

Intestazione della Richiesta

Campi del Corpo della Richiesta

La denominazione dei campi è completamente identica all’upstream. Ad eccezione di callback_url, gli altri campi hanno significato e valori come indicato nella documentazione ufficiale TTS di Fish.

Esempio 1: Richiesta Minima (text + format=mp3)

Risposta (testata):
audio_url punta al CDN di questa piattaforma, può essere scaricato direttamente con GET o riprodotto in <audio>. Il link è disponibile a lungo termine, ma si consiglia comunque di conservarne una copia nel proprio storage.

Esempio 2: Utilizzo del timbro vocale clone reference_id

Di seguito viene utilizzato un timbro vocale spagnolo pubblico sulla piattaforma Fish (_id può essere recuperato tramite Fish Model Query):
Risposta (testata):

Esempio 3: Regolazione della Velocità / Volume (prosody)

Risposta (testata):
speed maggiore di 1 accelera, minore di 1 rallenta; volume in dB, 0 indica nessuna variazione, numeri positivi guadagno, numeri negativi attenuazione.

Esempio 4: Cambio Modello + Controllo Bitrate

Attraverso l’intestazione HTTP model: s1 si passa al modello stabile, aggiungendo mp3_bitrate: 128 nel corpo della richiesta per controllare il bitrate MP3:
Risposta (testata):

Esempio 5: Forma d’onda PCM grezza

Per scenari in cui è necessario effettuare un’unione in tempo reale nel browser, o per elaborazioni successive (mixaggio, variazione della velocità) sul client, si consiglia di utilizzare pcm:
Risposta (testata):
L’estensione del link segue il format nella richiesta: mp3 ottiene .mp3, wav e pcm ottengono .wav (contenitore WAV, PCM a 16 bit).

Callback asincrono (callback_url)

La sintesi di testi lunghi può richiedere da alcuni secondi a decine di secondi, se la connessione si interrompe è necessario riprovare. Dopo aver passato callback_url nel corpo della richiesta, l’API restituirà immediatamente {task_id, started_at}, e quando il processo è completato, il risultato completo verrà richiamato a quell’URL in formato JSON POST, includendo lo stesso task_id.
Restituzione immediata (testata):
Successivamente, callback_url riceverà un messaggio simile a:
È anche possibile utilizzare Fish Tasks API per richiamare attivamente i risultati in base a task_id, vedere la documentazione per maggiori dettagli.

Gestione degli errori

  • 400 token_mismatched: parametri di richiesta mancanti o non validi (il più comune è text vuoto, o format con valori diversi da mp3/wav/pcm).
  • 401 invalid_token: il token di autenticazione non esiste o è non valido.
  • 429 too_many_requests: attivazione del limite di velocità dell’account.
  • 500 api_error: errore interno del server.
Esempio di risposta di errore:
Gli errori di convalida dei parametri includeranno il messaggio di errore originale di pydantic nel campo message, per facilitare l’individuazione del campo non valido, ad esempio:

Conclusione

Il costo minimo per integrare Fish TTS è: sostituire il token di autenticazione nel codice esistente che chiama api.fish.audio/v1/tts con il token della piattaforma, e includere esplicitamente nel corpo della richiesta format: "mp3". Per scenari di testo lungo, si consiglia di utilizzare callback_url per il callback asincrono; per la scoperta del reference_id del timbro vocale, si prega di utilizzare Fish Model Query e Fish Model Get.