Communitygithub.com

iamjeffia/estudio-ia

スタジオでのサウンドデザインと映像ミキシング。動画やアニメーションに音をつける際(要素の出入りエフェクト、音楽、ナレーション、最終ミックス、プレビューへの音声同期)、エフェクトライブラリの拡張・調整(パックの合成またはレベル調整)、曲のビートやドロップの計測、ボーカル抽出、シーン音の確認などに使用します。After Effects、HyperFrames、Remotion、手編集の動画に対応。

estudio-ia とは?

このスキルは、映像制作におけるサウンドデザインとミキシングを自動化・標準化するためのメソッドとツール群を提供します。`som.py` コマンドを中心に、各映像要素の出現・消失・衝突といったイベントに対して、タイミング正確な効果音を割り当て、ナレーション下の音楽レベルを適切に調整し、最終ミックスとレポートを生成します。処理はレンダリングを待たずに実行可能です。 主な機能として、効果音ライブラリの合成・レベル調整(`sintetizar_sfx.py`, `nivelar.py`)、曲のBPMやドロップ検出(`batida.py`)、音源分離(`separar.py`)、シーン音の音量チェック(`verificar_som_de_cena.py`)があります。出力は `mix.wav` と各ステム(効果音、音楽、トーン、ボーカル)、レポート、および音声付きプレビュー動画です。 対応プラットフォームは After Effects、HyperFrames、Remotion、手編集の動画。イベントJSONを書き出し、`som.py` に与えるだけでミックスが完了します。プロジェクト固有の音割り当てはマッピングファイルで柔軟にカスタマイズ可能。LUFS、ピーク、同期ズレなどの品質指標は規定値で管理され、自動チェックされます。 ビート検出と音源分離にはAIモデル(beat_this、MelBand Big Beta 4、BS-RoFormer SW)を使用し、初回起動時に自動ダウンロードされます(合計約1~2GB)。GPU対応オプションあり。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iamjeffia/estudio-ia/tree/HEAD/.agents/skills/som-do-video

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

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

ドキュメント

動画の音声

日付: 2026-10-22 · 種類: skill · 状態: 有効

概要: 動画の音声は、イベントのリスト(画面に現れたり消えたりぶつかったりする要素ごとに1つ)とコマンド som.py から生成されます。このコマンドは各エフェクトのピークを正しいフレームに合わせ、音楽をナレーションの下に収め、ミックスとレポートを出力します。音声はレンダリングを待つ必要はありません。アニメーションのタイミングが決まれば、すぐに処理できます。ミックスの数値は 06-metodo/regras.md が一元的に管理します。このスキルはそのメソッド、コマンド、主要テーブルを提供します。

使用するタイミング

  • モーション、UI、チュートリアル、広告、音楽のみの動画で、同期エフェクトが必要なすべてのケース。
  • ナレーション動画:ドライなボーカルを前面に、音楽を下に、エフェクトは控えめに。
  • 人物や場所が「無音」に感じられる動画:シーン音(アンビエンスとフォーリー)。references/som-de-cena.md を参照。
  • 音楽の加工:ビートとドロップの計測(batida.py)またはボーカル分離(separar.py)。

