Ton zum Video
Datum: 2026-10-22 · Typ: Skill · Status: gültig
Zusammenfassung: Der Ton eines Videos entsteht aus einer Liste von Ereignissen (eines pro Element, das erscheint, verschwindet oder auf dem Bildschirm auftrifft) und einem Befehl, som.py, der jeden Effekt mit seiner Spitze auf den richtigen Frame setzt, die Musik unter die Stimme legt und den Mix mit einem Bericht ausgibt. Der Ton wartet nicht auf den Render: Sobald die Zeit der Animation festliegt, kann er bereits erstellt werden. Die Zahlen des Mix haben nur einen Eigentümer, 06-methode/regeln.md; diese Skill bringt die Methode, die Befehle und die Haupttabelle.
Wann verwenden
- Jedes Video mit Bewegung, Benutzeroberfläche, Tutorial, Anzeige oder Video nur mit Musik, das synchronisierte Effekte benötigt.
- Video mit Erzählung: trockene Stimme vorne, Musik darunter, dezente Effekte.
- Video mit Menschen oder Orten, das sich „stumm“ anfühlt: Szenen-Sound (Atmosphäre und Foley). Siehe referenzen/szenen-sound.md.
- Um einen Song zu bearbeiten: Beats und Drop messen (
beat.py) oder die Stimme trennen (trennen.py).
Die Methode
- Ein Sound für jede sichtbare Aktion, und der Sound beschreibt die Aktion. Karte, die hereinkommt, macht Pop, Button macht Klick, Bildwechsel macht Whoosh, Stempel schlägt auf, Zahl rollt. Die Dichte richtet sich nach der Aktion, nicht nach dem Wort: maximal zwei Effekte, die gleichzeitig unter der Stimme erklingen.
- Nur Sound, der durch das Bild motiviert wird. Whoosh bei statischem Schnitt, Uhr ohne Uhr im Bild und Riser ohne steigendes Element lösen den Sound vom Video. Vor dem Mischen sehen Sie sich das Video an und notieren, was sich bewegt, wann und mit welchem Material.
- Die Spitze fällt auf den Frame des Ereignisses. Klick, Pop, Stempel und Impact: die Spitze auf dem Frame, in dem das Element auftrifft. Whoosh: die Spitze in der Mitte der Geste (~0,2 s nach Beginn; die Standardkarte macht das bereits). Riser: endet trocken am Drop oder am Schnitt.
- Tonale Elemente nur bei Hype, Übergängen und Überraschungen. Schlag im Ton beim Impact, beim Stempel und beim Logo; kurzer Pad beim großen Übergang; Glocke bei der Enthüllung. Niemals bei Klick, Pop oder Taste, die werden zu „Musikspielerei“ und ermüden. Übergeben Sie
--ton(z. B.Am) nur, wenn die Musik eine bekannte Tonart hat. - Musik für Momente, nicht als Teppich. Sanfter Anfang; Verlangsamung vor dem Drop; Atempause; Höhepunkt auf der Bassdrum. Bei Erzählung bleibt die Musik deutlich unter der Stimme und steigt in den Atempausen und sprachfreien Abschnitten.
- Atempause vor dem Drop. Das Instrumental fällt ~0,3–0,5 s trocken auf dem letzten Beat vor dem Drop (
--drop Tmacht das), und das Schlüsselwort oder die größte Bildänderung kommt auf den ersten Frame des Drops. Messen Sie den Drop mitbeat.py, nicht nach Augenmaß. - Schichten nur an den Höhepunkten. 2–3 Klänge zusammen beim Drop, beim Logo und beim Abschluss; ansonsten ein Klang pro Aktion. Variieren Sie die Tonhöhe, wenn sich derselbe Klang wiederholt (die Map rotiert durch die Variationen der Kategorie).
- Trockene Stimme. Erzählung ohne Hall oder Echo.
- Hören Sie sich die einzelnen Schichten getrennt an.
som.pyspeicherthoeren/stimme.wav,musik.wav,effekte.wavundtonale.wav. Die Synchronität wird im Effekt-Stamm überprüft, niemals im Mix.
Hauptzahlen
Eigentümer: 06-methode/regeln.md. Wenn dort eine andere Zahl steht, gilt die dortige. Der Mixer wendet diese Werte bereits automatisch an.
| Was | Wert |
|---|---|
| Master mit Stimme oder Musik | −14 LUFS integriert, True-Peak ≤ −1 dBTP (Limiter 4×) |
| Musik unter der Stimme | ~15 dB leiser bei Sprache (der Bericht misst; akzeptiert 12–18) |
| Mix ohne Stimme mit echter Musik | Spur auf −19 LUFS gebracht vor den Effekten; Effekte ×2,2; Limiter; Master −14 |
| Reiner Szenen-Sound | −25 LUFS integriert (max. −24), kurzfristig ≤ −20, momentan ≤ −16, Peak ≤ −3. Niemals auf −14 normalisieren |
| Szenen-Sound mit Stimme | Szenen-Sound-Stamm ≥ 15 LU leiser als die Stimme |
| Effektbibliothek | Kurze −20 LUFS momentaner Peak, Pads −24, Peak ≤ −3 dBTP; Position at = ereignis − peak_ms/1000 |
| Synchronität | Median ≤ 25 ms im Effekt-Stamm |
| Beats | beat_this, File2Beats(checkpoint_path="final0"); Schnitt bei ≤ 2 Frames vom Beat |
Schritt für Schritt
Alle Befehle werden aus dem Stammverzeichnis des Studios ausgeführt.
- Bibliothek bereit? Wenn
05-bibliothek/ton/sfx/katalog.jsonnicht existiert:uv run scripts/sound/sfx_synthetisieren.py. Aufgenommene Klänge:uv run scripts/sound/normieren.py <pack-ordner>(Details in 05-bibliothek/ton/README.md). - Ereignisse. Exportieren Sie aus der Animations-Engine eine
ereignisse.jsonin den Ordneraudio/des Projekts. Format, akzeptierte Typen und Export aus After Effects, HyperFrames und Remotion: referenzen/ereignisse.md. - Musik mit Beat?
uv run scripts/sound/beat.py musik.mp3 --fps 30liefert BPM, starke Beats und wahrscheinlichen Drop. Animieren Sie die Schnitte in diesem Raster. - Benötigen Sie die Stimme oder das Instrumental des Songs?
uv run scripts/sound/trennen.py musik.mp3(Stimme + Instrumental) oder--modus 6(sechs Stems). - Mix:
Ausgabe:uv run scripts/sound/sound.py --ereignisse 04-projekte/<video>/audio/ereignisse.json \ --stimme 04-projekte/<video>/audio/stimme.wav --musik 04-projekte/<video>/audio/musik.wav \ --video 04-projekte/<video>/render/vorschau.mp4 --drop 12.4mix.wav,hoeren/*.wav,bericht-sound.jsonundvorschau-sound.mp4(das Bild wird kopiert; nur der Ton ändert sich). - Lesen Sie den Bericht und korrigieren Sie, bis keine Warnung mehr erscheint. „Ereignisse ohne Klang“ = Typ, den die Karte nicht kennt: Ersetzen Sie den Typ durch einen bekannten, setzen Sie
"sound": "kategorie"im Ereignis oder schreiben Sie eine--karte(unten). LUFS, Peak und „Musik unter der Stimme“ außerhalb des Ziels werden ebenfalls angezeigt. - Szenen-Sound?
uv run scripts/sound/szenen_sound_pruefen.py <nur szenen-mix>oder... hoeren/effekte.wav --stimme hoeren/stimme.wav. Nicht bestanden geht nicht zur Auslieferung. - Hören. Die Vorschau mit Ton geht an den Studioinhaber zur Freigabe. Im endgültigen Video führen Sie denselben Befehl mit
--video render/final.mp4aus: Es ist nur ein Remux, ohne erneutes Rendern.
Projekteigene Sounds (--karte)
Eine .py-Datei mit KARTE = {typ: funktion(M, e)} überschreibt die Standardkarte nur für die von Ihnen aufgeführten Typen:
# 04-projekte/<video>/audio/karte.py
KARTE = {
"logo": lambda M, e: (M.lege("logo", e["t"], -11), M.lege("impact", e["t"], -16), M.schlag(e["t"], -20)),
"muenze": lambda M, e: M.lege("erfolg/erfolg-2", e["t"], -14, st=3), # st = Halbtöne höher
}
Funktionen des Mixers, die in der Karte verwendet werden können: M.lege(sound, t, gain_db, pan, ausrichtung="peak"|"start"|"ende", st=halbtöne, ende=dauer, fade=s, raum=True), M.tonal(t, lufs), M.schlag(t, lufs), M.textur(t0, t1, lufs), M.riser(t_peak). sound akzeptiert eine Kategorie ("whoosh", rotiert durch die Variationen), eine Datei aus der Bibliothek ("whoosh/whoosh-2") oder einen Pfad.
Befehle
| Skript | Wofür |
|---|---|
uv run scripts/sound/sound.py --ereignisse E.json [--stimme V] [--musik M] [--video P.mp4] [--ton Am] [--drop T] [--karte karte.py] | den kompletten Mix, den Bericht und den Ton auf dem Video |
uv run scripts/sound/sfx_synthetisieren.py [--sample probe.wav] | generiert die initiale synthetisierte Bibliothek |
uv run scripts/sound/normieren.py ORDNER [--kategorie X] [--pad] [--ziel D] | bringt ein Pack auf Standard und aktualisiert den Katalog |
uv run scripts/sound/szenen_sound_pruefen.py MIX.wav [--stimme STIMME.wav] | weist zu lauten Szenen-Sound zurück (Exit-Code 1) |
uv run scripts/sound/beat.py MUSIK [--fps 30] [--json raster.json] [--video render.mp4] | Beats, starke Beats, BPM und Drop (beat_this) |
uv run scripts/sound/trennen.py MUSIK [--modus stimme|6] [--ausgabe ORDNER] | Stimme + Instrumental (MelBand Big Beta 4) oder 6 Stems (BS-RoFormer SW) |
Weitere Optionen von sound.py: --stimme-ein, --musik-ein, --musik-von (Abschnitte ausrichten), --dauer, --impact T0 T1 (Musik auf Stimmniveau anheben), --lufs, --peak, --fx -10 (Effekte in LUFS relativ zur Stimme), --ausgabe.
beat.py und trennen.py verwenden KI und benötigen das Extra: uv sync --extra cpu (oder --extra gpu mit NVIDIA-Karte). Die Modelle laden sich beim ersten Gebrauch selbst herunter (beat_this ~80 MB; jedes Trennungsmodell ~300–700 MB, gespeichert in ~/.cache/estudio-ia/). Ohne das Extra stoppen beide mit der Installationsanweisung.
Häufige Fehler
| Symptom | Wahrscheinliche Ursache | Was tun |
|---|---|---|
| Effekte „zu laut“ in einem Szenen-Video | Szenen-Sound auf −14 normalisiert | sound.py ohne Stimme und Musik zielt bereits auf −25; mit szenen_sound_pruefen.py prüfen |
| Effekte verschwinden unter der Musik in einem Video ohne Stimme | Spur gemastert (−8 bis −11 LUFS) | Der Mixer nivelliert die Spur auf −19 und hebt die Effekte um ×2,2; falls immer noch, vol höher im Ereignis |
| Klang „zu spät“ beim Whoosh | Ereignis am Ende der Geste markiert | markieren Sie den Anfang der Geste; die Karte setzt den Peak 0,2 s später |
| Gleicher wiederholter Klang klingt roboterhaft | Kategorie mit nur einer Variation | nivellieren Sie mehr Klänge in dieser Kategorie oder verwenden Sie einen anderen st in der --karte |
| Bericht: „Kategorien vertauscht“ | Die Bibliothek hat die Kategorie nicht | führen Sie sfx_synthetisieren.py aus oder nivellieren Sie ein Pack mit dieser Kategorie |