Communitygithub.com

babysor/MockingBird

Converta texto em fala usando Kokoro ou Noiz, com modos simples e alinhado à linha do tempo.

O que é MockingBird?

Esta skill permite converter qualquer texto em áudio de fala, oferecendo dois backends flexíveis: Kokoro (execução local) e Noiz (nuvem). Ela suporta dois modos principais – o modo simples, para converter texto diretamente em áudio, e o modo de linha do tempo (timeline), que utiliza arquivos SRT para gerar áudio alinhado temporalmente, ideal para dublagem, legendas ou narração de vídeos. A skill oferece controle detalhado sobre vozes por segmento, clonagem de voz a partir de áudio de referência, e parâmetros como emoção e duração exata. É especialmente útil para desenvolvedores que precisam gerar áudio de alta qualidade com timing preciso, e pode ser usada em diversas plataformas que suportam scripts bash. O funcionamento é baseado em scripts de linha de comando, permitindo integração fácil em pipelines de automação.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/babysor/MockingBird/tree/HEAD/skills/speak

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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

NecessidadeRecomendado
Apenas ler texto em voz alta, sem complicaçõesKokoro (padrão)
Audiobook de EPUB/PDF com capítulosKokoro (suporte nativo)
Mistura de vozes ("v1:60,v2:40")Kokoro
Clonagem de voz a partir de áudio de referênciaNoiz
Controle de emoção (parâmetro emo)Noiz
Duração exata por segmento no lado do servidorNoiz

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

  • ffmpeg no 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 kokoro para usar o backend local

Para detalhes do backend e referência completa de argumentos, veja reference.md.

Habilidades Relacionadas