Communitygithub.com

clean-voice-sidon

Nettoie la piste audio d'une vidéo (enregistrement téléphonique ou talking-head) avec le modèle de restauration vocale Sidon sur un GPU cloud Modal, normalise la loudness et remuxe le résultat dans la vidéo. Utilisez-le pour « nettoyer l'audio », « améliorer ma voix », « débruiter cette vidéo », « réparer le micro du téléphone ».

Qu'est-ce que clean-voice-sidon ?

Cette compétence exécute une restauration vocale avancée sur la piste audio d'une vidéo en utilisant le modèle Sidon v0.1, déployé sur un GPU cloud Modal. L'audio est extrait en FLAC mono 48 kHz via ffmpeg local, traité sur Modal (L4, A10G ou L40S), puis normalisé en loudness (LUFS) et remuxé dans la vidéo sans ré-encoder la piste vidéo. Elle permet de supprimer le bruit ambiant, la réverbération et les artefacts des enregistrements téléphoniques ou de talking-head. Le flux vidéo reste intact. Une procédure en plusieurs étapes garantit un contrôle qualité : test d'un extrait de 30 secondes avant de lancer le traitement complet, vérification de la durée, et comparaison avant/après. Le coût est faible grâce à des instances GPU efficaces. Elle s'appuie sur les préférences utilisateur (loudness cible, commande Modal) et peut interagir avec une bibliothèque de scripts pour des modifications avancées.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Nettoyer la voix d'une vidéo avec Sidon sur Modal

Restauration vocale avec Sidon v0.1 (sarulab-speech/sidon-v0.1 sur Hugging Face), un modèle audio vers audio qui resynthétise la voix à 48 kHz. Il nécessite un GPU, donc le modèle s'exécute sur Modal ; tout le reste (extraction, loudness, remuxage) se fait avec ffmpeg localement. Le flux vidéo n'est jamais ré-encodé.

La tâche Modal est scripts/sidon_enhance.py dans ce plugin (${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py).

Choix du modèle (pourquoi Sidon)

ModèleVerdict
Sidon v0.1Par défaut. Léger ; un fichier de 11 minutes a été traité en une seule tâche sur un GPU de classe L4 pour quelques centimes. Le résultat est propre, pleine bande, 48 kHz.
NVIDIA RE-USEConserve plus de détails spectraux propres au locuteur, mais a épuisé la mémoire GPU sur les longs fichiers (a échoué sur le deuxième segment de 30 s d'un fichier de 11 minutes). Utilisez-le uniquement pour les courts extraits.
DeepFilterNetÉcarté : distorsion audible sur la voix.

Sidon régénère tout ce qui est au-dessus de 8 kHz, donc le résultat est une voix sans pièce ni bruit ambiant. La musique et les autres sons non vocaux dans la piste sont perdus. Si la vidéo contient des fonds musicaux, nettoyez la voix avant de les ajouter.

Préférences

Lire remote-video-editing/preferences.json sous la première racine de données existante : $CLAUDE_USER_DATA, puis ~/.claude-user-data, puis ${XDG_DATA_HOME:-~/.local/share}/claude-plugins. Clés :

CléValeur par défautSignification
modal_commandmodalCommande qui exécute les applications Modal (un wrapper qui sélectionne un profil ou un espace de travail convient)
run_notesaucuneInstructions en texte libre sur où exécuter Modal (par exemple, un autre hôte qui détient l'authentification) et comment les fichiers y parviennent. Suivez-les.
loudness_lufs-14Cible de loudness intégrée (style YouTube)
true_peak_db-1.5Plafond du pic vrai

Si aucun fichier n'existe et que modal token n'est pas configuré (modal profile current échoue), arrêtez-vous et dites à l'utilisateur d'exécuter modal setup d'abord.

Procédure

Travaillez dans un dossier à côté de la vidéo source. IN=<video>, MODAL=<modal_command, modal par défaut>.

  1. Extraire l'audio en mono 48 kHz FLAC :
    ffmpeg -v error -y -i "$IN" -vn -ac 1 -ar 48000 -c:a flac -sample_fmt s16 audio.flac
    
  2. Tester d'abord sur 30 secondes. Coupez un extrait d'une section avec de la parole (pas les premières secondes) :
    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
    
    Donnez les deux fichiers à l'utilisateur pour qu'il les écoute. Ne lancez pas le fichier complet tant qu'il n'a pas approuvé le son.
  3. Exécuter la piste complète :
    $MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src audio.flac --out audio_sidon.flac
    
    La tâche affiche une ligne par segment de 96 s. La première exécution construit l'image (quelques minutes) ; les exécutions ultérieures la réutilisent.
  4. Mesurer la loudness (premier passage du loudnorm en deux passes) :
    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. Remuxer avec les valeurs mesurées. La vidéo est copiée en flux :
    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"
    
    Pour les sources HEVC qui doivent être lues dans les lecteurs Apple, ajoutez -tag:v hvc1.
  6. Vérifier : ffprobe la durée par rapport à la source (doit correspondre à une image près), et coupez une paire avant/après de 30 s au même décalage (-vn -c:a copy) pour que l'utilisateur compare.

Bibliothèque de scripts

Si l'utilisateur dispose d'une bibliothèque de scripts (find-script, save-script), vérifiez-la avant de modifier la tâche Modal, et enregistrez toute version modifiée par la suite.

Coût et limites

  • Liste des GPU dans le script : L4, A10G, L40S (selon la disponibilité de Modal). Délai d'expiration de 1 heure.
  • Le fichier entier est envoyé à la fonction sous forme d'octets. Convient pour des pistes vocales jusqu'à une ou deux heures de FLAC mono ; pour un matériel plus long, divisez l'audio, exécutez les parties et assemblez-les avec ffmpeg concat.
  • Les poids sont téléchargés depuis Hugging Face à chaque démarrage à froid (public, aucun jeton nécessaire).

Lié

Pour le montage local, le rendu et le travail audio (Kdenlive, melt, préréglages ffmpeg, coupe des silences), voir la compétence complementary-plugins dans ce plugin.

Individual skills in this repo

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

Skills associés