Un mensaje de voz de un personaje ficticio funciona cuando la voz coincide con la persona y la interpretación coincide con el momento. Qwen3 TTS convierte el guion de un personaje adulto en un único MP3 de una sola voz, y tú diriges la interpretación con una nota en lenguaje natural. La tarea de SpicyAPI tiene nueve voces preestablecidas y cuesta $0.068 por 1.000 caracteres de texto, con un mínimo de 100 caracteres por solicitud. Según nuestras pruebas de septiembre de 2026, el vocabulario adulto explícito en pasajes directos y con estilo de audiolibro se leyó tal cual. Úsala para mensajes de voz grabados y narración; esta ruta no tiene clonación de voz ni transmisión en vivo.
Qué incluye la tarea alojada
| Detalle | Tarea Qwen3 TTS |
|---|---|
| Entrada obligatoria | text, 1–2.000 caracteres |
| Dirección de interpretación | instructions, hasta 1.000 caracteres; no se pronuncia, no se factura |
| Voz predeterminada | Serena |
| Salida | un MP3 mono de 24 kHz |
| Precio | $0.068 por 1.000 caracteres de texto, mínimo 100 caracteres ($0.0068) |
| Referencia de voz subida | no expuesta |
| Varios hablantes en una solicitud | no expuesta; genera cada turno por separado |
| Velocidad o tono con valor numérico | no expuestos; describe la interpretación en instructions |
Selecciona el preset y genera en la página de la tarea Qwen3 TTS. El repositorio del equipo de Qwen también cubre las variantes CustomVoice, Base (clonación) y VoiceDesign. Son ofertas distintas: un argumento ref_audio o speaker de una biblioteca no es una entrada aquí, donde el campo de voz es voice_id.
Elige una voz para el guion que tienes
| Preset | Descripción de voz publicada | Idioma nativo |
|---|---|---|
| Serena | voz femenina cálida y suave | chino |
| Vivian | voz femenina clara, algo mordiente | chino |
| Uncle_Fu | voz masculina grave y aterciopelada | chino |
| Dylan | voz masculina clara de Pekín | chino, dialecto de Pekín |
| Eric | voz masculina enérgica, algo ronca | chino, dialecto de Sichuan |
| Ryan | voz masculina rítmica | inglés |
| Aiden | voz masculina americana clara | inglés |
| Ono_Anna | voz femenina ligera y juguetona | japonés |
| Sohee | voz femenina cálida y expresiva | coreano |
Cada preset puede leer cualquier idioma compatible, pero el equipo de Qwen recomienda el idioma nativo de la voz para obtener la mejor calidad. Para un personaje masculino en inglés, empieza por Ryan o Aiden. Para un personaje femenino en inglés, prueba Serena o Vivian; el conjunto no tiene ninguna voz femenina con inglés como idioma nativo, así que pruébala antes de decidirte.
Escucha un mensaje de voz con Serena: una nota nocturna de «llámame de vuelta» leída con una instrucción sin aliento y coqueta.
Pruébala primero en el Playground
Abre la página de la tarea Qwen3 TTS y usa la pestaña Playground:
- En Text, pega solo las palabras que deben oírse (el guion de ejemplo de la página es una buena primera prueba).
- Elige un nombre en Voice (Serena por defecto).
- Escribe la nota de interpretación en Delivery instructions.
- Deja Language en Auto-detect, o elige inglés para un guion en inglés si la detección es ambigua.
- Ejecútalo y luego reproduce el resultado en Output y descarga el MP3.
Una adulta ficticia después de una cita: Text «I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.», Voice Serena, Delivery instructions «Cálida y algo tímida, hablando en voz baja a un único oyente adulto. Mantén conversacional la pregunta final.» No empieces el texto con Serena: ni con «Read this in a soft voice»; ambas cosas se pronunciarían. Prueba dos o tres voces y notas aquí antes de escribir código; el precio se muestra antes de ejecutar.
language acepta auto, zh, en, de, fr, es, it, pt, ru, ja y ko. Elige cómo se lee tu texto; no traduce.
Luego llámalo desde el código
Instala el SDK de Python (pip install spicyapi), define SPICY_API_KEY en el entorno y ejecuta:
import urllib.request
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="alibaba/qwen-3-tts/text-to-speech",
input_data={
"text": "I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.",
"voice_id": "Serena",
"language": "en",
"instructions": "Warm and slightly shy, speaking quietly to one adult listener. Keep the final question conversational.",
},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
urllib.request.urlretrieve(output_assets(final)[0]["url"], "voice-message.mp3")La espera, los reintentos, las cotizaciones y los errores están en la referencia del SDK de Python y en la guía de tareas asíncronas.
O deja que lo ejecute un Agent
Si un asistente debe dar voz a tus líneas, dale la CLI o el servidor MCP. Ambos muestran el precio y te piden confirmar antes de una llamada de pago. El Skill añade instrucciones por encima de cualquiera de los dos.
- CLI.
spicyapiejecuta una tarea desde una terminal (npx @spicyapi/clifunciona sin instalar). Pon el mismo objetoinputeninput.json:
``bash spicyapi tasks create --model alibaba/qwen-3-tts/text-to-speech \ --input-file input.json --idempotency-key voice-message-take-1 --wait ``
- Servidor MCP. Añade el servidor MCP a tu asistente y pregunta: «Lee esta línea con Qwen3 TTS, Serena, cálida y algo tímida.» Llama a
spicyapi_task_create(que se detiene para tu confirmación de precio) y luego aspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstala el Agent Skill, que enseña a un asistente de programación a leer el esquema en vivo y a reutilizar claves de idempotencia. No puede ejecutar tareas por sí mismo, así que úsalo con la CLI o MCP.
Dirige la misma línea de tres maneras
Mantén el texto y la voz fijos y cambia solo la nota. Para «I thought you'd forgotten»:
| Sentimiento buscado | Instrucción que puedes probar |
|---|---|
| Aliviado | «Exhalación suave de alivio, sonriendo, algo más bajo en la última palabra» |
| Dolido | «Callado y contenido, más lenta, sin sonrisa» |
| Pícaro | «Ligera y juguetona, con un leve realce al final, como si escondiera una sonrisa» |
Cambia una cosa cada vez. «Quita el susurro» o «más lento después de la primera frase» corrige una toma; «más emocional, más humano» no. Si el resultado es demasiado teatral, acorta la nota a «Interpretación conversacional natural.»
¿Puede leer un guion NSFW?
Las pruebas cubrieron un pasaje adulto directo, un pasaje enmarcado como audiolibro y un pasaje con muchas entradas de dirección, usando Serena o Ryan con instrucciones de interpretación. Las transcripciones directa y de audiolibro coincidieron palabra por palabra con el guion, incluido el vocabulario adulto, y el texto de las instrucciones nunca se pronunció.
El pasaje con muchas direcciones conservó su vocabulario adulto pero se desvió más del guion por las vocalizaciones no verbales. Trata las respiraciones y las risas como algo que se prueba, no que se controla: si una escena depende de una, genera primero ese momento y no asumas que la sintaxis de corchetes o paréntesis de otro modelo funciona aquí.
Monta una escena con dos personajes
Una solicitud da una voz. Para dos adultos ficticios, genera cada turno por separado:
| Turno | Voz | Texto | Dirección |
|---|---|---|---|
| 1 | Serena | «Did you really think I'd leave without saying goodnight?» | pregunta cálida y relajada |
| 2 | Ryan | «No. I was hoping you would come find me.» | respuesta callada y divertida |
Los tutoriales de ComfyUI con varios hablantes analizan los nombres de hablante, las pausas y los solapamientos en un nodo adicional; esas etiquetas no son campos de entrada aquí. Quita los nombres del texto hablado, envía cada turno con su propio voice_id y luego ajusta las pausas en tu editor. Empieza con una pausa corta y mueve el segundo clip hasta que la respuesta suene natural. Poner ambos nombres en un solo campo text te da un preset leyendo las etiquetas y las dos líneas. Para escribir toda la conversación y unir los clips automáticamente, consulta el flujo de diálogo de Seed Speech 2.0; su script de unión funciona con cualquier voz.
Para una historia larga de una sola voz, divide antes de 2.000 caracteres en los límites de frase o párrafo y reutiliza la misma voz y la misma nota para cada sección. Para reemplazar una frase, regenera toda la oración circundante y corta en las pausas vecinas, de modo que el volumen y el ritmo sigan coincidiendo.
El cobro mínimo importa en respuestas cortas
El coste es max(text characters, 100) × $0.068 / 1,000, contando espacios y puntuación. Las instrucciones son gratuitas.
| Longitud de entrada | Caracteres facturables | Coste |
|---|---|---|
| 40 caracteres | 100 | $0.0068 |
| 80 caracteres | 100 | $0.0068 |
| 180 caracteres | 180 | $0.01224 |
| 1.000 caracteres | 1.000 | $0.068 |
| 2.000 caracteres | 2.000 | $0.136 |
Diez respuestas separadas de 40 caracteres cuestan $0.068, aunque sus textos sumen solo 400 caracteres; una solicitud de 400 caracteres con la misma voz cuesta $0.0272. Fusiona la narración contigua de una sola voz cuando tu montaje lo permita, pero no fusiones personajes distintos para esquivar el mínimo.
Corrige un resultado decepcionante
| Problema | Cambio |
|---|---|
| Una línea sale apresurada | Añade «Sin prisa, con una pausa natural después de la primera frase» a instructions |
| Un nombre se pronuncia mal | Escríbelo fonéticamente en text; mantén la ortografía correcta en tu transcripción pública |
| La nota apenas cambia el timbre | Prueba otro preset; las notas de interpretación no cambian el carácter básico de una voz |
La solicitud rechaza speed, pitch o ref_audio | Quítalos y usa los cuatro campos de arriba |
Si necesitas clonación de voz subida o conversación en vivo, elige una tarea que lo exponga; para comparar otros modelos de voz para guiones adultos, consulta nuestra comparación de APIs de texto a voz.






