Saltar para o conteúdo principal
Este documento apresentará uma descrição da integração da API Fish Voices Generation, que permite criar sua própria voz através do link de áudio inserido.

Processo de Solicitação

Para usar a API, você precisa primeiro acessar a página correspondente da Fish Voices Generation API para solicitar o serviço correspondente. Após entrar na página, clique no botão “Acquire”, conforme mostrado na imagem: Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, convidando-o a se registrar e fazer login. Após o registro e login, você será redirecionado de volta para a página atual. Na primeira solicitação, haverá um crédito gratuito disponível, permitindo o uso gratuito da API.

Uso Básico

Primeiro, entenda a forma básica de uso, que é inserir o link de áudio da voz voice_url, e você obterá o resultado processado. O conteúdo específico é o seguinte:

Podemos ver que aqui configuramos os Headers da Requisição, incluindo:
  • accept: o formato de resposta que você deseja receber, aqui preenchido como application/json, ou seja, formato JSON.
  • authorization: a chave para chamar a API, que pode ser selecionada diretamente após a solicitação.
Além disso, configuramos o Corpo da Requisição, incluindo:
  • voice_url: o link de áudio da voz carregada.
  • title: a informação do título da voz.
  • image_urls: a imagem de capa da voz.
  • description: a informação de descrição da voz.
  • callback_url: a URL que precisa receber o resultado.
Após a seleção, você pode notar que o código correspondente também foi gerado à direita, conforme mostrado na imagem:

Clique no botão “Try” para realizar o teste, como mostrado na imagem acima, e aqui obtivemos o seguinte resultado:
{
  "success": true,
  "task_id": "b01db503-dd9e-4f92-861a-344f14756217",
  "trace_id": "8731a2f1-7736-4a47-98e7-da942f9346a7",
  "data": {
    "_id": "d5d21261512b4852b9ccd709facf93f3",
    "type": "tts",
    "title": "test",
    "description": "test",
    "cover_image": "coverimage/d5d21261512b4852b9ccd709facf93f3",
    "train_mode": "fast",
    "state": "trained",
    "tags": [],
    "samples": [
      {
        "title": "Default Sample",
        "text": "Através de observações prolongadas, descobriu-se que os peixes no ecossistema de recifes de corais possuem padrões complexos de comportamento em grupo. Eles utilizam mudanças de cor e posturas de natação específicas para transmitir informações, e esse sistema de comunicação não verbal refinado demonstra a sabedoria adaptativa dos organismos marinhos.",
        "task_id": "4ae961828fc94c07b2103dc039a8466b",
        "audio": "task/4ae961828fc94c07b2103dc039a8466b.mp3"
      }
    ],
    "created_at": "2025-09-21T07:29:41.058506Z",
    "updated_at": "2025-09-21T07:29:41.057917Z",
    "languages": [
      "zh"
    ],
    "visibility": "public",
    "lock_visibility": false,
    "default_text": "Através de observações prolongadas, descobriu-se que os peixes no ecossistema de recifes de corais possuem padrões complexos de comportamento em grupo. Eles utilizam mudanças de cor e posturas de natação específicas para transmitir informações, e esse sistema de comunicação não verbal refinado demonstra a sabedoria adaptativa dos organismos marinhos.",
    "like_count": 0,
    "mark_count": 0,
    "shared_count": 0,
    "task_count": 0,
    "unliked": false,
    "liked": false,
    "marked": false,
    "author": {
      "_id": "7ecad23df62a4174acd6a2a6cb5201ee",
      "nickname": "Matthew Garcia",
      "avatar": "avatars/7ecad23df62a4174acd6a2a6cb5201ee.jpg"
    }
  }
}
O resultado retornado possui vários campos, descritos a seguir:
  • success, o estado da tarefa de criação da voz neste momento.
    • data, o resultado da tarefa musical
      • _id, o ID da tarefa de geração da voz, que será usado posteriormente para clonar a criação da voz.
      • title, o título da voz.
      • image_url, a informação da capa da voz.
      • description, a informação de descrição da voz.
      • train_mode, o modo utilizado para a tarefa de geração da voz.
      • tags, o estilo da voz.
      • default_text, a informação do texto da voz gerada neste momento.
Podemos ver que obtivemos informações satisfatórias sobre a voz, e só precisamos realizar a tarefa de clonagem da voz com base no data do id. Além disso, se você quiser gerar o código de integração correspondente, pode copiá-lo diretamente, como o código CURL abaixo:
curl -X POST 'https://api.acedata.cloud/fish/voices' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "voice_url": "https://platform.r2.fish.audio/task/604133d7b3c7430385382470f67770e8.mp3",
  "title": "test",
  "description": "test"
}'

