Communitygithub.com

Converse com Qualquer Um

Converse com qualquer pessoa real ou personagem fictício com a própria voz deles, encontrando automaticamente sua fala online, extraindo uma amostra de referência limpa e gerando respostas de áudio. Também suporta a geração de uma voz correspondente a partir de uma imagem enviada.

O que é Converse com Qualquer Um?

Esta skill permite que você roleplay como qualquer pessoa real ou personagem fictício usando a voz deles, gerando respostas de áudio realistas. Ela possui dois fluxos de trabalho principais: o Fluxo A (baseado em nome), que encontra vídeos online da pessoa, baixa o áudio e legendas, extrai o melhor segmento de fala de referência e o utiliza para sintetizar novas falas com a voz clonada; e o Fluxo B (baseado em imagem), que analisa uma foto de uma pessoa não reconhecível para descrever suas características vocais e, em seguida, projeta uma voz compatível usando a API Noiz. A skill integra-se com ferramentas como yt-dlp para download de vídeos, ffmpeg para processamento de áudio e a skill TTS para conversão de texto em fala. Um forte aviso ético é incluído para evitar a suplantação de pessoas privadas ou o uso para engano, assédio ou difamação, exigindo que o usuário esteja ciente de que o áudio gerado é sintético.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/noizai/skills/tree/main/skills/chat-with-anyone

Perguntar na sua IA favorita

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

Documentação

O que Converse com Qualquer Um faz?

Clone a voz de uma pessoa real a partir de um vídeo online, ou crie uma voz a partir de uma foto, e então roleplay como essa pessoa com TTS.

Importante: Uso Ético e Direitos Autorais

Esta skill sintetiza fala que imita vozes reais. Antes de prosseguir, o agente deve:

  1. Nunca se passar por alguém para enganar, fraudar ou assediar.
  2. Usar apenas mídia publicamente disponível (discursos públicos, entrevistas, coletivas de imprensa) como áudio de referência.
  3. Informar o usuário de que o áudio gerado é sintético e não deve ser apresentado como gravações genuínas.
  4. Recusar solicitações que tenham como alvo indivíduos privados que não consentiram, ou que sejam claramente destinadas a engano, assédio ou difamação.

Se a intenção do usuário parecer prejudicial, recuse educadamente e explique o motivo.

Pré-requisitos

DependênciaTipoComo verificar
ffmpegBinário do sistemaffmpeg -version
yt-dlpBinário do sistemayt-dlp --version
tts skillSkill do Cursorls skills/tts/scripts/tts.py
NOIZ_API_KEYVariável de ambiente ou arquivopython3 skills/tts/scripts/tts.py config --show

Antes da primeira execução, verifique se todas as dependências estão presentes:

ffmpeg -version && yt-dlp --version && ls skills/tts/scripts/tts.py

Se yt-dlp estiver faltando, instale-o:

uv pip install yt-dlp

Se a chave da API Noiz não estiver configurada:

python3 skills/tts/scripts/tts.py config --set-api-key SUA_CHAVE

Seleção de Modo

  • O usuário nomeia uma pessoa (real ou fictícia) --> Fluxo A
  • O usuário fornece uma imagem, a pessoa não é reconhecível --> Fluxo B
  • O usuário fornece uma imagem, a pessoa é uma figura pública reconhecível --> Fluxo A (a voz real é mais autêntica)
  • Várias pessoas na imagem --> Pergunte qual pessoa primeiro

Fluxo A: Baseado em nome (voz a partir de vídeo online)

Acompanhe o progresso com esta lista de verificação:

- [ ] A1. Desambiguar personagem
- [ ] A2. Encontrar vídeo de referência
- [ ] A3. Baixar áudio + legendas
- [ ] A4. Extrair o melhor segmento de referência
- [ ] A5. Gerar fala

A1. Desambiguar Personagem

