La API Fish Audio S2 es una API REST de texto a voz de nivel de producción impulsada por un modelo de 4 mil millones de parámetros entrenado con 10 millones de horas de audio. Soporta clonación de voz, transmisión (streaming) y más de 50 idiomas. Para usar la API Fish Audio S2 de manera eficiente, incluyendo el envío de solicitudes, la gestión de referencias y la ejecución de pruebas unitarias, Apidog es la forma más rápida de explorar, documentar y validar cada endpoint.
Introducción
La voz generada por IA ha cruzado un umbral. Los modelos TTS modernos ya no suenan como robots, susurran, ríen y cambian el tono a mitad de frase. La API Fish Audio S2 se encuentra a la vanguardia de este cambio: un modelo de 4 mil millones de parámetros entrenado con más de 10 millones de horas de audio multilingüe, capaz de producir un discurso indistinguible de una grabación humana.
Ya sea que estés construyendo una herramienta de automatización de podcasts, un asistente de voz interactivo o un sistema de doblaje en tiempo real, integrar la API Fish Audio S2 en tu stack requiere más que una simple solicitud POST. Necesitas comprender la autenticación, la gestión de audio de referencia, el comportamiento de la transmisión (streaming) y, fundamentalmente, cómo escribir pruebas unitarias fiables para que tu integración no falle silenciosamente en producción.
💡Antes de tu primera llamada a la API Fish Audio S2, descarga Apidog gratis. Prueba visualmente etiquetas de emoción, fragmentos de streaming, cargas útiles de clonación de voz y respuestas de audio binarias en segundos, sin necesidad de código. Simula, valida y escucha en línea para que tu integración TTS funcione perfectamente desde el primer día.
¿Qué es la API Fish Audio S2?
La API Fish Audio S2 es la interfaz HTTP de Fish Speech S2-Pro, un sistema TTS de código abierto basado en una arquitectura Dual-Autoregresiva (Dual-AR). El modelo separa la generación semántica (4 mil millones de parámetros, AR lenta a lo largo del eje del tiempo) de la generación de codebook residual (400 millones de parámetros, AR rápida a lo largo del eje de profundidad), permitiendo síntesis de alta calidad con un factor en tiempo real de 0.195 en una sola NVIDIA H200.
Principales capacidades de la API Fish Audio S2:
| Característica | Detalle |
|---|---|
| Idiomas | ~50 (Inglés, chino, japonés, coreano, árabe, francés, alemán y más) |
| Clonación de voz | Audio de referencia de 10-30 segundos, no requiere ajuste fino |
| Control de emoción en línea | Etiquetas de lenguaje natural: [laugh], [whispers], [super happy]
|
| Generación multi-locutor | Soporte nativo para el token <|speaker:i|>
|
| Transmisión (Streaming) | Audio en bloques en tiempo real con "streaming": true
|
| Formatos de salida | WAV, MP3, PCM |
| Autenticación | Token de portador (Bearer token) (Authorization: Bearer YOUR_API_KEY) |
La URL base de la API Fish Audio S2 tras el despliegue local es http://127.0.0.1:8080. Todos los endpoints están bajo /v1/.
Primeros pasos con la API Fish Audio S2 y Apidog
Requisitos previos
Antes de tu primera llamada, debes tener:
- Un servidor Fish Speech S2-Pro desplegado.
- Un cliente API capaz de manejar respuestas de audio binarias (como Apidog).
Inicia el servidor:
python tools/api_server.py \
--llama-checkpoint-path checkpoints/s2-pro \
--decoder-checkpoint-path checkpoints/s2-pro/codec.pth \
--listen 0.0.0.0:8080 \
--compile \
--half \
--api-key YOUR_API_KEY \
--workers 4
-
--compile: activa torch.compile para reducir la latencia de inferencia (~10x), con coste de calentamiento inicial. -
--half: habilita FP16 para menor uso de memoria GPU.
Verifica el servidor con:
curl http://127.0.0.1:8080/v1/health
# {"status":"ok"}
Configuración en Apidog
Descarga Apidog gratis y crea un proyecto HTTP nuevo. Añade http://127.0.0.1:8080 como URL base en Entornos. Luego, define un encabezado global:
Authorization: Bearer YOUR_API_KEY
Apidog aplicará este token automáticamente en cada solicitud, útil si manejas entornos múltiples (desarrollo, staging, producción).
Realiza tu primera solicitud TTS en Apidog
Probar el endpoint de texto a voz
El endpoint principal es POST /v1/tts. En Apidog, crea una nueva solicitud POST con este cuerpo JSON:
{
"text": "Hello! This is a test of the Fish Audio S2 API.",
"format": "wav",
"streaming": false,
"temperature": 0.8,
"top_p": 0.8,
"repetition_penalty": 1.1,
"max_new_tokens": 1024
}
Esquema completo de la solicitud:
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
text |
string | obligatorio | Texto a sintetizar |
format |
string | wav |
Formato de salida: wav, mp3, pcm
|
chunk_length |
int | 200 | Tamaño del bloque (100–300) |
seed |
int | null | Semilla para salida reproducible |
streaming |
bool | false | Audio en bloques en tiempo real |
max_new_tokens |
int | 1024 | Tokens máximos a generar |
temperature |
float | 0.8 | Aleatoriedad del muestreo (0.1–1.0) |
top_p |
float | 0.8 | Umbral de muestreo de núcleo (0.1–1.0) |
repetition_penalty |
float | 1.1 | Penalizar repeticiones (0.9–2.0) |
use_memory_cache |
string | off |
Caché en memoria para codificación de referencia |
Haz clic en Enviar en Apidog. Si la respuesta es audio/wav, Apidog mostrará un reproductor de audio en línea para escuchar el resultado sin escribir código.
Clonación de voz con la API Fish Audio S2
Subir un audio de referencia
La clonación de voz se realiza vía el campo references en TTS. Sube un clip en base64 con transcripción usando POST /v1/references/add:
{
"id": "my-voice-clone",
"text": "Esta es la transcripción de referencia que coincide con el audio.",
"audio": "<base64-encoded-wav-bytes>"
}
En Apidog, usa tipo de cuerpo Binary para subir el archivo, o Form Data para combinar archivo y texto. La respuesta debe ser:
{
"success": true,
"message": "Referencia añadida exitosamente",
"reference_id": "my-voice-clone"
}
Luego, referencia este ID en tu llamada TTS:
{
"text": "Esta frase será pronunciada con la voz clonada.",
"reference_id": "my-voice-clone",
"format": "mp3"
}
En el panel de Gestión de referencias de Apidog puedes guardar esta solicitud como plantilla y cambiar el reference_id para probar múltiples voces.
Cómo realizar pruebas unitarias
Importancia de las pruebas unitarias
La integración puede fallar por IDs de referencia inexistentes, parámetros fuera de rango, errores de streaming o formato de audio incorrecto. Las pruebas unitarias permiten detectar estos problemas antes de llegar a producción.
Pruebas unitarias con Python
Ejemplo de suite usando pytest y httpx:
import pytest
import httpx
import base64
BASE_URL = "http://127.0.0.1:8080"
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
class TestFishAudioS2API:
def test_health_check(self):
response = httpx.get(f"{BASE_URL}/v1/health", headers=HEADERS)
assert response.status_code == 200
assert response.json()["status"] == "ok"
def test_tts_basic_request(self):
payload = {
"text": "Unit test: verifying Fish Audio S2 API TTS output.",
"format": "wav",
"seed": 42,
}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=60,
)
assert response.status_code == 200
assert response.headers["content-type"] == "audio/wav"
assert len(response.content) > 1000
def test_tts_invalid_temperature_raises_error(self):
payload = {"text": "test", "temperature": 99.0}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=30,
)
assert response.status_code == 422
def test_reference_add_and_list(self):
with open("test_reference.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
add_response = httpx.post(
f"{BASE_URL}/v1/references/add",
json={
"id": "unit-test-voice",
"text": "This is a unit test reference audio.",
"audio": audio_b64,
},
headers=HEADERS,
)
assert add_response.json()["success"] is True
list_response = httpx.get(
f"{BASE_URL}/v1/references/list", headers=HEADERS
)
assert "unit-test-voice" in list_response.json()["reference_ids"]
httpx.request(
"DELETE",
f"{BASE_URL}/v1/references/delete",
json={"reference_id": "unit-test-voice"},
headers=HEADERS,
)
Ejecuta las pruebas con:
pytest test_fish_audio_s2_api.py -v
Pruebas automatizadas en Apidog
Apidog permite crear Escenarios de prueba visuales:
- Abre tu colección de la API Fish Audio S2.
- Haz clic en Escenarios de prueba → Nuevo escenario.
- Añade solicitudes: comprobación de estado, TTS, añadir referencia, listar referencias.
- En Asertos para TTS, añade:
- Estado de respuesta =
200 - El encabezado
content-typecontieneaudio - Tiempo de respuesta <
30000ms
- Estado de respuesta =
- Haz clic en Ejecutar para correr toda la secuencia.
Apidog genera reportes de éxito/fallo y puede integrar la ejecución en tu CI.
Características avanzadas
Transmisión (Streaming) de audio
Para reproducir audio en tiempo real, usa "streaming": true en el cuerpo de la solicitud. Ejemplo en Python:
import httpx
with httpx.stream(
"POST",
"http://127.0.0.1:8080/v1/tts",
json={
"text": "Streaming de audio desde la API Fish Audio S2 en tiempo real.",
"format": "wav",
"streaming": True,
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=None,
) as response:
with open("streamed_output.wav", "wb") as audio_file:
for chunk in response.iter_bytes(chunk_size=4096):
audio_file.write(chunk)
La API devuelve audio casi inmediato (primeros bytes en ~100 ms), ideal para aplicaciones de voz en vivo.
Control de emoción en línea
Pasa etiquetas de emoción directamente en el campo text:
{
"text": "[whispers] El secreto está escondido aquí. [super happy] ¡Lo encontré!",
"format": "wav"
}
No necesitas parámetros extra; el modelo interpreta las etiquetas entre corchetes como instrucciones de prosodia. Ejemplos: [laugh], [cough], [pitch up], [professional broadcast tone], [whisper in small voice].
Conclusión
La API Fish Audio S2 expone un motor TTS de grado de producción vía REST. Desde síntesis básica hasta clonación de voz y streaming en tiempo real, sus endpoints cubren todos los flujos de generación de voz necesarios para desarrolladores. Para integrar de forma robusta, ajusta los parámetros de muestreo (temperature, top_p, repetition_penalty), gestiona el ciclo de vida de audio de referencia y mantén una suite de pruebas unitarias que valide los contratos de cada endpoint.
Apidog reduce drásticamente la curva de aprendizaje: envía tu primera solicitud en minutos, prueba audio binario en línea, genera código cliente, y ejecuta pruebas automatizadas sin configurar frameworks adicionales. Además, su documentación autogenerada mantiene todo sincronizado para compartir y documentar tu integración.
Descarga Apidog gratis e importa la colección de la API Fish Audio S2 para empezar a probar hoy mismo.
Preguntas frecuentes
¿Qué es la API Fish Audio S2? Es la interfaz REST de Fish Speech S2-Pro, un modelo TTS de 4 mil millones de parámetros entrenado con 10 millones de horas de audio. Ofrece clonación de voz, streaming, control de emociones y soporte multilingüe vía endpoints HTTP bajo /v1/.
¿Cómo me autentico? Usa el encabezado Authorization: Bearer YOUR_API_KEY en cada solicitud. La clave API se define al iniciar el servidor (--api-key). En Apidog, almacena el token a nivel de entorno para autocompletar todas las solicitudes.
¿Puedo hacer pruebas unitarias sin programar? Sí. Los Escenarios de prueba de Apidog te permiten construir y ejecutar pruebas unitarias visuales sobre cualquier endpoint. Define aserciones y ejecútalas bajo demanda o con CI, sin frameworks de testing adicionales.
¿Qué formatos de audio soporta? WAV, MP3 o PCM. Especifica el formato con el campo "format" en TTS; WAV es el predeterminado.
¿Cómo funciona la clonación de voz? Sube un audio de referencia (10–30s) y su transcripción a POST /v1/references/add. Luego, usa el reference_id en TTS. No requiere ajuste fino ni entrenamiento extra.
¿Cuál es el factor en tiempo real? En una NVIDIA H200, la API logra un RTF de 0.195 con streaming, es decir, genera ~5 segundos de audio por cada segundo de cómputo. Primer audio en ~100 ms.
¿Cómo pruebo respuestas en Apidog? Al recibir audio binario, Apidog muestra un reproductor de audio en línea. No necesitas guardar archivos localmente; puedes escuchar y añadir aserciones directamente en la interfaz.
Top comments (0)