Callback Assíncrono

Como o tempo de geração da API Fish Voices Generation é relativamente longo, cerca de 1-2 minutos, se a API não responder por um longo período, a requisição HTTP manterá a conexão, resultando em consumo adicional de recursos do sistema. Portanto, esta API também oferece suporte a callbacks assíncronos. O fluxo geral é: quando o cliente inicia a solicitação, deve especificar um campo callback_url adicional. Após o cliente fazer a solicitação à API, a API retornará imediatamente um resultado, contendo um campo de informação task_id, representando o ID da tarefa atual. Quando a tarefa for concluída, o resultado da tarefa gerada será enviado para o callback_url especificado pelo cliente no formato POST JSON, que também incluirá o campo task_id, permitindo que o resultado da tarefa seja associado pelo ID. Abaixo, vamos entender como operar isso através de um exemplo. Primeiro, o callback Webhook é um serviço que pode receber requisições HTTP, e os desenvolvedores devem substituí-lo pela URL do servidor HTTP que construíram. Para facilitar a demonstração, usaremos um site de exemplo de Webhook público https://webhook.site/, ao abrir este site, você obterá uma URL de Webhook, conforme mostrado na imagem: Copie esta URL, que pode ser usada como Webhook, o exemplo aqui é https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34. Em seguida, podemos definir o campo callback_url para a URL do Webhook acima, enquanto preenchemos os parâmetros correspondentes, conforme mostrado na imagem:

Clique em executar, e você verá que receberá imediatamente um resultado, como abaixo:
{
  "task_id": "9f626a13-96ec-4dec-8846-dc5aab7362a8"
}
稍等片刻,我们可以在 https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34 上观察到生成任务的结果,如图所示: 内容如下:
{
    "success": true,
    "task_id": "9f626a13-96ec-4dec-8846-dc5aab7362a8",
    "trace_id": "3fcdea82-7c1c-4a0a-b8d8-f7616f722d8f",
    "data": {
        "_id": "fa75e7c3f02f42e79a6aa622b6cf075e",
        "type": "tts",
        "title": "teste",
        "description": "teste",
        "cover_image": "coverimage/fa75e7c3f02f42e79a6aa622b6cf075e",
        "train_mode": "rápido",
        "state": "treinado",
        "tags": [],
        "samples": [
            {
                "title": "Amostra Padrão",
                "text": "Os golfinhos navegam no oceano através de um sistema de ecolocalização, essa tecnologia de ondas sonoras precisa permite que eles detectem o ambiente ao redor, procurem comida e evitem perigos. Isso não apenas demonstra a capacidade de adaptação dos seres marinhos, mas também revela o maravilhoso design da natureza.",
                "task_id": "68cdda24d26e4794bae177e20da740db",
                "audio": "task/68cdda24d26e4794bae177e20da740db.mp3"
            }
        ],
        "created_at": "2025-09-21T07:36:20.200865Z",
        "updated_at": "2025-09-21T07:36:20.200353Z",
        "languages": [
            "zh"
        ],
        "visibility": "público",
        "lock_visibility": false,
        "default_text": "Os golfinhos navegam no oceano através de um sistema de ecolocalização, essa tecnologia de ondas sonoras precisa permite que eles detectem o ambiente ao redor, procurem comida e evitem perigos. Isso não apenas demonstra a capacidade de adaptação dos seres marinhos, mas também revela o maravilhoso design da natureza.",
        "like_count": 0,
        "mark_count": 0,
        "shared_count": 0,
        "task_count": 0,
        "unliked": false,
        "liked": false,
        "marked": false,
        "author": {
            "_id": "7ecad23df62a4174acd6a2a6cb5201ee",
            "nickname": "Matthew Garcia",
            "avatar": "avatars/7ecad23df62a4174acd6a2a6cb5201ee.jpg"
        }
    }
}
可以看到结果中有一个 task_id 字段,其他的字段都和上文类似,通过该字段即可实现任务的关联。

错误处理

在调用 API 时,如果遇到错误,API 会返回相应的错误代码和信息。例如:
  • 400 token_mismatched:Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
  • 400 api_not_implemented:Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
  • 401 invalid_token:Não autorizado, token de autorização inválido ou ausente.
  • 429 too_many_requests:Muitas solicitações, você excedeu o limite de taxa.
  • 500 api_error:Erro interno do servidor, algo deu errado no servidor.

错误响应示例

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "falha ao buscar"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

结论

通过本文档,您已经了解了如何使用 Fish Voices Generation API 可通过输入音色的音频连接来创建自己的音色。希望本文档能帮助您更好地对接和使用该 API。如有任何问题,请随时联系我们的技术支持团队。