Que fait soundcheck ?
L'IA vidéo semble terminée bien avant que l'audio ne semble terminée. Les prises TTS sont collées ensemble à des niveaux différents, le lit musical ne s'efface jamais, le mix est poussé dans le limiteur pour sonner « fort », et la voix IA conserve son sifflement 6-10 kHz et son boom 100-300 Hz.
soundcheck transforme cela en chiffres, le corrige et prouve la correction.
Lancer
python scripts/soundcheck.py analyze <fichier> [--target youtube] [--music musique.wav] [--json]
python scripts/soundcheck.py fix <fichier> [--target youtube] [--music musique.wav] [--out sortie.wav] [--level] [--naturalize]
python scripts/soundcheck.py demo
fix nécessite ffmpeg dans le PATH. analyze et demo nécessitent seulement Python 3 + numpy
(scipy est utilisé pour un filtrage plus rapide lorsqu'il est présent).
Donnez à fix une vidéo et il renvoie une vidéo : l'audio corrigé est multiplexé avec la
trame vidéo originale (copiée, jamais ré-encodée). Sans --out, il écrit
<nom>.soundcheck.mp4 à côté de la source.
--level ajuste le niveau des prises de parole séparées avant le mastering. Utilisez-le pour des dialogues
enregistrés ou synthétisés ligne par ligne ; ne l'utilisez pas sur du contenu musical, où une montée ou une baisse
fait partie de l'arrangement, pas un défaut. analyze affiche les horodatages des plus grands sauts de prise pour
que vous puissiez décider.
Vérifier avant de faire confiance
python scripts/verify.py # 20 vérifications, exit 0 = tout bon
La suite vérifie que nos compteurs sont d'accord avec le ebur128 de ffmpeg, que fix renvoie 0 uniquement lorsque
chaque indice est réussi, que le fichier livré est re-mesuré avec un compteur indépendant, que la dynamique
n'est pas écrasée, et que les silences/courts clips/mono 24-bit/mp4/fichiers manquants se comportent correctement.
Si cela échoue sur votre machine, corrigez cela avant de toucher à l'audio de quiconque.
Lorsque vous traitez du matériel réel, faites toujours un test A/B. La conformité mesurée est nécessaire, pas suffisante.
Flux de travail
- Mesurer avant de toucher quoi que ce soit. Exécutez
analyze. Ne commencez jamais l'égalisation à partir d'une supposition. - Lire le tableau de bord, pas le score. Le score est un résumé ; les indices en échec sont le travail.
- Corriger. Exécutez
fix --target <plateforme>. Il choisit la profondeur corrective de l'égalisation à partir de la mesure, applique la chaîne, calcule un gain statique à partir de notre propre mesure de sonie, limite et re-mesure. - Vérifier.
fixrenvoie non-zéro lorsqu'un indice mesuré est encore hors spécification. Ne signalez pas « terminé » sur un code de sortie non-zéro - signalez plutôt les indices restants. - A/B. Conservez l'original. Si la correction sonne pire que le problème (sur-égalisé, pompage), réduisez la profondeur corrective et relancez. La conformité mesurée est nécessaire, pas suffisante.
Les 7 Indices Audio IA
| # | Indice | Mesuré comme | Cible | Cause habituelle |
|---|---|---|---|---|
| 1 | Inégalité de niveau entre prises | Niveaux de région de parole, delta adjacent | <= 3 dB | Prises TTS rendues séparément |
| 2 | Aucune tête d'affichage | Crête vrai | <= -1 dBTP | Mastering « rends-le fort » |
| 3 | Combat voix/musique | LUFS voix - LUFS musique | >= 4 dB | Absence de ducking par sidechain |
| 4 | Sifflement agressif | Énergie 6-10 kHz / 1-4 kHz | <= 0.45 | /s/ et /sh/ synthétiques |
| 5 | Boue médium-grave | Énergie 100-300 Hz / 300-3k | <= 0.40 | Boom de proximité, lit de basse fort |
| 6 | Pas de plancher, pas d'espace | Niveau de plancher sonore vs niveau programme | >= 45 dB en dessous | Artefacts de débruitage, couches de son ambiant |
| 7 | Problèmes de phase / DC | Corrélation L/R, offset DC | corr >= 0.2 | Prises concaténées, ré-échantillonnage |
L'indice 3 est exécuté uniquement lorsque vous passez --music avec une piste de musique isolée. L'indice 6 signale n/a
lorsque le matériel n'a pas de passage silencieux - la musique douce n'est pas du bruit, et un honnête
« impossible à évaluer » n'est pas une réussite. L'indice 1 signale où se trouvent les plus grands sauts, pour qu'un humain puisse écouter.
Échelle de sonie
| Livraison | Intégré | Crête vrai | Notes |
|---|---|---|---|
| YouTube / TikTok / Reels | -14 LUFS | -1 dBTP | les plateformes normalisent ici |
| Spotify | -14 LUFS | -1 dBTP | |
| Apple Music | -16 LUFS | -1 dBTP | |
| Podcast (stéréo / mono) | -16 / -19 LUFS | -1 dBTP | |
| Broadcast (EBU R128) | -23 LUFS | -1 dBTP | |
| Court métrage / OTT (CN) | -24 LKFS | -1 dBTP | |
| Cinéma | -27 LUFS | -2 dBTP | ancré sur le dialogue |
Ordre de la chaîne (c'est important)
passe-haut 70 Hz -> EQ soustractif (boue, puis sifflement) -> compression douce -> limiteur -> gain statique -> limiteur
- La profondeur corrective de l'égalisation est dérivée de l'indice mesuré, pas d'un préréglage fixe.
- La compression est douce intentionnellement (2.5:1, ~3-6 dB de réduction de gain). C'est de la post-prod, pas de la conception sonore.
- Le gain est appliqué après la chaîne corrective et mesuré sur la sortie de la chaîne, de sorte que le fichier livré tombe dans les spécifications même lorsque l'égalisation a changé la sonie.
- Le limiteur est à 0.79 (-2 dBFS échantillon crête) pour survivre aux dépassements inter-échantillons à -1 dBTP.
Garde-fous
- Ne jamais revendiquer le succès sans une nouvelle mesure. Le code de sortie du script est la source de vérité.
- Ne pas ré-encoder en perte deux fois. Décodez en WAV une fois, travaillez en WAV, encodez une fois à la fin.
- Ne pas sur-échantillonner pour simuler la qualité. Sortie à 48 kHz ; la fréquence interne 192 kHz de loudnorm n'est pas une fonctionnalité.
- Ne pas aplatir la dynamique pour atteindre un nombre. Si atteindre -14 LUFS nécessite plus de 6 dB de limitation, dites-le et livrez à -16 à la place - un mix écrasé est pire qu'un mix silencieux.
- Les pistes musicales restent séparées. Ducking sur un mix mixé détruit la voix ; demandez des pistes séparées.
- Conservez l'original. Écrivez toujours dans un nouveau fichier.
Ce que cela ne peut pas corriger
analyze affiche un avertissement lorsque la source n'a presque pas d'énergie au-dessus de 8 kHz - la signature d'un
TTS 16/22 kHz passé dans une session 48 kHz. Cette matité n'est pas un problème de mastering et aucun égaliseur
ne la ramène. Si l'avertissement se déclenche, dites-le au lieu de « corrigé » : re-rendez la voix avec un TTS
neuronal, puis masterisez.
--naturalize ajoute une petite salle, un plancher de souffle/bruit ambiant et un peu d'air HF. Cela supprime le
signal « sec, silence numérique » ; cela ne peut pas inventer de prosodie et ne sauvera pas une source robotique.
Ne l'activez jamais par défaut sur du contenu musical.
Limites
- L'indice « lit musical » nécessite une piste séparée ; sans elle, l'équilibre voix/musique n'est pas mesuré.
- Le plancher sonore n'a de sens que lorsqu'il y a de vrais passages calmes.
- Le crête vrai est sur-échantillonné 4x ; les diffuseurs exigeant 8x doivent vérifier avec leur propre compteur.
- C'est un outil de livraison, pas un mix créatif. Cela ne rendra pas une mauvaise performance bonne.