soundcheck は何をしますか?
AI ビデオは、見た目が完成するずっと前に音が完成しているように見えます。TTS テイクは異なるレベルで貼り合わされ、BGM はサイドチェインで下がらず、ミックスは「大きく」聞こえるようにリミッターに押し込まれ、AI ボイスは 6-10 kHz のヒスノイズと 100-300 Hz のドーンという響きを残したままです。
soundcheck はそれを数値に変え、修正し、修正が効いたことを証明します。
実行方法
python scripts/soundcheck.py analyze <file> [--target youtube] [--music music.wav] [--json]
python scripts/soundcheck.py fix <file> [--target youtube] [--music music.wav] [--out out.wav] [--level] [--naturalize]
python scripts/soundcheck.py demo
fix は ffmpeg が PATH 上にある必要があります。analyze と demo は Python 3 + numpy のみで動作します(scipy があればより高速なフィルタリングに使用されます)。
fix にビデオを渡すと、ビデオが返されます。補正されたオーディオが元のビデオストリームと多重化されます(コピーされ、再エンコードはされません)。--out を指定しない場合、ソースの隣に <name>.soundcheck.mp4 として書き出されます。
--level は、マスタリング前に個別のスピーチテイクのレベルを揃えます。行ごとに録音または合成されたダイアログに使用してください。音楽主体のコンテンツでは使用しないでください。そこでの盛り上がりや落ち込みは、アレンジであり、欠陥ではありません。analyze は最も大きなテイクジャンプのタイムスタンプを出力するので、判断材料にできます。
信頼する前に検証する
python scripts/verify.py # 20 のチェック、exit 0 = 全て良好
このスイートは、メーターが ffmpeg の ebur128 と一致すること、fix が全てのテルをパスした場合のみ終了コード 0 を返すこと、納品ファイルが独立したメーターで再測定されること、ダイナミクスがつぶされていないこと、そして無音 / 短いクリップ / モノラル 24-bit / mp4 / 存在しないファイルが適切に処理されることをチェックします。マシンで失敗した場合は、誰かのオーディオに触れる前に修正してください。
実際の素材を処理するときは、常に A/B 比較してください。測定による準拠は必要ですが、十分ではありません。
ワークフロー
- 何にも触る前に測定する。
analyzeを実行します。推測から EQ を始めてはいけません。 - スコアではなく、スコアカードを読む。 スコアは要約です。問題となるテルは作業の対象です。
- 修正する。
fix --target <platform>を実行します。測定結果から補正 EQ の深さを選び、チェーンを適用し、自身のラウドネス測定から静的ゲインを計算し、リミッターをかけ、再測定します。 - 検証する。 測定されたテルのいずれかが仕様範囲外である場合、
fixは非ゼロで終了します。非ゼロ終了で「完了」と報告せず、代わりに残っているテルを報告してください。 - A/B 比較する。 元のファイルを保持します。修正が問題よりも悪く聞こえる場合(オーバー EQ、ポンピング)、補正の深さを減らして再実行します。測定による準拠は必要ですが、十分ではありません。
7 つの AI Audio Tell
| # | Tell | 測定値 | 目標値 | よくある原因 |
|---|---|---|---|---|
| 1 | テイク間のレベル不一致 | スピーチ帯域の領域レベル、隣接デルタ | <= 3 dB | TTS テイクが個別にレンダリングされた |
| 2 | ヘッドルームがない | True Peak | <= -1 dBTP | 「大きくする」マスタリング |
| 3 | ボーカル/音楽の競合 | ボーカル LUFS - 音楽 LUFS | >= 4 dB | サイドチェインダッキングがない |
| 4 | 耳障りな歯擦音 | 6-10 kHz / 1-4 kHz のエネルギー比 | <= 0.45 | 合成された /s/ と /sh/ |
| 5 | 中低域のこもり | 100-300 Hz / 300-3k のエネルギー比 | <= 0.40 | 近接ブーム、大きい低音ベッド |
| 6 | フロア(最低ノイズレベル)と空間がない | ノイズフロアとプログラムレベルの差 | 45 dB 以上下 | ノイズ除去アーティファクト、重ねられたルームトーン |
| 7 | 位相 / DC 問題 | L/R 相関、DC オフセット | 相関 >= 0.2 | 連結されたテイク、リサンプリング |
Tell 3 は、分離された音楽ステムを --music で渡した場合のみ実行されます。Tell 6 は、素材に無音部分がない場合に n/a を報告します。静かな音楽はノイズではありません。「評価不能」は合格ではありません。Tell 1 は最も大きなジャンプの位置を報告するため、人間が聴いて確認できます。
ラウドネスラダー
| 納品先 | Integrated | True Peak | 備考 |
|---|---|---|---|
| YouTube / TikTok / Reels | -14 LUFS | -1 dBTP | プラットフォームがここでノーマライズ |
| Spotify | -14 LUFS | -1 dBTP | |
| Apple Music | -16 LUFS | -1 dBTP | |
| ポッドキャスト(ステレオ / モノラル) | -16 / -19 LUFS | -1 dBTP | |
| 放送(EBU R128) | -23 LUFS | -1 dBTP | |
| ショートドラマ / OTT (CN) | -24 LKFS | -1 dBTP | |
| 映画館 | -27 LUFS | -2 dBTP | ダイアログアンカー方式 |
チェーン順序(重要)
ハイパス 70 Hz -> サブトラクティブ EQ(こもり、次に歯擦音) -> ソフトコンプレッション -> リミッター -> 静的ゲイン -> リミッター
- 補正 EQ の深さは、固定プリセットではなく、測定されたテルから導出されます。
- コンプレッションは意図的にソフト(2.5:1、約 3-6 dB のゲイン低減)です。これはポストプロダクションであり、サウンドデザインではありません。
- ゲインは補正チェーンの 後 に適用され、チェーン出力で測定されるため、EQ がラウドネスを変えても、納品ファイルは仕様通りになります。
- リミッターは 0.79(-2 dBFS サンプルピーク)に設定され、-1 dBTP でのインターサンプルオーバーシュートを防ぎます。
ガードレール
- 新しい測定なしに成功を主張してはいけません。 スクリプトの終了コードが真実の源です。
- ロッシーを 2 回再エンコードしないでください。 一度 WAV にデコードし、WAV で作業し、最後に一度だけエンコードします。
- 品質を偽るためにアップサンプリングしないでください。 出力は 48 kHz。loudnorm の 192 kHz 内部レートは機能ではありません。
- 数値に合わせるためにダイナミクスを平坦化しないでください。 -14 LUFS を達成するために 6 dB 以上のリミッティングが必要な場合は、そのように伝え、代わりに -16 で納品してください。つぶれたミックスは、静かなミックスよりも悪いです。
- 音楽ステムは分離したままにしてください。 ミックスされたトラックをダッキングするとボーカルが破壊されます。ステムを要求してください。
- 元のファイルを保持してください。 常に新しいファイルに書き出します。
これで修正できないもの
analyze は、ソースに 8 kHz 以上のエネルギーがほとんどない場合(16/22 kHz TTS が 48 kHz セッションにパイプされた場合の兆候)に警告を出力します。そのくすみはマスタリングの問題ではなく、EQ で回復することはできません。警告が出た場合は、「修正しました」ではなく、「再レンダリングしてください」と伝えてください。ニューラル TTS でボイスを再レンダリングし、その後マスタリングしてください。
--naturalize は、小さな部屋の残響、ブレス / ルームトーンのフロア、少量の高域の空気感を追加します。「ドライでデジタル的に無音」という手がかりを取り除きますが、プロソディを発明することはできず、ロボットのようなソースを救うことはできません。音楽主体のコンテンツではデフォルトで有効にしないでください。
制限事項
- 「BGM」のテルにはステムが必要です。ステムがない場合、ボーカル/音楽のバランスは測定されません。
- ノイズフロアは、実際に静かな部分がある場合にのみ意味があります。
- True Peak は 4 倍オーバーサンプリングされています。8 倍を必要とする放送局は、自社のメーターで確認する必要があります。
- これはクリエイティブミックスではなく、納品ツールです。悪いパフォーマンスを良くすることはできません。