mcpField
A
audio-acquisition

audio-acquisition

github.com/scrollmarkクリエイティブ・メディア1647 回インストール1 日前に更新
リポジトリ

audio-acquisition について

audio-acquisitionはvideo-studio-engine向けのスキルで、動画のナレーション、音楽、効果音の入手・生成方法を選び、音声を測定してミックスします。権利確認、実測時間、音量不足や聞こえないミックスの検査を重視します。

主な機能

  1. 01ナレーションと音楽の入手先選択
  2. 02公開前のライセンス確認
  3. 03長さと音楽のエネルギー測定
  4. 04音声ラウドネスの正規化
  5. 05音楽と会話のバランス確認

活用シーン

  1. 01ナレーション動画の音声計画
  2. 02音楽主導の編集向け楽曲選び
  3. 03公開前の楽曲ライセンス確認
  4. 04レンダリング後の音量不足の検出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scrollmark/social-skills --skill audio-acquisition

インストール後、Claude Code で/audio-acquisitionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
voice-landmines.md
scripts/
measure.py
normalize_audio.py

詳細

音声の取得

音声は後回しにするものではなく、必ず検討すべき項目です。ナレーションのない形式でも、毎回確認してください。無音の作品は、誰かがそう決めたから無音なのであって、誰も話題にしなかったからではありません。判断すべきことは3つあり、それぞれ答えがまったく異なります。

必要なもの

scripts/measure.py(長さと、トラックの1秒ごとのエネルギー構造)とscripts/normalize_audio.py(ラウドネス)はこのスキルに同梱されています。どちらも標準ライブラリのみで動作し、PATH上にffmpeg/ffprobeが必要です。以下の「信頼せずに測定する」手順を、単なる理想論ではなく実行可能にするために、ほかにインストールするものはありません。

音声合成と素材の取得機能は同梱されていません。pip install 'video-studio-engine[audio] @ https://github.com/scrollmark/social-skills/archive/refs/heads/master.tar.gz'を実行すると、tts_kokoro(ローカル音声と単語単位のタイミング)とgen_music(スコア)が追加されます。[audio]を付けずに同じコマンドを実行すれば、stock_freesound(ライセンスで絞り込まれた効果音)を利用できます。video-studio tts_kokoro …として実行してください。同じ[audio]には、 duck_music(ナレーション中にBGMを下げる、フレームごとの音量エンベロープ)と music_catalog(すでにライセンスを保有しているトラックを、再レンダリングしてもスコアが変わらないよう決定論的に選択する機能)も含まれます。このスタジオで収録していないナレーション(録音済みの読み上げや、提供されたトラック)から単語単位のタイミングを取得するにはgen_captionsを使用します。これには[captions]を付ける必要があります。このインストールを省略したユーザーは、音声も音楽も、ライセンスで絞り込まれた効果音も利用できません。以下の段階的な説明では、どのサービスを購入し、何を確認すべきかを案内しますが、音声合成は行われません。現在はElevenLabs用のスクリプトvideo-studio tts_elevenもありますが、文字数に応じた課金があり、ELEVENLABS_API_KEYが必要です。そのため、ローカル音声では本当に対応できない場合、つまりKokoroが対応していない言語や、クライアントが承認した読み上げが必要な場合に限って使用してください。単語単位のタイミングは返されないため、ElevenLabsで読み上げた音声の字幕生成にはgen_captionsを使用します。

音声

ローカル音声が標準であり、無料です。 オフラインで動作し、キーも不要です。構造上重要なのは、単語単位のタイミングが返されることです。これは字幕の基準になります。字幕付きの形式では、ほかに選択肢がありません。

有料音声を使うのは、読み上げ自体が納品物となる場合に限ってください。ブランド映像、クライアントの声など、抑揚のない読み上げそのものが苦情の原因になり得るものが該当します。文字数に応じて課金され(約1,100文字で90秒のスクリプト)、単語単位のタイミングは返されません。そのため、字幕付きの形式では、引き続きローカル音声が必要です。

どちらもキャッシュされます。テキスト、音声、設定が同一なら処理は行われず、cached: trueと報告されます。そのため、修正時にすべてのシーンを再実行しても費用はかからず、変更された行だけが再合成されます。「確実に最新にする」ために強制的に再レンダリングしないでください。新たに合成した音声は数ミリ秒異なることがあり、その差によって後続のすべてのカットがずれてしまいます。

ナレーションの長さが測定され、シーンの時間基準となるため、映像より先にナレーションを合成します。合成器に空行を渡してはいけません。代わりに測定済みの無音を生成するよう指定し、後続の連結との同期を保ってください。

スコア — 好みを決める前に、権利を判断する

