API de generación de voz hablada (Speech)

Actualizado el 2026-09-18 · equipo de Suno-API

Descripción del endpoint

Speech convierte un guion de discurso o una descripción de una línea en audio de "habla/discurso", con música de fondo opcional. Encaja en discursos, brindis, narración, guiones de locución, contenido de audio y escenarios similares.

Atención: este endpoint genera audio hablado, no una canción cantada (sin melodía y sin voces cantadas). Si necesitas canto, usa la API de generación en modo simple o la API de generación en modo personalizado.

Endpoint: POST /api/music/speech

Facturación: De pago, actualmente 0,6 ¥ por llamada por defecto. Cada llamada suele devolver 2 audios; el importe realmente cobrado sigue la configuración de precios del back-office.

Max Mode / Variety: este endpoint admite los parámetros opcionales max_mode y variety (0-4). Con max_mode activado, esta llamada se factura al doble (0,6 → 1,2 ¥ por llamada); variety no cuesta nada extra. Qué significan y cómo enviarlos está en la sección «Parámetros avanzados» del Resumen de la nueva API.

Tiempos de espera y timeouts (importante): es un endpoint síncrono — el pedido solo se acepta y se entrega a generación cuando llega la respuesta. Según lo medido, la mayoría de las peticiones responden en segundos (1-10 s); pero, como en los demás endpoints de generación síncronos, en casos extremos puede tardar más. Configura el timeout del cliente en 300 segundos o más; no recibir respuesta no significa que no se haya generado nada, y no reintentes justo después de un timeout (eso duplica el pedido y vuelve a cobrar). Si la conexión se cayó, confírmalo más tarde con GET /api/music/songs. Consulta «Tiempos de espera y configuración de timeout» en el Resumen de la nueva API.

Cumplimiento de contenido: la plataforma revisa el guion por derechos de autor y políticas de contenido. Si se considera que incluye material protegido (por ejemplo citar la letra de otra persona o el texto literal de una obra conocida), esta llamada falla y el importe se devuelve por completo de forma automática. Cambia a tu propia redacción, o convierte la cita en una paráfrasis, y vuelve a intentarlo.

Parámetros de la petición

Headers

Parámetro Tipo Obligatorio Notas
Authorization string sí Bearer YOUR_API_KEY
Content-Type string sí application/json

Parámetros del body

Parámetro Tipo Obligatorio Por defecto Notas
script string sí - Texto completo del discurso; 3000 caracteres como máximo (más devuelve 400, sin cargo)
tone string no - Descripción de tono / velocidad / emoción / escenario, por ejemplo "enérgico y potente, acelerando desde un ritmo lento; salón de actos"; 1000 caracteres como máximo
song_title string no - Título; 100 caracteres como máximo
gender string no cualquiera Género del hablante: m, f (también acepta male, female); puedes pasar el mismo valor como vocal_gender
backing_music boolean no true Si se añade música de fondo; false deja un discurso solo con voz
model string no suno-v6 Nombre de modelo de cara al cliente: suno-v6, suno-v6-wild o suno-v6-mini
wait_completion boolean no false Si se espera a que termine la generación antes de responder
max_mode boolean no false Activado, esta llamada se factura al doble
variety integer no - Grado de variación de estilo 0-4; consulta «Parámetros avanzados» en el resumen

Este endpoint no admite duration: si lo envías devuelve HTTP 400, no lo ignora en silencio. La duración del discurso la determina la longitud del contenido de script.

Ejemplos de petición

Petición mínima (solo el guion)

curl -X POST https://www.suno-api.io/api/music/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 300 \
  -d '{
    "script": "¡Buenos días a todos! Hoy mi charla trata sobre aprovechar bien nuestro tiempo y seguir adelante."
  }'

Petición completa (con tono, género y música de fondo desactivada)

curl -X POST https://www.suno-api.io/api/music/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 300 \
  -d '{
    "script": "Good evening everyone, thank you all for coming to celebrate this special day with us.",
    "tone": "warm and slow, wedding reception",
    "song_title": "Wedding Toast",
    "gender": "f",
    "backing_music": false,
    "model": "suno-v6"
  }'

Ejemplo en Python

import requests

response = requests.post(
    'https://www.suno-api.io/api/music/speech',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'script': 'Buenas tardes, compañeros. Les informo del avance de esta semana.',
        'tone': 'sereno y claro, informe de reunión',
        'gender': 'male',
        'backing_music': True,
    },
    timeout=300,
)
response.raise_for_status()
items = response.json()          # normalmente 2 elementos
for item in items:
    print(item['song_id'], item['status'])

Notas sobre los parámetros

script (el discurso, obligatorio)

tone (tono y escenario, opcional)

Describe cómo hablar, no qué decir. Conviene incluir cuatro tipos de información: tono, velocidad/ritmo, emoción y escenario.

Enérgico y potente, acelerando desde un ritmo lento, pausas claras; salón de actos, ante todo el alumnado
Cálido y suave, ritmo pausado; banquete de boda
Sereno y contenido, ritmo constante y claro; informe al consejo

