O Seed Speech 2.0 lê uma voz predefinida por requisição, então uma conversa entre dois personagens adultos é uma tarefa por fala, unidas em uma edição de áudio curta. Cada tarefa custa US$ 0,072 por 1.000 caracteres de texto falado, sem mínimo, e a nota de interpretação é gratuita.
Serve para mensagens de voz de personagens, narração de audiolivros e diálogos em que você quer refazer uma fala sem mexer na outra. Se quiser as duas vozes e o som de fundo em um único arquivo, use o Seed Audio 1.0.
O que uma requisição entrega
| Item | Seed Speech 2.0 |
|---|---|
| Campo obrigatório | text, de 1 a 5.000 caracteres |
| Voz | Um voice_id entre 41 predefinidas; padrão stokie_en |
| Nota de interpretação | instructions, até 1.000 caracteres; não é falada nem cobrada |
| Saída | Um MP3 mono a 24 kHz, ou Ogg Opus (opus); sem tempos por palavra nem legendas |
| Duração e velocidade | Cerca de 11 caracteres por segundo de fala; cerca de 8 segundos para gerar 300 caracteres |
| Armazenamento | Mantido por 14 dias, então baixe o arquivo |
| Custo | US$ 0,072 por 1.000 caracteres; 5.000 caracteres custam US$ 0,36; uma tarefa expirada não é cobrada |
| Indisponível | Envio de voz de referência, array com vários falantes |
Escolha uma voz predefinida e teste uma fala na página da tarefa Seed Speech 2.0. Clonagem de voz, streaming e reconhecimento de fala da família Seed Speech mais ampla da BytePlus não fazem parte desta tarefa. Para ouvir a voz antes, escute a mensagem de voz de fim de noite publicada; ela usa stokie_en com uma nota de interpretação suave e íntima.
Teste primeiro as duas falas no Playground
Nessa página, use a aba Playground. Para cada fala de dois adultos fictícios depois de um encontro:
- Cole em Text apenas as palavras que devem ser ouvidas. Não escreva nomes de falantes («Anna:») nem indicações de cena («ela sorri»): eles são lidos em voz alta, e se você colocar os dois personagens em uma requisição, uma única voz lê as duas falas e os nomes.
- Escolha um nome em Voice (Stokie · English por padrão).
- Escreva a interpretação em Delivery instructions; ela não é falada nem cobrada.
- Deixe Language em Auto, execute, ouça o resultado e baixe o MP3.
As falas e as instruções continuam em inglês porque Stokie e Tim são vozes predefinidas em inglês.
| Fala | 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. |
Una os dois downloads em qualquer editor de áudio, deixando uma pausa curta. Para automatizar a união, use o script abaixo.
Depois, automatize a troca inteira com um script
Instale o SDK Python (pip install spicyapi) e o ffmpeg, defina SPICY_API_KEY e execute o código abaixo. Ele envia uma tarefa por fala, baixa cada MP3 e depois os une com 0,35 segundo de silêncio após cada fala e os níveis de volume 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)Ajuste GAP até a resposta entrar de forma natural. Se uma fala começar mal, regenere a frase inteira em vez de remendar uma palavra, e remonte o arquivo. Espera, novas tentativas e erros estão na referência do SDK Python e no guia de tarefas assíncronas; a recuperação em grande escala é o tema do artigo do blog sobre polling versus webhooks.
Ou deixe um agente executar
Se um assistente deve dar voz ao roteiro, entregue a ele a CLI ou o servidor MCP. Ambos mostram o preço e pedem a sua confirmação antes de uma chamada paga. A Skill acrescenta instruções por cima de qualquer um dos dois.
- CLI. A
spicyapiexecuta uma fala por chamada (npx @spicyapi/clifunciona sem instalar). Coloque o objetoinputda fala emturn-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. Adicione o servidor MCP ao seu assistente e peça: «Read these two lines with Seed Speech 2.0, stokieen then timen, and join them with a short gap.» Ele chama
spicyapi_task_create(que para para você confirmar o preço) espicyapi_task_waitpara cada fala. - Skill.
npx skills add spicyapi-ai/spicy-skillinstala a Agent Skill, que ensina um assistente de programação a ler o esquema atual e a reutilizar chaves de idempotência. Ela não executa tarefas sozinha, então use-a com a CLI ou o MCP.
Escolha voz e idioma juntos
O sufixo de cada ID de voz lista os idiomas para os quais ela foi feita. As predefinições em inglês incluem stokie_en, dacey_en e tim_en. Outras cobrem japonês (minimi_ja), alemão (sven_de), francês (usseau_fr), coreano (shane_ko) e espanhol (felipe_es); jess_ja_es_id_pt_en_zh fala seis idiomas. A lista não diz quais vozes são masculinas ou femininas, então faça uma audição: a mesma fala de 100 caracteres em cinco candidatas custa cerca de US$ 0,036 no total. Guarde o voice_id e as instructions vencedores para toda fala seguinte desse personagem.
language aceita zh, en, ja, es-mx, id, pt-br, ko, it, de e fr. Omita o campo para a detecção automática e defina-o quando uma fala curta ou em vários idiomas for lida no idioma errado. O espanhol é es-mx e o português é pt-br. O campo não traduz: escreva a fala no idioma de destino.
Roteiros para adultos e sons não verbais
Com base nos nossos testes de setembro de 2026, o SpicyAPI não adiciona filtro de conteúdo a este modelo, e trechos adultos, diretos e em estilo de audiolivro voltaram palavra por palavra, sem que o texto das instruções jamais fosse falado. Um trecho carregado de indicações manteve o vocabulário, mas acrescentou por conta própria vocalizações sem palavras. A tarefa não tem um campo para marcações de som: escreva um som como palavra («Mm...», «Ah...») e descreva a respiração ou o tom em instructions. Se uma cena depende de respirações e gemidos interpretados, Gemini 3.8 Flash, Grok e MiniMax interpretam como sons as indicações inseridas no texto; o Seed Speech não faz isso.
Ajustes que resolvem um problema real
| Ajuste | Faixa | Use quando |
|---|---|---|
speed | 0,5-2, padrão 1 | Uma fala soa apressada: tente 0,9. Se só uma expressão está assim, encurte a frase ou acrescente um ponto final |
pitch | -12 a +12 semitons | Um pequeno retoque após a escalação; para outro personagem, troque a voz predefinida |
volume | 0,5-2, padrão 1 | Uma fala substituta está mais alta ou mais baixa que as vizinhas |
sample_rate | 8.000 a 48.000 Hz | Seu projeto de edição precisa de uma taxa diferente de 24 kHz |
output_format | mp3 ou opus | Opus para arquivos menores se o seu player lê Ogg Opus; WAV não é oferecido, então converta localmente |
Uma fala que soa teatral costuma ter uma instrução longa demais: troque-a por «Quiet, natural conversational delivery.» Uma voz com o caráter errado na base precisa de outra predefinição antes de qualquer ajuste de tom. Um nome incomum às vezes é pronunciado errado e não há dicionário de pronúncia, então escreva-o em text como ele soa.
Para legendas é preciso alinhar o texto ao arquivo finalizado, já que a tarefa não devolve marcações de tempo.
Orce o roteiro, incluindo as revisões
O preço segue os caracteres de text, incluindo espaços, pontuação e quebras de linha; instructions é gratuito e a cotação exibida antes de uma execução é final. Uma fala de 200 caracteres custa US$ 0,0144 e dá cerca de 18 segundos de fala; uma cena de 2.000 caracteres entre os dois falantes custa US$ 0,144, e três tomadas completas custam US$ 0,432. Dois falantes não geram acréscimo. Substituir uma resposta de 200 caracteres custa US$ 0,0144, bem menos que regenerar a cena, então mantenha a mesma voz predefinida e os mesmos ajustes na regravação.
Escolha o Seed Speech por vozes predefinidas acessíveis e falas que você pode refazer uma a uma; escolha o Seed Audio 1.0 quando quiser as duas vozes e o ambiente em um único arquivo.






