Ir al contenido principal

Seed Speech 2.0 para diálogos entre adultos: voces, entradas y coste

Seed Speech 2.0 lee una voz por petición. Crea un diálogo de dos adultos con turnos separados: entradas, IDs de voz, notas de interpretación y coste.

Autor
Lydia
Publicado
Lectura
8 min de lectura
Actualizado
Dos restauradores de relojes adultos conversan junto a un reloj de repisa de nogal y una llave de latón intacta sobre una bandeja de fieltro verde

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

ElementoSeed Speech 2.0
Campo obligatoriotext, de 1 a 5.000 caracteres
VozUn voice_id entre 41 predefinidas; por defecto stokie_en
Nota de interpretacióninstructions, hasta 1.000 caracteres; no se pronuncia ni se factura
SalidaUn MP3 mono a 24 kHz, u Ogg Opus (opus); sin tiempos por palabra ni subtítulos
Duración y velocidadUnos 11 caracteres por segundo de habla; unos 8 segundos para generar 300 caracteres
AlmacenamientoSe conserva 14 días, así que descárgalo
Coste0,072 $ por 1.000 caracteres; 5.000 caracteres son 0,36 $; una tarea caducada no se cobra
No disponibleSubir 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:

  1. 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.
  2. Elige un nombre en Voice (Stokie · English por defecto).
  3. Escribe la interpretación en Delivery instructions; no se pronuncia ni se factura.
  4. 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.

TurnoVozTextDelivery instructions
1Stokie (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.
2Tim (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.

python
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. spicyapi ejecuta un turno por llamada (npx @spicyapi/cli funciona sin instalar). Guarda el objeto input del turno en turn-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 a spicyapi_task_wait en cada turno.
  • Skill. npx skills add spicyapi-ai/spicy-skill instala 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

AjusteRangoÚsalo cuando
speed0,5-2, por defecto 1Una línea suena apresurada: prueba 0,9. Si solo lo está una frase, acorta la oración o añade un punto
pitchde -12 a +12 semitonosUn pequeño retoque tras el casting; para otro personaje, cambia de voz predefinida
volume0,5-2, por defecto 1Una línea de sustitución suena más fuerte o más baja que las vecinas
sample_ratede 8.000 a 48.000 HzTu proyecto de edición necesita una frecuencia distinta de 24 kHz
output_formatmp3 u opusOpus 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.

También en English · 日本語 · 한국어 · Deutsch · Français · Português (Brasil) · Русский · Italiano · Polski

Pruébalo tú mismo

Pagas solo lo que ejecutas: sin planes ni suscripciones.

Hecho con MiniMax H3 · ByteDance Seedance 2.0 Fast