El límite es de 1000 caracteres. Si no lo envías, el modelo lo deduce del contenido de script.

gender / vocal_gender (género del hablante, opcional)

backing_music (música de fondo, opcional)

model (modelo, opcional)

Los tres modelos de cara al cliente están disponibles al mismo precio (0,6 ¥ por llamada). El discurso lo genera la familia Suno v6; si se omite se trata como suno-v6. Salvo que tengas una preferencia concreta, normalmente no hace falta enviar este campo.

Validación de parámetros y límites de texto

Los siguientes casos devuelven HTTP 400 y todos se bloquean antes del cobro, así que no generan ningún cargo:

Caso Mensaje de error
Falta script o solo hay espacios script is required for speech
gender no es m/f/male/female gender must be one of m, f, male, female
backing_music no es booleano backing_music must be a boolean
Se envió un duration no admitido duration is not supported on /api/music/speech

Límites de los campos de texto

Pasarse de longitud también devuelve HTTP 400 y no inicia la generación ni pre-cobra nada. El recuento es por caracteres Unicode (un carácter chino cuenta como 1) e incluye los espacios iniciales y finales:

Campo Límite
script (el discurso) 3000 caracteres
tone (descripción del tono) 1000 caracteres
song_title (título) 100 caracteres

El error tiene la forma script must not exceed 3000 characters; received 4120: la primera palabra es el campo que se pasó y el final es el recuento real, así que ante un 400 puedes recortar directamente con esos dos números.

Respuesta

La respuesta es un array de canciones exactamente igual que el de los demás endpoints de generación (normalmente 2 elementos); guarda el song_id y usa la API de consulta e historial de canciones para ver el estado final y la dirección del audio:

[
  {
    "song_id": "b7529174-b495-465b-8c5e-cd21bea2df8c",
    "song_title": "Aprovechar bien el tiempo",
    "status": "pending",
    "audio_url": "",
    "cover_url": "",
    "video_url": "",
    "model_version": "suno-v6",
    "generation_type": "generate",
    "created_at": "2026-10-08T01:00:00Z"
  }
]
Campo Notas
song_id ID de la pista; se usa para todas las consultas y descargas posteriores
status pending (enviado, generando), processing, completed (terminado), failed (falló)
song_title Título (el modelo lo genera si no enviaste song_title; puede quedar vacío)
audio_url Dirección del audio; vacía antes de terminar la generación y reproducible o descargable en cuanto termina

Fallo de generación y reembolsos

Cuando la generación falla, el cargo de esa llamada se devuelve por completo de forma automática; no hace falta contactar con soporte. El motivo se ve en la respuesta o en el error_message de la API de consulta e historial de canciones.

El fallo más habitual es que la plataforma considere que el contenido incluye material protegido, por ejemplo:

Your lyrics contain copyrighted material. Please change it and try again.

En ese caso, cambia el guion por tu propia redacción (o convierte la cita en una paráfrasis) y envíalo de nuevo.

Preguntas frecuentes

P: ¿Por qué el resultado es "habla" y no canto? R: Este es el endpoint de discursos y su salida es audio hablado. Para cantar usa los endpoints de generación o de modo personalizado.

P: ¿Por qué devuelve 2 elementos cada vez? R: Como en el resto de endpoints de generación de la plataforma, una generación produce 2 candidatos; consúltalos por separado con song_id y quédate con el que te guste.

P: ¿Cómo controlo la duración? R: La determina la longitud de script; este endpoint no acepta el parámetro duration.

P: ¿Puedo indicar una voz (por ejemplo mi voz clonada)? R: La versión actual no lo admite. El discurso usa un conjunto fijo de voces y gender elige masculina o femenina; si necesitas tu propia voz, usa la capacidad correspondiente de la API de creación de perfil de voz (recomendado).

P: ¿Qué pasa si no envío tone? R: El modelo deduce el tono y el ritmo del contenido de script. Para reproducir un estilo de forma estable, escribe tono, velocidad y escenario en tone.

Campos compatibles

Campo recomendado Campo compatible Notas
gender vocal_gender Envía uno de los dos; se aceptan m/f/male/female

En integraciones nuevas usa snake_case de forma consistente. Los demás campos (script, tone, song_title, backing_music) no tienen alias en camelCase.

Siguientes pasos

Cuando tengas el song_id:

  1. Usa la API de consulta e historial de canciones para ver el estado de generación y la dirección del audio;
  2. Al terminar, usa la API de descarga y previsualización de medios de canciones para descargarlo o escucharlo;
  3. Para descargas por lotes o copiarlo a tu propio almacenamiento, consulta los endpoints del centro de descargas.
SiguienteAPI de generación de efectos de sonido

Obtener una clave de API

Crea una clave de API en la consola después de registrarte. Cada generación cuesta 0,6 ¥ y devuelve 2 pistas, las descargas son ilimitadas y no hace falta número de teléfono.

Obtener clave de API Volver al resumen