Se ambíguo (por exemplo, "Presidente dos EUA", "Ator do Homem-Aranha"), pergunte ao usuário para especificar a pessoa exata antes de prosseguir.

A2. Encontrar um Vídeo de Referência

Use pesquisa na web para encontrar um vídeo no YouTube (ou Bilibili) da pessoa falando claramente. Melhores candidatos: entrevistas, discursos, coletivas de imprensa. Evite vídeos com música de fundo pesada.

Consultas de pesquisa para tentar:

  • {NOME_DO_PERSONAGEM} entrevista
  • {NOME_DO_PERSONAGEM} discurso
  • {NOME_DO_PERSONAGEM} coletiva de imprensa

A3. Baixar Áudio e Legendas

mkdir -p "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}"
yt-dlp -x --audio-format mp3 \
  --write-subs --write-auto-subs --sub-langs "en,pt" \
  --convert-subs srt \
  -o "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/%(title)s.%(ext)s" \
  "{URL_DO_VIDEO}"

Após o download, liste o diretório de saída para identificar o arquivo de áudio e o arquivo de legenda SRT:

ls tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/

Saída esperada: um arquivo de áudio .mp3 e um ou mais arquivos de legenda .srt.

Se nenhum arquivo de legenda aparecer: tente um vídeo diferente que tenha legendas geradas automaticamente, ou ajuste --sub-langs para o idioma alvo.

A4. Extrair o Melhor Segmento de Referência

Use o script de extração automatizada — ele analisa o SRT, encontra a janela de fala mais densa de 3 a 12 segundos e a extrai como um WAV:

python3 skills/converse-com-qualquer-um/scripts/extract_ref_segment.py \
  --srt "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/{ARQUIVO_SRT}" \
  --audio "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/{ARQUIVO_AUDIO}" \
  -o "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/ref.wav"

O script imprime o intervalo de tempo selecionado e salva o WAV de referência. Verifique se a saída existe e não está vazia antes de prosseguir.

Se o script relatar nenhum segmento adequado: tente --min-duration 2 para clipes mais curtos, ou baixe um vídeo diferente.

A5. Gerar Fala e Roleplay

Escreva uma resposta no personagem e a sintetize:

python3 skills/tts/scripts/tts.py \
  -t "{TEXTO_DA_RESPOSTA}" \
  --ref-audio "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/ref.wav" \
  -o "tmp/converse_com_qualquer_um/{NOME_DO_PERSONAGEM}/reply.wav"

Apresente o arquivo de áudio gerado ao usuário junto com o texto. Para mensagens subsequentes, reutilize o mesmo caminho --ref-audio.


Fluxo B: Baseado em imagem (voz a partir de foto)

Acompanhe o progresso com esta lista de verificação:

- [ ] B1. Analisar imagem
- [ ] B2. Projetar voz
- [ ] B3. Visualizar (opcional)
- [ ] B4. Gerar fala

B1. Analisar a Imagem

Use sua capacidade de visão para examinar a imagem:

  1. Se a pessoa for uma figura pública reconhecível --> mude para o Fluxo A para uma voz autêntica.
  2. Se não for reconhecível, produza uma descrição de voz cobrindo:
    • Gênero (masculino / feminino)
    • Idade aproximada (por exemplo, "cerca de 30 anos")
    • Aparente comportamento (por exemplo, alegre, autoritário, gentil)
    • Pistas contextuais (por exemplo, terno --> tom profissional; roupa esportiva --> enérgico)

B2. Projetar a Voz

Passe tanto a imagem quanto a descrição para o script de design de voz:

python3 skills/converse-com-qualquer-um/scripts/voice_design.py \
  --picture "{CAMINHO_DA_IMAGEM}" \
  --voice-description "{DESCRIÇÃO_DA_VOZ}" \
  -o "tmp/converse_com_qualquer_um/voice_design"

