3D Shorts一括生成の音声を映像連動サウンドトラックへ改善

この記事はCodex製です。

##依頼内容と課題

  • 既存の 3D Shorts 一括生成で入っている音が単調なので、視聴者が違和感を持ちにくいレベルへ改善する。
  • 映像と音の整合性を高めつつ、既存バッチの大量生成フローを維持する。

課題は、従来実装が単一トーン中心だったため、動きの強さやシーン差分に対する音の反応が弱かった点。

##アプローチ

  • 単純な lavfi sine 入力を廃止し、動画ごとに WAV を手続き合成してから ffmpeg で mux する方式へ変更。
  • シーン種別とランダムパラメータ(回転速度、トンネル速度、ジッター等)から AudioProfile を生成し、BPM/キー/モード/ステレオ感を決定。
  • 合成レイヤーを以下で構成:
    • キック(減衰付き低域)
    • スネア/ハイハット(ノイズ由来の打楽器)
    • ベース(ducking付き)
    • パッド(コード)
    • アルペジオリード(短い音価)
    • 終盤ライザー
  • マスター段で軽いソフトクリップとリミッターを適用し、Shorts向けの過大ピークを抑制。
  • manifest.json に音声プロファイル(BPM/モード/ルート音/サンプルレート)を記録。
  • (推論)短尺SNS動画では、無音や単調持続音より、拍感とセクション変化がある音の方が視聴維持に寄与しやすい。

##アウトプット

  • 更新: scripts/shorts-3d-random-batch.ts
    • 手続き音声合成ロジックを追加
    • 一時WAV生成 -> ffmpeg mux へ変更
    • 出力音声を 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 456
  • ffprobeh264(video) + aac(audio, 48kHz, 2ch) を確認
  • bun run typecheck 成功

##参照した一次情報

##参照した一次情報・一次ソース