speak
Converta qualquer texto em áudio de fala. Suporta dois backends (Kokoro local, Noiz nuvem), dois modos (simples ou alinhado à linha do tempo) e controle de voz por segmento.
Disparadores
- texto para fala / falar / dizer / tts
- clonagem de voz / dublagem
- epub para áudio / srt para áudio / converter para áudio
Modo Simples — texto para áudio
# Kokoro (detectado automaticamente quando instalado)
bash skills/speak/scripts/tts.sh speak -t "Hello world" -v af_sarah -o hello.wav
bash skills/speak/scripts/tts.sh speak -f article.txt -v zf_xiaoni --lang cmn -o out.mp3 --format mp3
# Noiz (detectado automaticamente quando NOIZ_API_KEY está definida, ou force com --backend noiz)
# Se --voice-id for omitido, o script exibe 5 vozes internas disponíveis e sai.
# Escolha uma da saída e reexecute com --voice-id <id>.
bash skills/speak/scripts/tts.sh speak -f input.txt --voice-id voice_abc --auto-emotion --emo '{"Joy":0.5}' -o out.wav
# Noiz: --duration opcional (float, segundos, intervalo (0, 36]) para comprimento alvo do áudio
bash skills/speak/scripts/tts.sh speak -t "Short line" --voice-id voice_abc --duration 3.5 -o out.wav
# Clonagem de voz (apenas Noiz — não precisa de voice-id, usa áudio de referência)
# Use seu próprio áudio de referência: caminho de arquivo local ou URL (apenas com Noiz).
bash skills/speak/scripts/tts.sh speak -t "Hello" --ref-audio ./ref.wav -o clone.wav
bash skills/speak/scripts/tts.sh speak -t "Hello" --ref-audio https://example.com/my_voice.wav -o clone.wav
Modo Linha do Tempo — SRT para áudio alinhado temporalmente
Para temporização precisa por segmento (dublagem, legendas, narração de vídeo).
Passo 1: Obter ou criar um SRT
Se o usuário não tiver um, gere a partir do texto:
bash skills/speak/scripts/tts.sh to-srt -i article.txt -o article.srt
bash skills/speak/scripts/tts.sh to-srt -i article.txt -o article.srt --cps 15 --gap 500
--cps = caracteres por segundo (padrão 4, bom para chinês; ~15 para inglês). O agente também pode escrever o SRT manualmente.
Passo 2: Criar um mapa de vozes
Arquivo JSON que controla as configurações de voz padrão e por segmento. As chaves de segments suportam índice único "3" ou intervalo "5-8".
Mapa de vozes Kokoro:
{
"default": { "voice": "zf_xiaoni", "lang": "cmn" },
"segments": {
"1": { "voice": "zm_yunxi" },
"5-8": { "voice": "af_sarah", "lang": "en-us", "speed": 0.9 }
}
}
Mapa de vozes Noiz (adiciona suporte a emo, reference_audio). reference_audio pode ser um caminho local ou uma URL (áudio próprio do usuário; apenas Noiz):
{
"default": { "voice_id": "voice_123", "target_lang": "zh" },
"segments": {
"1": { "voice_id": "voice_host", "emo": { "Joy": 0.6 } },
"2-4": { "reference_audio": "./refs/guest.wav" }
}
}
Divisão Dinâmica de Áudio de Referência:
Se você estiver traduzindo ou dublando um vídeo e quiser que cada sentença use automaticamente o áudio do vídeo original no mesmo timestamp exato como seu áudio de referência, use o argumento --ref-audio-track em vez de definir reference_audio no mapa:
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json --ref-audio-track original_video.mp4 -o output.wav
Veja examples/ para exemplos completos.
Passo 3: Renderizar
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json -o output.wav
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json --backend noiz --auto-emotion -o output.wav
Quando Escolher Qual
| Necessidade | Recomendado |
|---|---|
| Apenas ler texto em voz alta, sem complicações | Kokoro (padrão) |
| Audiobook de EPUB/PDF com capítulos | Kokoro (suporte nativo) |
Mistura de vozes ("v1:60,v2:40") | Kokoro |
| Clonagem de voz a partir de áudio de referência | Noiz |
Controle de emoção (parâmetro emo) | Noiz |
| Duração exata por segmento no lado do servidor | Noiz |
Quando o usuário precisar de controle de emoção + clonagem de voz + duração precisa juntos, Noiz é o único backend que suporta todos os três.
Requisitos
ffmpegno PATH (modo linha do tempo)- Noiz: obtenha sua chave de API em developers.noiz.ai, depois execute
bash skills/speak/scripts/tts.sh config --set-api-key SUA_CHAVE - Kokoro: se já estiver instalado, passe
--backend kokoropara usar o backend local
Para detalhes do backend e referência completa de argumentos, veja reference.md.