このカテゴリでは、品質で最も優れたものが正解とは限りません。トラックに合わせて編集を組み立てる前に、選択を済ませておく必要があります。

  • 作品を公開する可能性があるなら、ライセンス済みカタログのジェネレーターを使ってください。 ElevenLabs の音楽モデルは、公開前に条件が確定したライセンス済みカタログで学習されており、商用利用は月額約 6 ドルから始められます。そのため、権利に関する注意点は制約ではなく料金の判断になります。また、正確な長さをパラメーターとして指定できるのはこれだけです。
  • **Lyria は Google の規約に照らして問題がなく、**動画・画像ジェネレーターと同じキーを共有するため、アカウントを追加する必要はありません。無料枠の割り当て量は文字どおりゼロで、解消されることのない 429 エラーとして表面化します。
  • **MiniMax music は無料で請求もなく、再配布の権利は不明確です。**学習データは公開されておらず、規約でも生成物の再配布が明確に認められていません。社内利用やデモには問題ありませんが、クライアントの仕事では決して使わず、自動選択ではなく名前を指定した場合にのみ利用できるようにしてください。
  • **最も音が良い選択肢は避けるべきものです。**学習データに関する訴訟が未解決であり、そもそも自動化に利用できる公開 API がほとんどありません。

サービスごとの費用とライセンス条件は、studio-setup スキルの SERVICES.md に一覧があります。公開する前に、価格の列ではなく権利の列を確認してください。

**音楽主導の形式では、スコアはインタビューの最後ではなく、最初に確認する項目です。**シーンの長さはトラックの盛り上がりに合わせて編集するため、選択が遅れると、すべてのシーンのタイミングを調整し直すことになります。まずトラックを決めて構成を把握し、それから長さを設定してください。

効果音

通常は不要です。形式に合い、効果音のソースに実際にアクセスできる場合にのみ提案してください。Freesound のライセンスは音源ごとに異なります。CC0、CC-BY、CC-BY-NC などがあるため、デフォルトでは CC0 のみを受け入れます。後続の工程に義務が生じることはなく、CC-BY まで対象を広げる場合は、取得したクレジット表記を掲載する必要があります。非商用ライセンスの音源は、クライアントの仕事には一切使用できません。

信頼せず、測定する

指定する長さは目安であり、保証ではありません。 ほとんどの音楽生成ツールはプロンプトで指定した再生時間を無視します。35秒を指定したのに、約115秒の音楽が返されたこともあります。実際の長さをパラメーターとして指定できるのは、ライセンス済みカタログのものだけです。返されたファイルはすべて測定し、予定した再生時間をタイムラインに書き込まないでください。

トラックが実際に変化する箇所でカットしてください。 scripts/measure.py --music は、秒ごとのラウドネスプロファイルとトランジションを報告します。トランジションとは、ウィンドウの値が直前の3秒間と比べて3 dB以上上昇または低下するポイントです。これらが音量の落ち込みや盛り上がりであり、セクションを切り替える場所として妥当なのはここだけです。グリッドに合わせたセクションは約20秒で位相がずれ、恣意的に聞こえます。最後のコーラス前の静かな小節にフェードを置くと、実際にそうであるため、動画が途中で切れたように聞こえます。

音楽を追加すると、気づかないうちに6 dB下がります。 ミキサーは入力数で割ってトラックを合算するため、音楽トラックを1つ追加すると入力数が1から2になり、ナレーションを含め、すべての音量が半分になります。測定値は次のとおりです。音楽なしでは音声が-17.3 dB、音楽ありでは-23.5 dB。動画全体では-14.4 LUFSから-20.3 LUFSです。何も問題がないように見えます。レンダリングは成功し、両方の音源が同じ比率で下がるためバランスも正しく、ただ音量が小さいだけです。これは、どのような目視チェックをしても見逃される唯一の欠陥です。音楽を含むレンダリングの後には必ず scripts/normalize_audio.py --in <render> を実行してください。バランスを保ちながら、約-14 LUFSに戻します。生成された音楽はピークが0 dBFSに達している場合もあるため、失われてもよいヘッドルームはありません。

推測せず、測定してBGMをミックスしてください。 -15 LUFSで生成したBGMに-17 dBのゲインと強いサイドチェインを適用したところ、まったく聞こえなくなりました。どのレベル測定値もBGMなしのミックスと±0.2 dB以内の差しかなく、ログにもそのことは何も示されていませんでした。発話のない区間のRMSと、大きな声で話している箇所のRMSを測定して確認してください。BGMは発話のない区間ではおよそ6 dB持ち上がり、最も大きな声の箇所では聞こえなくなるべきです。

句読点がタイミングファイルに記録される仕組み、キャッシュ済みWAVにタイミング情報がない理由、2語のセリフが乱れる理由など、音声特有の落とし穴については references/voice-landmines.md を参照してください。

アンチパターン

  • 音で楽曲を選び、後から権利の問題に気づくこと。 編集後に権利の問題が見つかると、タグを付け直すのではなく、再編集が必要になります。
  • 何も指定せず、無音になるままにすること。 まず確認してください。そうすれば、無音の作品も意図した選択になります。
  • 予定した再生時間をタイムラインに書き込むこと。 時計になるのは実測した音声です。予定した再生時間を使うと、音声、動画、字幕の同期が累積的にずれていきます。
  • 測定せずにミックスが完成したと判断すること。 音量が小さくても、聞こえなくても、レンダリングは正常に完了し、確認したすべてのフレームで見た目は完璧です。

コメント