> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-mintlify-f533effe.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Texto a voz

> Genera audio hablado a partir de texto con los modelos de texto a voz de Venice y /audio/speech.

El texto a voz convierte texto escrito en audio hablado. Elige un modelo de TTS, selecciona una voz admitida por ese modelo, envía el texto a `/audio/speech` y guarda la respuesta binaria de audio.

Usa esta guía para la generación de voz estándar. Si quieres crear voz a partir de una voz de referencia personalizada, consulta [Clonación de voz](/guides/media/voice-cloning).

## Uso básico

<CodeGroup>
  ```python Python theme={null}
  import os
  from pathlib import Path

  import requests

  response = requests.post(
      "https://api.venice.ai/api/v1/audio/speech",
      headers={
          "Authorization": f"Bearer {os.environ['VENICE_API_KEY']}",
          "Content-Type": "application/json",
      },
      json={
          "model": "tts-kokoro",
          "voice": "af_sky",
          "input": "Hello, welcome to Venice Voice.",
      },
  )

  response.raise_for_status()
  Path("speech.mp3").write_bytes(response.content)
  ```

  ```javascript Node.js theme={null}
  import { writeFile } from "node:fs/promises";

  const response = await fetch("https://api.venice.ai/api/v1/audio/speech", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VENICE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "tts-kokoro",
      voice: "af_sky",
      input: "Hello, welcome to Venice Voice.",
    }),
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  await writeFile("speech.mp3", Buffer.from(await response.arrayBuffer()));
  ```

  ```bash cURL theme={null}
  curl https://api.venice.ai/api/v1/audio/speech \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "tts-kokoro",
      "voice": "af_sky",
      "input": "Hello, welcome to Venice Voice."
    }' \
    --output speech.mp3
  ```
</CodeGroup>

El cuerpo de la respuesta correcta es audio binario en el formato predeterminado del modelo, no JSON. Actualmente `tts-kokoro` usa MP3 de forma predeterminada.

## Elige un modelo y una voz

Las voces son específicas de cada modelo. El valor de `voice` debe ser válido para el `model` que elijas.

Usa la página de [Modelos de texto a voz](/models/text-to-speech) para explorar los modelos y voces disponibles. El selector de voces muestra los IDs de voz exactos que debes pasar en tu solicitud.

<Note>
  Los IDs de voz distinguen entre mayúsculas y minúsculas. Si cambias de modelo TTS, actualiza el valor de `voice` al mismo tiempo.
</Note>

## Estructura de la solicitud

| Parámetro         | Tipo   | Requerido | Descripción                                                                                                                                                 |
| ----------------- | ------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | string | Sí        | ID del modelo de texto a voz.                                                                                                                               |
| `voice`           | string | Sí        | ID de voz admitido por el modelo seleccionado.                                                                                                              |
| `input`           | string | Sí        | Texto a sintetizar, hasta 4096 caracteres.                                                                                                                  |
| `response_format` | string | No        | Formato de salida solicitado: `mp3`, `opus`, `aac`, `flac`, `wav` o `pcm`. Los formatos admitidos y el valor predeterminado son específicos de cada modelo. |

## Formato de salida

Puedes omitir `response_format` para usar el valor predeterminado del modelo. Antes de elegir una extensión de archivo o anular el formato, consulta la API de Modelos para obtener los valores actuales de `default_format` y `supported_formats` del modelo:

```bash theme={null}
curl "https://api.venice.ai/api/v1/models?type=tts" \
  -H "Authorization: Bearer $VENICE_API_KEY" |
  jq '.data[] | select(.id == "tts-kokoro") | .model_spec | {default_format, supported_formats}'
```

El `Content-Type` de la respuesta identifica el formato de audio devuelto. Solicitar un formato que el modelo seleccionado no admite devuelve HTTP `400`.

## Consejos para producción

* Almacena en caché el audio generado cuando el texto de origen y la voz se reutilicen.
* Normaliza y revisa el texto antes de sintetizarlo. La puntuación afecta el ritmo y la entonación.
* Guarda la salida con la extensión de archivo correcta según el formato de respuesta del modelo.

## Recursos relacionados

<Tip>
  ¿Necesitas narrar algo más largo que unas pocas frases? [Narración de artículos con texto a voz](/guides/media/article-narration) cubre el límite de 4096 caracteres para la entrada, cómo dividir el texto por los límites de frase, unir las partes en un único archivo de audio y el streaming para reproducción interactiva.
</Tip>

* [API de Audio Speech](/api-reference/endpoint/audio/speech)
* [Modelos de texto a voz](/models/text-to-speech)
* [Narración de artículos con texto a voz](/guides/media/article-narration)
* [Guía de clonación de voz](/guides/media/voice-cloning)
