Uma mensagem de voz de um personagem fictício funciona quando a voz combina com a pessoa e a leitura combina com o momento. O Qwen3 TTS transforma o roteiro de um personagem adulto em um único MP3 de voz única, e você orienta a leitura com uma nota em linguagem simples. A tarefa da SpicyAPI tem nove vozes predefinidas e custa $0.068 por 1.000 caracteres de texto, com um mínimo de 100 caracteres por requisição. Com base nos nossos testes de setembro de 2026, o vocabulário adulto explícito em passagens diretas e no estilo audiobook foi lido na íntegra. Use para mensagens de voz gravadas e narração; este caminho não tem clonagem de voz nem transmissão ao vivo.
O que a tarefa hospedada inclui
| Detalhe | Tarefa Qwen3 TTS |
|---|---|
| Entrada obrigatória | text, 1–2.000 caracteres |
| Direção da leitura | instructions, até 1.000 caracteres; não é lido, não é cobrado |
| Voz padrão | Serena |
| Saída | um MP3 mono de 24 kHz |
| Preço | $0.068 por 1.000 caracteres de texto, mínimo 100 caracteres ($0.0068) |
| Referência de voz enviada | não exposta |
| Vários falantes em uma requisição | não exposto; gere cada turno separadamente |
| Velocidade ou tom numéricos | não expostos; descreva a leitura em instructions |
Escolha o preset e gere na página da tarefa Qwen3 TTS. O repositório da equipe Qwen também cobre as variantes CustomVoice, Base (clonagem) e VoiceDesign. São ofertas distintas: o argumento ref_audio ou speaker de uma biblioteca não é uma entrada aqui, onde o campo de voz é voice_id.
Escolha uma voz para o roteiro que você tem
| Preset | Descrição publicada da voz | Idioma nativo |
|---|---|---|
| Serena | voz feminina calorosa e suave | chinês |
| Vivian | voz feminina clara, levemente provocadora | chinês |
| Uncle_Fu | voz masculina grave e macia | chinês |
| Dylan | voz masculina distinta de Pequim | chinês, dialeto de Pequim |
| Eric | voz masculina viva, levemente rouca | chinês, dialeto de Sichuan |
| Ryan | voz masculina ritmada | inglês |
| Aiden | voz masculina americana distinta | inglês |
| Ono_Anna | voz feminina leve e brincalhona | japonês |
| Sohee | voz feminina calorosa e expressiva | coreano |
Todo preset consegue ler qualquer idioma compatível, mas a equipe do Qwen recomenda o idioma nativo da voz para a melhor qualidade. Para um personagem masculino em inglês, comece com Ryan ou Aiden. Para um personagem feminino em inglês, experimente Serena ou Vivian; o conjunto não tem voz feminina com inglês como idioma nativo, então ouça antes de decidir.
Ouça uma mensagem de voz com Serena: uma mensagem noturna de "me liga de volta" lida com uma instrução ofegante e provocadora.
Teste primeiro no Playground
Abra a página da tarefa Qwen3 TTS e use a aba Playground:
- Em Text, cole apenas as palavras que devem ser ouvidas (o roteiro de exemplo da página é um bom primeiro teste).
- Escolha um nome em Voice (Serena por padrão).
- Escreva a nota de leitura em Delivery instructions.
- Deixe Language em Auto-detect, ou escolha inglês para um roteiro em inglês se a detecção for ambígua.
- Execute e depois reproduza o resultado em Output e baixe o MP3.
Um adulto fictício depois de um encontro: 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 "Quente e um pouco tímido, falando baixo com um único ouvinte adulto. Mantenha a pergunta final em tom de conversa." Não comece o texto com Serena: nem com "Read this in a soft voice"; os dois seriam lidos em voz alta. Experimente duas ou três vozes e notas aqui antes de escrever código; o preço aparece antes de você executar.
language aceita auto, zh, en, de, fr, es, it, pt, ru, ja e ko. Ele escolhe como o texto é lido; não traduz.
Depois chame pelo código
Instale o SDK Python (pip install spicyapi), defina SPICY_API_KEY no ambiente e execute:
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")A espera, as novas tentativas, os orçamentos e os erros estão na referência do SDK Python e no guia de tarefas assíncronas.
Ou deixe um Agent executar
Se um assistente deve dar voz às suas falas, dê a ele a CLI ou o servidor MCP. Os dois mostram o preço e pedem confirmação antes de uma chamada paga. O Skill acrescenta instruções por cima de qualquer um dos dois.
- CLI.
spicyapiexecuta uma tarefa a partir de um terminal (npx @spicyapi/clifunciona sem instalar). Coloque o mesmo objetoinputeminput.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. Adicione o servidor MCP ao seu assistente e pergunte: "Leia esta fala com Qwen3 TTS, Serena, quente e um pouco tímido." Ele chama
spicyapi_task_create(que para para sua confirmação de preço) e depoisspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstala o Agent Skill, que ensina um assistente de programação a ler o esquema atual e a reutilizar chaves de idempotência. Ele não executa tarefas sozinho, então use-o com a CLI ou o MCP.
Direcione a mesma fala de três maneiras
Mantenha o texto e a voz fixos e mude apenas a nota. Para "I thought you'd forgotten":
| Sentimento pretendido | Instrução para testar |
|---|---|
| Alívio | "Suspiro suave de alívio, sorrindo, um pouco mais baixo na última palavra" |
| Ferido | "Quieto e contido, mais devagar, sem sorriso" |
| Provocação | "Leve e brincalhão, leve elevação no final, como se escondesse um sorriso" |
Mude uma coisa por vez. "Remova o sussurro" ou "mais devagar após a primeira frase" corrige uma tomada; "mais emocional, mais humano" não. Se o resultado ficar dramático demais, encurte a nota para "Leitura conversacional natural."
Ele consegue ler um roteiro NSFW?
Os testes cobriram uma passagem adulta direta, uma passagem emoldurada como audiobook e uma passagem com muitas marcações de cena, usando Serena ou Ryan com instruções de leitura. As transcrições direta e de audiobook corresponderam ao roteiro palavra por palavra, vocabulário adulto incluído, e o texto das instruções nunca foi lido em voz alta.
A passagem com muitas marcações manteve o vocabulário adulto, mas desviou mais do roteiro por causa de vocalizações não verbais. Trate respirações e risadas como algo para testar, não para controlar: se uma cena depender de uma, gere aquele momento primeiro e não suponha que a sintaxe de colchetes ou parênteses de outro modelo funciona aqui.
Monte uma cena com dois personagens
Uma requisição entrega uma voz. Para dois adultos fictícios, gere cada turno separadamente:
| Turno | Voz | Texto | Direção |
|---|---|---|---|
| 1 | Serena | "Did you really think I'd leave without saying goodnight?" | pergunta quente e relaxada |
| 2 | Ryan | "No. I was hoping you would come find me." | resposta quieta e divertida |
Tutoriais de ComfyUI com vários falantes analisam nomes de falantes, pausas e sobreposições em um nó extra; essas tags não são campos de entrada aqui. Remova os nomes do texto falado, envie cada turno com seu próprio voice_id e depois ajuste as pausas no seu editor. Comece com uma pausa curta e mova o segundo clipe até a resposta soar natural. Colocar os dois nomes em um único campo text faz um preset ler os rótulos e as duas falas. Para roteirizar a conversa inteira e juntar os clipes automaticamente, veja o fluxo de diálogo do Seed Speech 2.0; o script de junção funciona com qualquer voz.
Para uma história longa de voz única, divida antes de 2.000 caracteres nos limites de frase ou parágrafo e reutilize a mesma voz e a mesma nota em cada trecho. Para substituir uma frase, regenere toda a frase ao redor e corte nas pausas vizinhas, para que volume e ritmo continuem casados.
A cobrança mínima pesa nas respostas curtas
O custo é max(text characters, 100) × $0.068 / 1,000, contando espaços e pontuação. As instruções são gratuitas.
| Tamanho da entrada | Caracteres cobrados | Custo |
|---|---|---|
| 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 |
Dez respostas separadas de 40 caracteres custam $0.068, embora os textos somem apenas 400 caracteres; uma requisição de 400 caracteres com a mesma voz custa $0.0272. Junte a narração contínua de uma mesma voz quando a sua edição permitir, mas não junte personagens diferentes para escapar do mínimo.
Corrija um resultado decepcionante
| Problema | Mudança |
|---|---|
| Uma fala sai apressada | Adicione "Sem pressa, com uma pausa natural após a primeira frase" a instructions |
| Um nome é pronunciado errado | Escreva-o foneticamente em text; mantenha a grafia correta no sua transcrição pública |
| A nota mal muda o timbre | Tente outro preset; notas de leitura não mudam o caráter básico de uma voz |
A requisição rejeita speed, pitch ou ref_audio | Remova-os e use os quatro campos acima |
Se você precisa de clonagem de voz enviada ou conversa ao vivo, escolha uma tarefa que exponha isso; para comparar outros modelos de voz para roteiros adultos, veja nossa comparação de APIs de texto para voz.






