Limpia la voz en un vídeo con Sidon en Modal
Restauración de voz con Sidon v0.1 (sarulab-speech/sidon-v0.1 en Hugging Face), un modelo de audio-a-audio
que resintetiza la voz a 48 kHz. Necesita una GPU, por lo que el modelo se ejecuta en Modal; todo lo demás
(extracción, sonoridad, remuxado) es ffmpeg común en la máquina local. El flujo de vídeo nunca se vuelve a codificar.
El trabajo de Modal es scripts/sidon_enhance.py en este plugin (${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py).
Elección del modelo (por qué Sidon)
| Modelo | Veredicto |
|---|---|
| Sidon v0.1 | Predeterminado. Ligero; un archivo de 11 minutos se ejecutó en un trabajo en una GPU clase L4 por unos centavos. La salida es limpia, de banda completa, 48 kHz. |
| NVIDIA RE-USE | Conserva más detalle espectral del hablante, pero se quedó sin memoria de GPU en archivos largos (falló en el segundo fragmento de 30 s de un archivo de 11 minutos). Úselo solo para clips cortos. |
| DeepFilterNet | Descartado: distorsión audible en la voz. |
Sidon regenera todo por encima de 8 kHz, por lo que el resultado es una voz sin ambiente ni fondo. La música y otros sonidos no verbales en la pista se pierden. Si el vídeo tiene fondos musicales, limpie la voz antes de agregarlos.
Preferencias
Lea remote-video-editing/preferences.json bajo la primera raíz de datos que exista: $CLAUDE_USER_DATA, luego
~/.claude-user-data, luego ${XDG_DATA_HOME:-~/.local/share}/claude-plugins. Claves:
| Clave | Valor predeterminado | Significado |
|---|---|---|
modal_command | modal | Comando que ejecuta aplicaciones Modal (un envoltorio que selecciona un perfil o espacio de trabajo está bien) |
run_notes | ninguno | Instrucciones de texto libre sobre dónde ejecutar Modal (p. ej., otro host que tenga la autenticación) y cómo los archivos llegan a él. Sígalas. |
loudness_lufs | -14 | Objetivo de sonoridad integrada (estilo YouTube) |
true_peak_db | -1.5 | Límite de pico real |
Si no existe ningún archivo y modal token no está configurado (modal profile current falla), deténgase y dígale al usuario que ejecute modal setup primero.
Procedimiento
Trabaje en una carpeta junto al vídeo fuente. IN=<video>, MODAL=<modal_command>, predeterminado modal.
- Extraiga el audio como FLAC mono a 48 kHz:
ffmpeg -v error -y -i "$IN" -vn -ac 1 -ar 48000 -c:a flac -sample_fmt s16 audio.flac - Pruebe primero con 30 segundos. Corte un clip de una sección con voz (no los primeros segundos):
Entregue ambos archivos al usuario para que los escuche. No ejecute el archivo completo hasta que apruebe el sonido.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 - Ejecute la pista completa:
El trabajo imprime una línea por cada fragmento de 96 s. La primera ejecución construye la imagen (unos minutos); las ejecuciones posteriores la reutilizan.$MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src audio.flac --out audio_sidon.flac - Mida la sonoridad (primera pasada de
loudnormde dos pasadas):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 '^{' - Remuxee con los valores medidos. El vídeo se copia en flujo:
Para fuentes HEVC que deben reproducirse en reproductores Apple, añadaffmpeg -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 "<name>_clean.mp4"-tag:v hvc1. - Verifique:
ffprobela duración contra la fuente (debe coincidir dentro de un fotograma), y corte un par de 30 s antes/después en el mismo desplazamiento (-vn -c:a copy) para que el usuario compare.
Biblioteca de scripts
Si el usuario tiene una biblioteca de scripts (find-script, save-script), consúltela antes de cambiar el trabajo de Modal y guarde cualquier versión modificada después.
Costo y límites
- Lista de GPU en el script: L4, A10G, L40S (la que Modal tenga libre). Tiempo de espera 1 hora.
- El archivo completo se envía a la función como bytes. Aceptable para pistas de voz de hasta una o dos horas de FLAC mono; para material más largo, divida el audio, ejecute las partes y únalas con ffmpeg
concat. - Los pesos se descargan de Hugging Face en cada inicio en frío (público, no se necesita token).
Relacionado
Para edición local, renderizado y trabajo de audio (Kdenlive, melt, presets de ffmpeg, corte de silencios), consulte el skill complementary-plugins en este plugin.