メソッド

  1. 見えるアクションごとに1つの音、そして音はアクションを説明する。 カードが入る → ポップ、ボタン → クリック、画面切り替え → ウィッシュ、スタンプ → 打撃音、数字が回る → ロール。密度はアクション基準であり、単語基準ではありません。ナレーション下では最大2つのエフェクトが同時に鳴る程度に抑えます。
  2. 画像が動機づける音だけを入れる。 静止しているカットにウィッシュ、シーンに時計がないのに時計の音、上昇しないものにライザーは、音と映像を乖離させます。ミックスする前に映像を見て、何がいつ、どの素材で動くかをメモします。
  3. ピークはイベントのフレームに合わせる。 クリック、ポップ、スタンプ、インパクト:要素が接触するフレームにピーク。ウィッシュ:ジェスチャーの中間(開始から約0.2秒後。デフォルトマップがすでに調整済み)。ライザー:ドロップまたはカットで乾いた終わり。
  4. トーンはハイライト、トランジション、サプライズのみ。 インパクト、スタンプ、ロゴにコードヒット;大きなトランジションに短いパッド;明かしにベル。クリック、ポップ、キーには決して使わない(「小さな音楽」になり、耳障り)。--tom(例:Am)は曲の調性が既知の場合のみ使用。
  5. 音楽は場面ごとに、敷き詰めない。 ソフトな開始、ドロップ前の減速、ブレス、バスドラムでのクライマックス。ナレーションがある場合、音楽はボーカルよりかなり下に抑え、ブレスや無音部分で上げます。
  6. ドロップ前のブレス。 ドロップ直前の最後のビートで、楽器を約0.3~0.5秒間ドライに落とします(--drop T で実現)。キーワードまたは最大の映像変化をドロップの最初のフレームに置きます。ドロップは目視ではなく batida.py で計測します。
  7. レイヤーはピーク時のみ。 ドロップ、ロゴ、クロージングで2~3の音を同時に。それ以外ではアクションごとに1音。同じ音が繰り返される場合は高さを変えます(マップがカテゴリ内のバリエーションを巡回)。
  8. ドライなボーカル。 ナレーションにはリバーブもエコーもなし。
  9. 分離したレイヤーで聴く。 som.py は escuta/voz.wav、musica.wav、efeitos.wav、tonais.wav を出力します。同期の確認はミックスではなくエフェクトステムで行います。

主要数値

所有者: 06-metodo/regras.md。そちらに別の数値があれば、そちらが優先されます。Mesa はこれらの値を自動適用します。

対象値
ボーカルまたは音楽を含むマスター−14 LUFS 統合、トゥルーピーク ≤ −1 dBTP(リミッター4倍)
ナレーション下の音楽発話時 約15 dB下(レポートが計測、許容範囲12~18)
実曲を使用したボーカルなしミックストラックを −19 LUFS にレベル調整後エフェクト;エフェクト ×2.2;リミッター;マスター −14
シーン音のみの作品−25 LUFS 統合(上限 −24)、短期 ≤ −20、瞬間 ≤ −16、ピーク ≤ −3。決して −14 にノーマライズしない
ボーカル付きシーン音シーン音ステムはボーカルより ≥ 15 LU 下
エフェクトライブラリ短いもの −20 LUFS 瞬間ピーク、アンビエント −24、ピーク ≤ −3 dBTP;配置 at = イベント − ピーク_ms/1000
同期エフェクトステムで中央値 ≤ 25 ms
ビートbeat_this、File2Beats(checkpoint_path="final0");ビートから最大2フレーム以内でカット

ステップバイステップ

