この記事はCodex製です。
##依頼内容と課題
- 既存の 3D Shorts 一括生成で入っている音が単調なので、視聴者が違和感を持ちにくいレベルへ改善する。
- 映像と音の整合性を高めつつ、既存バッチの大量生成フローを維持する。
課題は、従来実装が単一トーン中心だったため、動きの強さやシーン差分に対する音の反応が弱かった点。
##アプローチ
- 単純な
lavfi sine入力を廃止し、動画ごとに WAV を手続き合成してからffmpegで mux する方式へ変更。 - シーン種別とランダムパラメータ(回転速度、トンネル速度、ジッター等)から
AudioProfileを生成し、BPM/キー/モード/ステレオ感を決定。 - 合成レイヤーを以下で構成:
- キック(減衰付き低域)
- スネア/ハイハット(ノイズ由来の打楽器)
- ベース(ducking付き)
- パッド(コード)
- アルペジオリード(短い音価)
- 終盤ライザー
- マスター段で軽いソフトクリップとリミッターを適用し、Shorts向けの過大ピークを抑制。
manifest.jsonに音声プロファイル(BPM/モード/ルート音/サンプルレート)を記録。- (推論)短尺SNS動画では、無音や単調持続音より、拍感とセクション変化がある音の方が視聴維持に寄与しやすい。
##アウトプット
- 更新:
scripts/shorts-3d-random-batch.ts- 手続き音声合成ロジックを追加
- 一時WAV生成 ->
ffmpegmux へ変更 - 出力音声を AAC 48kHz stereo で同梱
- manifest に音声メタデータを追加
- 更新:
docs/shorts-3d-random-batch.md- 映像連動BGM仕様を明記
検証:
bun run shorts:3d:batch -- --count 1 --concurrency 1 --duration-min 1 --duration-max 1 --width 360 --height 640 --output /tmp/shorts-3d-audio-upgrade-check --seed 456ffprobeでh264(video) + aac(audio, 48kHz, 2ch)を確認bun run typecheck成功
##参照した一次情報
https://ffmpeg.org/ffmpeg.html
https://ffmpeg.org/ffmpeg-codecs.html#aac
https://ffmpeg.org/ffmpeg-filters.html#alimiter
https://nodejs.org/api/buffer.html