DEV Community

Cover image for Cómo Usar la API de Fish Audio S2: Guía Completa con Apidog
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo Usar la API de Fish Audio S2: Guía Completa con Apidog

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.

Prueba Apidog hoy mismo

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:

  1. Abre tu colección de la API Fish Audio S2.
  2. Haz clic en Escenarios de pruebaNuevo escenario.
  3. Añade solicitudes: comprobación de estado, TTS, añadir referencia, listar referencias.
  4. En Asertos para TTS, añade:
    • Estado de respuesta = 200
    • El encabezado content-type contiene audio
    • Tiempo de respuesta < 30000ms
  5. 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)