すべてのコマンドはスタジオのルートディレクトリから実行します。

  1. ライブラリは準備済みか? 05-biblioteca/som/sfx/catalogo.json が存在しない場合:uv run scripts/som/sintetizar_sfx.py。録音済みサウンド:uv run scripts/som/nivelar.py <パックのパス>(詳細は 05-biblioteca/som/README.md)。
  2. イベント。 アニメーションエンジンから eventos.json をプロジェクトの audio/ フォルダにエクスポートします。形式、許可されるタイプ、After Effects / HyperFrames / Remotion からのエクスポート方法:references/eventos.md。
  3. ビートのある音楽? uv run scripts/som/batida.py musica.mp3 --fps 30 で BPM、強拍、推定ドロップを取得。このグリッドに合わせてカットをアニメーションします。
  4. 音楽のボーカルまたはインストが必要? uv run scripts/som/separar.py musica.mp3(ボーカル+インスト)または --modo 6(6ステム)。
  5. ミックス:
    uv run scripts/som/som.py --eventos 04-projetos/<video>/audio/eventos.json \
      --voz 04-projetos/<video>/audio/voz.wav --musica 04-projetos/<video>/audio/musica.wav \
      --video 04-projetos/<video>/render/previa.mp4 --drop 12.4
    
    出力:mix.wav、escuta/*.wav、relatorio-som.json、previa-som.mp4(画像はコピー、音声のみ変更)。
  6. レポートを読み、警告がなくなるまで修正。 「イベントに音なし」=マップが認識しないタイプ:既知のタイプに変更するか、イベントに "som": "categoria" を追加するか、 --mapa を記述(後述)。LUFS、ピーク、「ナレーション下の音楽レベル」が目標範囲外の場合もレポートに表示されます。
  7. シーン音は? uv run scripts/som/verificar_som_de_cena.py <シーン音のみのミックス> または ... escuta/efeitos.wav --voz escuta/voz.wav。不合格の場合は納品できません。
  8. 聴く。 音声付きプレビューはスタジオ所有者の承認を受けます。最終動画では、同じコマンドを --video render/final.mp4 で実行:リマックス処理のみで再レンダリングは不要です。

プロジェクト固有の音(--mapa)

MAPA = {タイプ: 関数(M, e)} を含む .py ファイルを作成し、指定したタイプのみデフォルトマップを上書きします。

# 04-projetos/<video>/audio/mapa.py
MAPA = {
    "logo": lambda M, e: (M.poe("logo", e["t"], -11), M.poe("impacto", e["t"], -16), M.golpe(e["t"], -20)),
    "moeda": lambda M, e: M.poe("sucesso/sucesso-2", e["t"], -14, st=3),   # st = 半音上
}

マップで使用可能な Mesa の関数:M.poe(音, t, ゲイン_dB, pan, alinha="pico"|"ini"|"fim", st=半音, fim=長さ, fade=s, sala=True)、M.tonal(t, lufs)、M.golpe(t, lufs)、M.textura(t0, t1, lufs)、M.riser(t_pico)。音 はカテゴリ("whoosh":バリエーションを巡回)、ライブラリのファイル("whoosh/whoosh-2")、またはパスを受け付けます。

コマンド

スクリプト目的
uv run scripts/som/som.py --eventos E.json [--voz V] [--musica M] [--video P.mp4] [--tom Am] [--drop T] [--mapa mapa.py]フルミックス、レポート、音声付き動画
uv run scripts/som/sintetizar_sfx.py [--amostra prova.wav]初期合成ライブラリを生成
uv run scripts/som/nivelar.py PASTA [--categoria X] [--cama] [--destino D]パックを標準化しカタログを更新
uv run scripts/som/verificar_som_de_cena.py MIX.wav [--voz VOZ.wav]シーン音が大きすぎる場合に不合格(終了コード1)
uv run scripts/som/batida.py MUSICA [--fps 30] [--json grade.json] [--video render.mp4]ビート、強拍、BPM、ドロップ(beat_this)
`uv run scripts/som/separar.py MUSICA [--modo voz6] [--saida PASTA]`

som.py のその他のオプション:--voz-entra、--musica-entra、--musica-de(セクションのアライメント)、--dur、--impacto T0 T1(音楽をボーカルレベルまで上げる)、--lufs、--pico、--fx -10(エフェクトのLUFSをボーカル基準で)、--saida。

batida.py と separar.py はAIを使用するため、追加パッケージが必要:uv sync --extra cpu(または NVIDIA GPU搭載時は --extra gpu)。モデルは初回使用時に自動ダウンロードされます(beat_this ≈80 MB;各分離モデル ≈300~700 MB、保存先 ~/.cache/estudio-ia/)。追加パッケージがない場合、インストール手順を表示して停止します。

よくあるエラー

症状原因対処
シーン動画でエフェクトが「大きすぎる」シーン音が −14 にノーマライズされているsom.py はボーカルも音楽もない場合、自動的に −25 を目標にします。verificar_som_de_cena.py で確認
ボーカルなし動画でエフェクトが音楽に埋もれるマスタリング済みトラック(−8〜−11 LUFS)Mesa がトラックを −19 にレベル調整しエフェクトを ×2.2 倍にします。それでも埋もれる場合はイベントの vol を大きく
ウィッシュのタイミングが「遅い」イベントがジェスチャーの終わりにマークされているジェスチャーの始まりにマーク。マップがピークを0.2秒後に設定
同じ音の繰り返しがロボットのように聞こえるカテゴリにバリエーションが1つしかないそのカテゴリにさらに音をレベル調整するか、--mapa で異なる st を使用
レポート:「カテゴリが交換されました」ライブラリにそのカテゴリがないsintetizar_sfx.py を実行するか、そのカテゴリを含むパックをレベル調整

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

関連スキル