Was macht soundcheck?
KI-Videos sehen aus, als wären sie fertig, lange bevor sie klingen, als wären sie fertig. TTS-Takes werden auf unterschiedlichen Lautstärkepegeln aneinandergereiht, die Musikuntermalung duckt sich nie, der Mix wird in den Limiter gedrückt, um „laut“ zu klingen, und die KI-Stimme behält ihr 6–10 kHz Zischen und ihren 100–300 Hz Dröhnton.
soundcheck macht daraus Zahlen, korrigiert es und beweist die Korrektur.
Ausführen
python scripts/soundcheck.py analyze <datei> [--target youtube] [--music musik.wav] [--json]
python scripts/soundcheck.py fix <datei> [--target youtube] [--music musik.wav] [--out ausgabe.wav] [--level] [--naturalize]
python scripts/soundcheck.py demo
fix benötigt ffmpeg im PATH. analyze und demo benötigen nur Python 3 + numpy (scipy wird für schnellere Filterung verwendet, falls vorhanden).
Übergib fix ein Video und es gibt ein Video zurück: Der korrigierte Ton wird gegen den Original-Videostream gemuxt (kopiert, nie neu codiert). Ohne --out schreibt es <name>.soundcheck.mp4 neben die Quelldatei.
--level gleicht den Pegel separater Sprachaufnahmen vor dem Mastering an. Verwende es für Dialoge, die zeilenweise aufgenommen oder synthetisiert wurden; verwende es nicht für musikgeführte Inhalte, bei denen ein An- oder Abschwellen Teil der Anordnung und kein Fehler ist. analyze gibt die Zeitstempel der größten Pegelsprünge aus, damit du entscheiden kannst.
Überprüfe, bevor du ihm vertraust
python scripts/verify.py # 20 Prüfungen, Exit 0 = alles in Ordnung
Die Testsuite prüft, dass unsere Meter mit ffmpregs ebur128 übereinstimmen, dass fix nur dann mit Exit 0 beendet, wenn jeder Indikator bestanden wird, dass die gelieferte Datei mit einem unabhängigen Meter erneut gemessen wird, dass die Dynamik nicht plattgemacht wird und dass Stille / kurze Clips / Mono 24-Bit / mp4 / fehlende Dateien korrekt behandelt werden. Wenn dies auf deinem Rechner fehlschlägt, behebe es, bevor du jemandes Audio anfasst.
Wenn du echtes Material verarbeitest, vergleiche immer A/B. Messbare Einhaltung ist notwendig, nicht hinreichend.
Arbeitsablauf
- Messen, bevor du irgendetwas anfasst. Führe
analyzeaus. Beginne nie mit dem EQ aus einer Vermutung heraus. - Lies die Bewertungstabelle, nicht die Punktezahl. Die Punktezahl ist eine Zusammenfassung; die durchgefallenen Indikatoren sind die eigentliche Arbeit.
- Korrigieren. Führe
fix --target <plattform>aus. Es wählt die EQ-Korrekturtiefe basierend auf der Messung, wendet die Kette an, berechnet eine statische Verstärkung aus unserer eigenen Lautheitsmessung, begrenzt und misst erneut. - Überprüfen.
fixbeendet sich mit einem Fehlercode ungleich Null, wenn ein gemessener Indikator noch außerhalb der Spezifikation liegt. Melde „Fertig“ erst bei Exit 0 – melde stattdessen die verbleibenden Indikatoren. - A/B-Vergleich. Behalte das Original. Wenn die Korrektur schlechter klingt als das Problem (über-EQ, Pumpen), reduziere die Korrekturtiefe und führe es erneut aus. Messbare Einhaltung ist notwendig, nicht hinreichend.
Die 7 KI-Audio-Indikatoren
| # | Indikator | Gemessen als | Ziel | Häufige Ursache |
|---|---|---|---|---|
| 1 | Lautstärkeunterschiede zwischen Takes | Sprachband-Pegel der Regionen, benachbarte Differenz | <= 3 dB | TTS-Takes wurden separat gerendert |
| 2 | Kein Headroom | True Peak | <= -1 dBTP | „Mach es laut“-Mastering |
| 3 | Stimme/Musik-Konflikt | Stimme LUFS – Musik LUFS | >= 4 dB | Kein Sidechain-Ducking |
| 4 | Schrille Zischlaute | Energie 6–10 kHz / 1–4 kHz | <= 0.45 | Synthetische /s/ und /sh/ |
| 5 | Tiefton-„Matsch“ | Energie 100–300 Hz / 300–3 kHz | <= 0.40 | Nähe-Boom, lautes Bassbett |
| 6 | Kein Boden, kein Raum | Rauschboden vs. Programmpegel | >= 45 dB darunter | Entrausch-Artefakte, geschichteter Raumklang |
| 7 | Phasen- / DC-Probleme | L/R-Korrelation, DC-Offset | Korr >= 0.2 | Aneinandergereihte Takes, Resampling |
Indikator 3 wird nur ausgeführt, wenn du --music mit einem isolierten Musikstamm übergibst. Indikator 6 meldet „n/a“, wenn das Material keine stille Passage hat – leise Musik ist kein Rauschen, und ein ehrliches „kann nicht bewertet werden“ ist kein Bestehen. Indikator 1 meldet, wo die größten Sprünge sind, damit ein Mensch zuhören kann.
Lautheitsleiter
| Auslieferung | Integriert | True Peak | Anmerkungen |
|---|---|---|---|
| YouTube / TikTok / Reels | -14 LUFS | -1 dBTP | Plattformen normalisieren hier |
| Spotify | -14 LUFS | -1 dBTP | |
| Apple Music | -16 LUFS | -1 dBTP | |
| Podcast (Stereo / Mono) | -16 / -19 LUFS | -1 dBTP | |
| Broadcast (EBU R128) | -23 LUFS | -1 dBTP | |
| Kurzdrama / OTT (CN) | -24 LKFS | -1 dBTP | |
| Kino | -27 LUFS | -2 dBTP | dialogverankert |
Kettenreihenfolge (sie ist wichtig)
Hochpass 70 Hz -> subtraktiver EQ (Matsch, dann Zischlaute) -> sanfte Kompression -> Begrenzer -> statische Verstärkung -> Begrenzer
- Die EQ-Korrekturtiefe wird aus dem gemessenen Indikator abgeleitet, nicht aus einem festen Preset.
- Die Kompression ist bewusst sanft (2,5:1, ~3–6 dB Gain-Reduktion). Dies ist Postproduktion, nicht Sounddesign.
- Die Verstärkung wird nach der Korrekturkette angewendet und am Ausgang der Kette gemessen, sodass die gelieferte Datei die Spezifikation einhält, selbst wenn der EQ die Lautstärke verändert hat.
- Der Begrenzer liegt bei 0,79 (-2 dBFS Sample Peak), um Zwischenabtast-Überschwinger bei -1 dBTP zu überstehen.
Leitplanken
- Behaupte niemals Erfolg ohne eine frische Messung. Der Exit-Code des Skripts ist die Quelle der Wahrheit.
- Codiere verlustbehaftet nicht zweimal. Dekodiere einmal nach WAV, arbeite in WAV, codiere einmal am Ende.
- Upsample nicht, um Qualität vorzutäuschen. Gib 48 kHz aus; die 192 kHz interne Rate von loudnorm ist kein Feature.
- Plätte die Dynamik nicht, um einen Zielwert zu erreichen. Wenn das Erreichen von -14 LUFS mehr als 6 dB Begrenzung erfordert, sag es und liefere stattdessen -16 aus – ein plattgedrückter Mix ist schlimmer als ein leiser.
- Musikstämme bleiben getrennt. Das Ducken eines gemischten Tracks zerstört die Stimme; fordere Stämme an.
- Behalte das Original. Schreibe immer in eine neue Datei.
Was dies nicht beheben kann
analyze gibt eine Warnung aus, wenn die Quelle fast keine Energie über 8 kHz hat – das Kennzeichen einer 16/22 kHz TTS, die durch eine 48 kHz Session gepumpt wurde. Diese Mattigkeit ist kein Mastering-Problem und kein EQ bringt sie zurück. Wenn die Warnung erscheint, sag es anstatt „behoben“: Rendere die Stimme mit einer neuronalen TTS neu, master dann.
--naturalize fügt einen kleinen Raum, einen Atem-/Raumklangboden und etwas HF-Luft hinzu. Es entfernt den „trockenen, digital stillen“ Hinweis; es kann keine Prosodie erfinden und wird keine roboterhafte Quelle retten. Aktiviere es niemals standardmäßig für musikgeführte Inhalte.
Grenzen
- Der Indikator „Musikbett“ benötigt einen Stamm; ohne diesen wird das Stimme/Musik-Verhältnis nicht gemessen.
- Der Rauschboden ist nur aussagekräftig, wenn es echte leise Passagen gibt.
- True Peak ist 4-fach überabgetastet; Rundfunkanstalten, die 8-fach benötigen, sollten mit ihrem eigenen Meter überprüfen.
- Dies ist ein Auslieferungswerkzeug, kein kreativer Mix. Es wird keine schlechte Darbietung gut machen.