Communitygithub.com

clean-voice-sidon

Limpia la pista de voz de un vídeo (grabación telefónica o de talking head) con el modelo de restauración de voz Sidon en una GPU en la nube de Modal, luego normaliza la sonoridad y lo remuxea en el vídeo. Útil para

¿Qué es clean-voice-sidon?

Este skill (clean-voice-sidon) limpia la pista de audio de un vídeo usando el modelo Sidon v0.1 (de sarulab-speech/sidon-v0.1 en Hugging Face), un modelo de audio-a-audio que resintetiza la voz a 48 kHz. Requiere una GPU, por lo que se ejecuta en Modal; el resto del proceso (extracción, normalización de sonoridad, remuxado) usa ffmpeg local sin re-codificar el vídeo. Es útil para limpiar grabaciones de teléfono, talking heads o vídeos con ruido de fondo, y está diseñado para usarse desde asistentes como Claude Code o Cursor. El flujo típico comienza extrayendo el audio como FLAC mono, probando una muestra de 30 segundos para aprobación del usuario, luego procesando el archivo completo en Modal, midiendo la sonoridad con loudnorm, y finalmente remuxando el audio limpio con el vídeo original. El skill soporta personalización mediante preferencias (comando Modal, notas de ejecución, objetivos de sonoridad) y es rentable para pistas de hasta una o dos horas.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/danielrosehill/Remote-Video-Editing/tree/HEAD/skills/clean-voice-sidon

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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)

ModeloVeredicto
Sidon v0.1Predeterminado. 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-USEConserva 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.
DeepFilterNetDescartado: 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:

ClaveValor predeterminadoSignificado
modal_commandmodalComando que ejecuta aplicaciones Modal (un envoltorio que selecciona un perfil o espacio de trabajo está bien)
run_notesningunoInstrucciones 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-14Objetivo de sonoridad integrada (estilo YouTube)
true_peak_db-1.5Lí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.

  1. 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
    
  2. Pruebe primero con 30 segundos. Corte un clip de una sección con voz (no los primeros segundos):
    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
    
    Entregue ambos archivos al usuario para que los escuche. No ejecute el archivo completo hasta que apruebe el sonido.
  3. Ejecute la pista completa:
    $MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src audio.flac --out audio_sidon.flac
    
    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.
  4. Mida la sonoridad (primera pasada de loudnorm de 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 '^{'
    
  5. Remuxee con los valores medidos. El vídeo se copia en flujo:
    ffmpeg -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"
    
    Para fuentes HEVC que deben reproducirse en reproductores Apple, añada -tag:v hvc1.
  6. Verifique: ffprobe la 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.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados