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èle | Verdict |
|---|---|
| Sidon v0.1 | Par 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-USE | Conserve 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éfaut | Signification |
|---|---|---|
modal_command | modal | Commande qui exécute les applications Modal (un wrapper qui sélectionne un profil ou un espace de travail convient) |
run_notes | aucune | Instructions 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 | -14 | Cible de loudness intégrée (style YouTube) |
true_peak_db | -1.5 | Plafond 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>.
- 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 - Tester d'abord sur 30 secondes. Coupez un extrait d'une section avec de la parole (pas les premières secondes) :
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.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 - Exécuter la piste complète :
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.$MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src audio.flac --out audio_sidon.flac - Mesurer la loudness (premier passage du
loudnormen 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 '^{' - Remuxer avec les valeurs mesurées. La vidéo est copiée en flux :
Pour les sources HEVC qui doivent être lues dans les lecteurs Apple, ajoutezffmpeg -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. - Vérifier :
ffprobela 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.