Skip to main content
Esta interfaz se basa en la API oficial de TTS de Fish Audio, con diferencias únicamente en el método de autenticación (uso del token de esta plataforma) y la devolución asíncrona (extensión de callback_url), la estructura del cuerpo de la solicitud es la misma que la del upstream. La dirección es POST https://api.acedata.cloud/fish/tts.

Proceso de Solicitud

Para usar la API de Fish TTS, primero dirígete a la consola de Ace Data Cloud para obtener tu API Token, guárdalo para uso futuro. Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invitará a registrarte e iniciar sesión, y una vez completado, volverás automáticamente a la página actual. Un API Token es suficiente para acceder a todos los servicios de la plataforma, no es necesario solicitar uno por cada servicio. La primera solicitud incluirá un crédito gratuito para que puedas probarlo; si el crédito es insuficiente, puedes recargar el saldo general en la consola.
📘 Documentación completa: Fish TTS API →

Encabezados de Solicitud

Campos del Cuerpo de Solicitud

La nomenclatura de los campos es completamente consistente con el upstream. A excepción de callback_url, los demás campos tienen el mismo significado y valores que se pueden consultar en la documentación oficial de TTS de Fish.

Ejemplo 1: Solicitud Mínima (text + format=mp3)

Respuesta (medido):
audio_url apunta al CDN de esta plataforma, se puede descargar directamente con GET o reproducir en <audio>. El enlace es de uso prolongado, pero se recomienda mantener una copia en tu propio almacenamiento.

Ejemplo 2: Usando el tono de voz clonado reference_id

A continuación, se utiliza un tono de voz en español público de la plataforma Fish (_id se puede recuperar a través de Consulta de Modelos de Fish):
Respuesta (medido):

Ejemplo 3: Ajustar velocidad / volumen (prosody)

Respuesta (medido):
speed mayor que 1 acelera, menor que 1 desacelera; volume en dB, 0 significa sin cambio, números positivos son ganancia, negativos son atenuación.

Ejemplo 4: Cambiar modelo + controlar tasa de bits

A través del encabezado HTTP model: s1 se cambia al modelo estable, añadiendo mp3_bitrate: 128 en el cuerpo de la solicitud para controlar la tasa de bits de MP3:
respuesta (medido):

Ejemplo 5: Forma de onda PCM cruda

Para escenarios donde se necesita hacer una concatenación en tiempo real en el navegador, o realizar un procesamiento posterior en el cliente (mezcla, cambio de velocidad), se recomienda usar pcm:
respuesta (medido):
La extensión del enlace sigue el format de la solicitud: mp3 obtiene .mp3, wav y pcm obtienen .wav (contenedor WAV, PCM de 16 bits).

Callback asíncrono (callback_url)

La síntesis de texto largo puede tardar de varios segundos a decenas de segundos, si la conexión se interrumpe, es necesario reintentar. Al enviar callback_url en el cuerpo de la solicitud, la interfaz devolverá inmediatamente {task_id, started_at}, y cuando se complete realmente, el resultado completo se enviará como un JSON POST a esa URL, incluyendo el mismo task_id en el cuerpo de la solicitud.
respuesta inmediata (medido):
Más tarde, callback_url recibirá algo como:
También se puede usar Fish Tasks API para obtener resultados activamente por task_id, consulte ese documento para más detalles.

Manejo de errores

  • 400 token_mismatched: Parámetros de solicitud faltantes o no válidos (lo más común es que text esté vacío, o que format tenga un valor diferente a mp3/wav/pcm).
  • 401 invalid_token: El token de autenticación no existe o es inválido.
  • 429 too_many_requests: Se ha activado el límite de velocidad de la cuenta.
  • 500 api_error: Error interno del servidor.
Ejemplo de respuesta de error:
Los errores de validación de parámetros incluirán el mensaje de error original de pydantic en el campo message, facilitando la identificación de qué campo es inválido, por ejemplo:

Conclusión

El costo mínimo para integrar Fish TTS es: en el código que ya llama a api.fish.audio/v1/tts, cambiar la autenticación por el token de esta plataforma y en el cuerpo de la solicitud incluir explícitamente format: "mp3". Para escenarios de texto largo, se recomienda usar callback_url para la devolución asíncrona; para el descubrimiento de reference_id de la clonación de voces, consulte Fish Model Query y Fish Model Get.