Communitygithub.com

soundcheck

AI ビデオや音声の「AI臭さ」を数値化し、補正して、納品仕様を満たしたことを証明するツール。

soundcheck とは?

soundcheck は、AI が生成した音声や映像にありがちな「AI臭さ」を検出し、補正するためのツールです。TTS(Text-to-Speech)のテイク間の音量差、リミッターによる歪み、ボーカルと音楽のバランス崩壊、歯擦音や中低域のこもり、ノイズフロアの問題など、7つの「AI Audio Tell」を測定。FFmpeg や Python で動作し、YouTube、Spotify、Apple Music、ポッドキャストなど各プラットフォームのラウドネス基準(LUFS、True Peak)に合わせて自動補正します。補正後は再度測定し、仕様を満たしたかどうかを終了コードで報告するため、盲目的な補正ではなく、数値で品質を担保できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liuchong110/soundcheck/tree/main

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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 比較してください。測定による準拠は必要ですが、十分ではありません。

ワークフロー

  1. 何にも触る前に測定する。 analyze を実行します。推測から EQ を始めてはいけません。
  2. スコアではなく、スコアカードを読む。 スコアは要約です。問題となるテルは作業の対象です。
  3. 修正する。 fix --target <platform> を実行します。測定結果から補正 EQ の深さを選び、チェーンを適用し、自身のラウドネス測定から静的ゲインを計算し、リミッターをかけ、再測定します。
  4. 検証する。 測定されたテルのいずれかが仕様範囲外である場合、fix は非ゼロで終了します。非ゼロ終了で「完了」と報告せず、代わりに残っているテルを報告してください。
  5. A/B 比較する。 元のファイルを保持します。修正が問題よりも悪く聞こえる場合(オーバー EQ、ポンピング)、補正の深さを減らして再実行します。測定による準拠は必要ですが、十分ではありません。

7 つの AI Audio Tell

#Tell測定値目標値よくある原因
1テイク間のレベル不一致スピーチ帯域の領域レベル、隣接デルタ<= 3 dBTTS テイクが個別にレンダリングされた
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 は最も大きなジャンプの位置を報告するため、人間が聴いて確認できます。

ラウドネスラダー

納品先IntegratedTrue 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 倍を必要とする放送局は、自社のメーターで確認する必要があります。
  • これはクリエイティブミックスではなく、納品ツールです。悪いパフォーマンスを良くすることはできません。

関連スキル