O script gera:

  • Características de voz detectadas (impressas no stdout)
  • Arquivos de áudio de visualização no diretório de saída
  • voice_id.txt contendo o melhor ID de voz

Leia o ID da voz:

cat tmp/converse_com_qualquer_um/voice_design/voice_id.txt

B3. Visualizar (Opcional)

Apresente os arquivos de áudio de visualização do diretório de saída para que o usuário possa ouvir a voz. Se não estiver satisfeito, execute novamente B2 com --voice-description ou --guidance-scale ajustados.

B4. Gerar Fala e Roleplay

python3 skills/tts/scripts/tts.py \
  -t "{TEXTO_DA_RESPOSTA}" \
  --voice-id "{ID_DA_VOZ}" \
  -o "tmp/converse_com_qualquer_um/voice_design/reply.wav"

Para mensagens subsequentes, continue usando o mesmo --voice-id para consistência.


Exemplo: Baseado em nome

Usuário: Eu quero conversar com o Trump, pedir para ele me contar uma história de ninar.

Passos do agente:

  1. Personagem: Donald Trump. Nenhuma desambiguação necessária.
  2. Pesquise Donald Trump discurso youtube, encontre um vídeo de discurso claro.
  3. Baixe: yt-dlp -x --audio-format mp3 --write-subs --write-auto-subs --sub-langs "en" --convert-subs srt -o "tmp/converse_com_qualquer_um/trump/%(title)s.%(ext)s" "https://youtube.com/watch?v=..."
  4. Extraia referência: python3 skills/converse-com-qualquer-um/scripts/extract_ref_segment.py --srt "tmp/converse_com_qualquer_um/trump/....srt" --audio "tmp/converse_com_qualquer_um/trump/....mp3" -o "tmp/converse_com_qualquer_um/trump/ref.wav"
  5. Gere TTS no estilo do Trump: python3 skills/tts/scripts/tts.py -t "Deixe-me contar uma história de ninar tremenda..." --ref-audio "tmp/converse_com_qualquer_um/trump/ref.wav" -o "tmp/converse_com_qualquer_um/trump/reply.wav"
  6. Apresente reply.wav e o texto da história ao usuário.

Exemplo: Baseado em imagem

Usuário: [envia foto.jpg] Eu quero conversar com a pessoa desta foto

Passos do agente:

  1. Análise de visão: jovem mulher não reconhecível, ~25 anos, suéter casual, sorriso caloroso.
  2. Projete a voz: python3 skills/converse-com-qualquer-um/scripts/voice_design.py --picture "foto.jpg" --voice-description "Uma jovem chinesa de cerca de 25 anos, voz gentil e calorosa, tom amigável" -o "tmp/converse_com_qualquer_um/voice_design"
  3. Leia o ID da voz de tmp/converse_com_qualquer_um/voice_design/voice_id.txt.
  4. Gere TTS: python3 skills/tts/scripts/tts.py -t "Olá! Prazer em conhecer você!" --voice-id "{ID_DA_VOZ}" -o "tmp/converse_com_qualquer_um/voice_design/reply.wav"
  5. Apresente o áudio e continue o roleplay com o mesmo --voice-id.

Solução de Problemas

ProblemaSolução
Falha no download do yt-dlp ou vídeo indisponívelTente uma URL de vídeo diferente; algumas regiões/vídeos são restritos. Execute yt-dlp -U para atualizar
Nenhum arquivo de legenda SRTBaixe novamente com --sub-lang en,pt; se ainda assim não aparecer, tente um vídeo diferente com legendas automáticas
extract_ref_segment.py não encontra janela adequadaUse --min-duration 2 para clipes mais curtos, ou tente um vídeo diferente
Erro no design de vozVerifique a chave da API Noiz; certifique-se de que a imagem é uma foto clara de uma pessoa
Saída TTS soa erradaPara o Fluxo A, tente um vídeo de referência diferente; para o Fluxo B, ajuste --voice-description

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

Habilidades Relacionadas