BGM(背景音楽)
VV、PY 変数は videomotion スキルと同じです。
ソースの選択(優先順位)
- ユーザーが音楽ファイルを提供: ファイルを
<プロジェクト>/music/bgm.<拡張子>にコピーし、bgm.wavに変換:ffmpeg -y -i <ファイル> -ar 48000 -ac 2 <プロジェクト>/music/bgm.wav。 音楽が動画より短い場合はユーザーに通知します(ミキサーは不足部分を無音にします)。 - ACE-Step(このバージョンでは未実装。インストールされた場合はここに記載)。
- コードで合成した音楽(1および2がない場合のデフォルト):
"$PY" "$VV/tools/music/synth.py" <プロジェクト> --duration <words.json内のtotal> --mood <mood> [--bpm N] [--seed N]
スタイルと内容に応じて mood を選択:
| mood | デフォルトBPM | 適した用途 |
|---|---|---|
| calm | 84 | ホワイトボード、ゆっくりとした説明、真面目なテーマ |
| inspiring | 96 | 解説動画、トレーニング、ポジティブなストーリー |
| upbeat | 112 | 広告、プロモーション、スイスモーション |
| tech | 104 | ダークキーノート、テクノロジー製品、データビジュアライゼーション |
--seed を変更すると、同じムードで異なるメロディーが生成されます。ユーザーがファイルを提供したり、ライセンスを確認していない限り、Webから音楽をダウンロードしてリポジトリやプロジェクトに同梱することは絶対に行わないでください。
テンポ検出(ビートに合わせてシーンをカットする場合に使用)
合成音楽の場合は music/beats.json が既に存在します。ユーザーから提供された音楽の場合は、bestagentkits からコピーしたスクリプトでテンポを検出します:
"$PY" "$VV/vendor/bestagentkits/fit-beat-grid.py" <プロジェクト>/music/bgm.wav --min-bpm 70 --max-bpm 140
出力される BPM と BEAT0 を music/beats.json に書き込みます({"bpm":..,"beat0":..,"source":"fit-beat-grid"})。各小節の dB カラムは、音楽が盛り上がる(ビルド)部分と落ちる(ドロップ)部分を示します。可能であれば、スクリプトのクライマックスシーンをドロップ部分に合わせて配置してください。
ミキシング
"$PY" "$VV/tools/audio/mix.py" mix <プロジェクト> [--music-db -6] [--duck-db 5]
--music-db: ナレーション中の BGM 音量(デフォルト -6 dB)。ユーザーが「BGMを小さく」と言った場合は下げ(-9)、「BGMが聞こえない」と言った場合は上げます(-4)。--duck-db: ナレーションがないときに BGM をどれだけ大きくするか(デフォルト 5 dB)。MIXDONE I=<LUFS> TP=<dBTP>を出力します。I が -14 ± 0.5 の範囲内で、TP が -1.0 以下になれば成功です。