Seed Speech 2.0 lee una voz predefinida por petición, así que una conversación entre dos personajes adultos es una tarea por línea, unidas en una breve edición de audio. Cada tarea cuesta 0,072 $ por cada 1.000 caracteres de texto hablado, sin mínimo, y la nota de interpretación es gratis.
Sirve para mensajes de voz de personajes, narración de audiolibros y diálogos en los que quieres rehacer una línea sin tocar la otra. Si quieres ambas voces y sonido de fondo en un solo archivo, usa Seed Audio 1.0.
Qué te da una petición
| Elemento | Seed Speech 2.0 |
|---|---|
| Campo obligatorio | text, de 1 a 5.000 caracteres |
| Voz | Un voice_id entre 41 predefinidas; por defecto stokie_en |
| Nota de interpretación | instructions, hasta 1.000 caracteres; no se pronuncia ni se factura |
| Salida | Un MP3 mono a 24 kHz, u Ogg Opus (opus); sin tiempos por palabra ni subtítulos |
| Duración y velocidad | Unos 11 caracteres por segundo de habla; unos 8 segundos para generar 300 caracteres |
| Almacenamiento | Se conserva 14 días, así que descárgalo |
| Coste | 0,072 $ por 1.000 caracteres; 5.000 caracteres son 0,36 $; una tarea caducada no se cobra |
| No disponible | Subir una voz de referencia, un array de varios hablantes |
Elige una voz predefinida y prueba una línea en la página de la tarea de Seed Speech 2.0. La clonación de voz, el streaming y el reconocimiento de voz de la familia Seed Speech más amplia de BytePlus no forman parte de esta tarea. Para oír antes la voz, escucha la nota de voz nocturna publicada; usa stokie_en con una nota de interpretación suave e íntima.
Prueba primero los dos turnos en el Playground
En esa página, usa la pestaña Playground. Para cada turno de dos adultos ficticios después de una cita:
- Pega en Text solo las palabras que deben oírse. No escribas nombres de hablante («Anna:») ni acotaciones («sonríe»): se leen en voz alta, y si pones a ambos personajes en una petición, una sola voz lee las dos líneas y los nombres.
- Elige un nombre en Voice (Stokie · English por defecto).
- Escribe la interpretación en Delivery instructions; no se pronuncia ni se factura.
- Deja Language en Auto, ejecútalo, escucha el resultado y descarga el MP3.
Las líneas y las instrucciones se mantienen en inglés porque Stokie y Tim son voces predefinidas en inglés.
| Turno | Voz | Text | Delivery instructions |
|---|---|---|---|
| 1 | Stokie (stokie_en) | "You don't have to go yet. Stay for another coffee? I like talking to you when we're not watching the clock." | Warm and slightly playful. Speak quietly to one adult listener, with a natural question rather than a sales pitch. |
| 2 | Tim (tim_en) | "Then I'll stay. I was hoping you would give me a reason." | Low, relaxed and amused. Answer an invitation naturally; do not sound like an announcer. |
Une las dos descargas en cualquier editor de audio, dejando una pausa breve. Para automatizar la unión, usa el script de abajo.
Después, automatiza todo el intercambio con un script
Instala el SDK de Python (pip install spicyapi) y ffmpeg, define SPICY_API_KEY y ejecuta esto. Envía una tarea por turno, descarga cada MP3 y luego los une con 0,35 segundos de silencio tras cada turno y los niveles igualados.
import subprocess, urllib.request
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
GAP = 0.35 # seconds of silence after each turn
TURNS = [
{"text": "You don't have to go yet. Stay for another coffee? I like talking to you when we're not watching the clock.",
"voice_id": "stokie_en",
"instructions": "Warm and slightly playful. Quiet, to one adult listener."},
{"text": "Then I'll stay. I was hoping you would give me a reason.",
"voice_id": "tim_en",
"instructions": "Low, relaxed and amused. Answer naturally, not like an announcer."},
]
files = []
for i, turn in enumerate(TURNS, 1):
task = client.create_task(
model="bytedance/seed-speech-2.0/text-to-speech",
input_data=dict(turn, language="en", output_format="mp3"),
idempotency_key=f"dialogue-take-1-turn-{i}", # new keys for a new take
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Turn {i} ended as {final['state']}")
files.append(f"turn-{i:02d}.mp3")
urllib.request.urlretrieve(output_assets(final)[0]["url"], files[-1])
cmd = ["ffmpeg", "-y"] + [x for f in files for x in ("-i", f)]
chains = [f"[{i}:a]loudnorm=I=-18,apad=pad_dur={GAP}[a{i}]" for i in range(len(files))]
graph = ";".join(chains) + ";" + "".join(f"[a{i}]" for i in range(len(files))) + f"concat=n={len(files)}:v=0:a=1"
subprocess.run(cmd + ["-filter_complex", graph, "-ar", "24000", "-b:a", "128k", "dialogue.mp3"], check=True)Ajusta GAP hasta que la réplica entre de forma natural. Si una línea empieza mal, regenera la frase entera en lugar de parchear una palabra, y vuelve a montar el archivo. La espera, los reintentos y los errores están en la referencia del SDK de Python y en la guía de tareas asíncronas; la recuperación a gran escala es el tema del artículo del blog sobre polling frente a webhooks.
O deja que lo ejecute un agente
Si un asistente debe poner voz al guion, dale la CLI o el servidor MCP. Ambos muestran el precio y piden tu confirmación antes de una llamada de pago. El Skill añade instrucciones sobre cualquiera de los dos.
- CLI.
spicyapiejecuta un turno por llamada (npx @spicyapi/clifunciona sin instalar). Guarda el objetoinputdel turno enturn-1.json:
``bash spicyapi tasks create --model bytedance/seed-speech-2.0/text-to-speech \ --input-file turn-1.json --idempotency-key dialogue-take-1-turn-1 --wait ``
- Servidor MCP. Añade el servidor MCP a tu asistente y pídele: «Read these two lines with Seed Speech 2.0, stokieen then timen, and join them with a short gap.» Llama a
spicyapi_task_create(que se detiene para que confirmes el precio) y aspicyapi_task_waiten cada turno. - Skill.
npx skills add spicyapi-ai/spicy-skillinstala el Agent Skill, que enseña a un asistente de programación a leer el esquema actual y a reutilizar claves de idempotencia. No puede ejecutar tareas por sí solo, así que úsalo con la CLI o con MCP.
Elige voces e idioma a la vez
El sufijo de cada ID de voz indica los idiomas para los que está hecha. Entre las voces en inglés están stokie_en, dacey_en y tim_en. Otras cubren japonés (minimi_ja), alemán (sven_de), francés (usseau_fr), coreano (shane_ko) y español (felipe_es); jess_ja_es_id_pt_en_zh habla seis idiomas. La lista no dice qué voces son masculinas o femeninas, así que haz una audición: la misma línea de 100 caracteres con cinco candidatas cuesta en total unos 0,036 $. Conserva el voice_id y las instructions ganadores para cada línea posterior de ese personaje.
language acepta zh, en, ja, es-mx, id, pt-br, ko, it, de y fr. Omítelo para la detección automática, y defínelo cuando una línea corta o en varios idiomas se lea en el idioma equivocado. El español es es-mx y el portugués pt-br. No traduce: escribe la línea en el idioma de destino.
Guiones para adultos y sonidos no verbales
Según nuestras pruebas de septiembre de 2026, SpicyAPI no añade ningún filtro de contenido a este modelo, y los pasajes para adultos, directos y de estilo audiolibro, volvieron palabra por palabra, sin que el texto de las instrucciones se pronunciara nunca. Un pasaje cargado de indicaciones conservó su vocabulario pero añadió por su cuenta vocalizaciones sin palabras. La tarea no tiene un campo de etiquetas de sonido: escribe un sonido como palabra («Mm...», «Ah...») y describe la respiración o el tono en instructions. Si una escena depende de respiraciones y gemidos interpretados, Gemini 3.8 Flash, Grok y MiniMax interpretan las indicaciones en línea como sonidos; Seed Speech no lo hace.
Ajustes que resuelven un problema real
| Ajuste | Rango | Úsalo cuando |
|---|---|---|
speed | 0,5-2, por defecto 1 | Una línea suena apresurada: prueba 0,9. Si solo lo está una frase, acorta la oración o añade un punto |
pitch | de -12 a +12 semitonos | Un pequeño retoque tras el casting; para otro personaje, cambia de voz predefinida |
volume | 0,5-2, por defecto 1 | Una línea de sustitución suena más fuerte o más baja que las vecinas |
sample_rate | de 8.000 a 48.000 Hz | Tu proyecto de edición necesita una frecuencia distinta de 24 kHz |
output_format | mp3 u opus | Opus para archivos más pequeños si tu reproductor admite Ogg Opus; no hay WAV, así que conviértelo en local |
Una línea que suena teatral suele tener una instrucción demasiado larga: sustitúyela por «Quiet, natural conversational delivery.» Una voz con el carácter equivocado de base necesita otra voz predefinida antes de tocar el tono. A veces un nombre poco común se pronuncia mal y no hay diccionario de pronunciación, así que escríbelo en text tal como suena.
Los subtítulos requieren alinearlos con el archivo terminado, ya que la tarea no devuelve marcas de tiempo.
Presupuesta el guion, incluidas las revisiones
El precio sigue los caracteres de text, incluidos espacios, signos de puntuación y saltos de línea; instructions es gratis y el presupuesto que se muestra antes de ejecutar es definitivo. Una línea de 200 caracteres cuesta 0,0144 $ y equivale a unos 18 segundos de habla; una escena de 2.000 caracteres entre ambos hablantes cuesta 0,144 $, y tres tomas completas cuestan 0,432 $. Dos hablantes no suponen recargo. Sustituir una respuesta de 200 caracteres cuesta 0,0144 $, mucho menos que regenerar la escena, así que mantén la misma voz predefinida y los mismos ajustes para la repetición.
Elige Seed Speech por sus voces predefinidas asequibles y por líneas que puedes rehacer una a una; elige Seed Audio 1.0 cuando quieras ambas voces y ambiente en un solo archivo.






