Limpe a voz de um vídeo com Sidon no Modal
Restauração de fala com Sidon v0.1 (sarulab-speech/sidon-v0.1 no Hugging Face), um modelo
áudio para áudio que re-sintetiza a voz em 48 kHz. Ele precisa de uma GPU, então o modelo roda no Modal;
todo o resto (extração, loudness, remuxagem) é feito com ffmpeg local na máquina. O fluxo de vídeo nunca
é re-codificado.
O job do Modal é scripts/sidon_enhance.py neste plugin (${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py).
Escolha do modelo (por que Sidon)
| Modelo | Veredito |
|---|---|
| Sidon v0.1 | Padrão. Leve; um arquivo de 11 minutos rodou em um job em uma GPU classe L4 por alguns centavos. A saída é limpa, banda completa, 48 kHz. |
| NVIDIA RE-USE | Mantém mais detalhes espectrais do próprio locutor, mas ficou sem memória GPU em arquivos longos (falhou no segundo chunk de 30 s de um arquivo de 11 minutos). Use apenas para clipes curtos. |
| DeepFilterNet | Descartado: distorção audível na voz. |
Sidon regenera tudo acima de 8 kHz, então o resultado é uma voz sem nenhum ruído de ambiente ou fundo. Música e outros sons não-fala na trilha são perdidos. Se o vídeo tiver faixas musicais, limpe a voz antes de adicioná-las.
Preferências
Leia remote-video-editing/preferences.json sob a primeira raiz de dados que existir: $CLAUDE_USER_DATA, depois
~/.claude-user-data, depois ${XDG_DATA_HOME:-~/.local/share}/claude-plugins. Chaves:
| Chave | Padrão | Significado |
|---|---|---|
modal_command | modal | Comando que executa apps Modal (um wrapper que seleciona perfil ou workspace é aceito) |
run_notes | nenhum | Instruções de texto livre sobre onde rodar Modal (ex.: outro host que detém a autenticação) e como os arquivos chegam até ele. Siga-as. |
loudness_lufs | -14 | Alvo de loudness integrada (estilo YouTube) |
true_peak_db | -1.5 | Teto de pico verdadeiro |
Se nenhum arquivo existir e modal token não estiver configurado (modal profile current falhar), pare e
peça ao usuário para rodar modal setup primeiro.
Procedimento
Trabalhe em uma pasta ao lado do vídeo de origem. IN=<video>, MODAL=<modal_command, padrão modal>.
- Extraia o áudio como FLAC mono 48 kHz:
ffmpeg -v error -y -i "$IN" -vn -ac 1 -ar 48000 -c:a flac -sample_fmt s16 audio.flac - Teste com 30 segundos primeiro. Corte um clipe de uma seção com fala (não nos primeiros segundos):
Entregue ambos os arquivos ao usuário para ouvir. Não processe o arquivo completo até que ele aprove o som.ffmpeg -v error -y -ss 60 -t 30 -i audio.flac -c:a flac test30.flac $MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src test30.flac --out test30_sidon.flac - Processe a trilha completa:
O job imprime uma linha por chunk de 96 s. A primeira execução constrói a imagem (alguns minutos); execuções posteriores a reutilizam.$MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src audio.flac --out audio_sidon.flac - Meça a loudness (primeira passagem do loudnorm de duas passagens):
ffmpeg -hide_banner -nostats -i audio_sidon.flac \ -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null - 2>&1 | grep -A12 '^{' - Remuxe com os valores medidos. O vídeo é copiado diretamente:
Para fontes HEVC que precisam tocar em players Apple, adicioneffmpeg -v error -y -i "$IN" -i audio_sidon.flac -map 0:v -map 1:a -c:v copy \ -af "loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:offset=<target_offset>:linear=true,aresample=48000" \ -c:a aac -b:a 192k -movflags +faststart "<nome>_clean.mp4"-tag:v hvc1. - Verifique: Use
ffprobepara comparar a duração com a fonte (deve coincidir dentro de um quadro) e corte um par de 30 s antes/depois no mesmo offset (-vn -c:a copy) para o usuário comparar.
Biblioteca de scripts
Se o usuário tiver uma biblioteca de scripts (find-script, save-script), verifique-a antes de alterar o
job do Modal e salve qualquer versão modificada depois.
Custo e limites
- Lista de GPU no script: L4, A10G, L40S (o que Modal tiver disponível). Timeout de 1 hora.
- O arquivo inteiro é enviado para a função como bytes. Funciona para trilhas de voz de até uma ou duas horas de
FLAC mono; para material mais longo, divida o áudio, processe as partes e junte com ffmpeg
concat. - Os pesos são baixados do Hugging Face a cada cold start (público, nenhum token necessário).
Relacionados
Para edição local, renderização e trabalho de áudio (Kdenlive, melt, predefinições ffmpeg, corte de silêncio), veja a
skill complementary-plugins neste plugin.