Saltar para o conteúdo principal
Esta API fornece conversão de texto em fala, chamada de vozes salvas e clonagem instantânea de voz única, no endereço POST https://api.acedata.cloud/fish/tts。

Processo de solicitação

Para usar a API Fish TTS, primeiro obtenha seu API Token no Console do Ace Data Cloud e guarde-o para uso posterior. Se você ainda não estiver conectado ou registrado, será automaticamente redirecionado para a página de login, onde será convidado a se registrar e entrar; após a conclusão, retornará automaticamente à página atual. Um único API Token pode chamar todos os serviços da plataforma, sem necessidade de solicitar um separadamente para cada serviço. A primeira solicitação concede créditos gratuitos, permitindo uma experiência sem custo; quando os créditos forem insuficientes, você poderá recarregar o saldo geral no console.
📘 Documentação completa: Fish TTS API →

Cabeçalhos da solicitação

Campos do corpo da solicitação

A clonagem única aceita apenas URLs de áudio HTTPS, não aceita MessagePack, Base64, URI de dados ou URLs com credenciais. Recomenda-se que o áudio de referência tenha entre 10 e 270 segundos; o Studio usa uma faixa mais conservadora de 10 a 60 segundos.

Exemplo 1: solicitação mínima (text + format=mp3)

Retorno (testado):
audio_url aponta para a CDN desta plataforma e pode ser baixado diretamente com GET ou reproduzido em <audio>. A resposta final bem-sucedida também retornará cost no nível superior, em que amount são os Credits efetivamente deduzidos nesta solicitação; se houver desconto na conta, list_amount representa os créditos antes do desconto. O link permanece disponível por muito tempo, mas ainda é recomendável manter uma cópia em seu próprio armazenamento.

Exemplo 2: usar o timbre clonado reference_id

A seguir, é usado um timbre público em espanhol na plataforma Fish (o _id pode ser obtido por meio de pesquisa no Fish Model Query):
Retorno (testado):

Exemplo 3: clonagem instantânea de voz única (references)

Coloque o áudio de referência em um endereço HTTPS público e forneça o texto exato realmente falado nele. Esta voz será usada apenas para esta síntese e não criará um modelo de longo prazo:
Resposta de sucesso real:

Exemplo 3: ajustar velocidade / volume (prosody)

Retorno (testado):
speed maior que 1 acelera, menor que 1 desacelera; a unidade de volume é dB, 0 indica sem alteração, números positivos aumentam e números negativos reduzem.

Exemplo 5: alternar modelo + controlar taxa de bits

Alterne para o modelo estável por meio do cabeçalho HTTP model: s1 e adicione mp3_bitrate: 128 no corpo da solicitação para controlar a taxa de bits do MP3:
Retorno (testado):

Exemplo 6: forma de onda bruta PCM

Para cenários que exigem concatenação em tempo real no navegador ou processamento posterior no cliente (mixagem, alteração de velocidade), é recomendado usar pcm:
Retorno (testado):
A extensão do link segue o format da solicitação: mp3 resulta em .mp3, enquanto wav e pcm resultam em .wav (contêiner WAV, PCM de 16 bits).

Retorno de chamada assíncrono (callback_url)

A síntese de texto longo de uma só vez pode levar de mais de dez segundos a dezenas de segundos; se a conexão for interrompida, é necessário tentar novamente. Após passar callback_url no corpo da solicitação, a interface retornará imediatamente {task_id, started_at}. Quando o processamento upstream for realmente concluído, o resultado completo será retornado por POST JSON para essa URL, com o mesmo task_id e o cost de nível superior da cobrança final desta vez no corpo da solicitação. A confirmação inicial da tarefa ainda não concluiu a síntese, portanto não inclui cost.
Retorno imediato (testado):
Posteriormente, callback_url receberá algo como:
Também é possível usar a Fish Tasks API para buscar ativamente o resultado por task_id; o response.cost no registro de estado final é consistente com o cost no retorno de chamada. Consulte essa documentação para mais detalhes.

Tratamento de erros

  • 400 token_mismatched: parâmetros da solicitação ausentes ou inválidos (o mais comum é text estar vazio ou format receber um valor diferente de mp3/wav/pcm).
  • 401 invalid_token: o token de autenticação não existe ou é inválido.
  • 429 too_many_requests: o limite de taxa da conta foi acionado.
  • 500 api_error: erro interno do servidor.
Exemplo de resposta de erro:
Os erros de validação de parâmetros explicarão o campo inválido no campo message, por exemplo:

Conclusão

O custo mínimo para integrar o Fish TTS é: no código existente que chama api.fish.audio/v1/tts, substituir a autenticação pelo token desta plataforma e incluir explicitamente format: "mp3" no corpo da solicitação. Para cenários de texto longo, recomenda-se usar o retorno de chamada assíncrono callback_url; para descobrir o reference_id de vozes clonadas, use em conjunto Fish Model Query e Fish Model Get.