音MADジェネレーターを作ってみた 🎶
こんにちは。今回は「音MAD」を自動生成するジェネレーターをPythonで作ったので、その仕組みとコード例を紹介します。
🎵 音MADとは?
「音MAD」とは、アニメやゲームの音声・効果音を切り貼りし、リズムに合わせて編集した動画・音声作品のことです。
有名なものでは **「ウマウマ」「きしめん」「チルノのパーフェクトさんすう教室」**などのアレンジに使われています。
手作業で作ると大変ですが、ある程度のパターンならプログラムで自動化できます。
⚙️ 必要なライブラリ
今回のジェネレーターでは以下を利用します:
pip install pydub librosa numpy
pydub : 音声の分割・結合に便利
librosa : 音声解析用。BPM検出などに使える
numpy : 数値処理
📝 基本の仕組み
素材音声を短い単位に分割する
楽曲のテンポ(BPM)を解析する
テンポに合わせて音声を並べ替える
出力ファイルとして書き出す
💻 実装例(シンプル版)
from pydub import AudioSegment
import librosa
import numpy as np
入力素材
input_file = "voice.wav"
bgm_file = "bgm.wav"
素材を読み込み
voice = AudioSegment.from_wav(input_file)
bgm = AudioSegment.from_wav(bgm_file)
BGMのBPMを解析
y, sr = librosa.load(bgm_file)
tempo, _ = librosa.beat.beat_track(y=y, sr=sr)
print("BPM:", tempo)
素材を短くカット(0.2秒ずつ)
clips = [voice[i:i+200] for i in range(0, len(voice), 200)]
ランダムに並べてリズムを作る
mad = AudioSegment.silent(duration=0)
for i in range(int(len(bgm) / 200)):
mad += np.random.choice(clips)
BGMと合成
output = bgm.overlay(mad)
書き出し
output.export("output_mad.wav", format="wav")
print("生成完了! -> output_mad.wav")
🎧 出力例
このコードを走らせると、BGMに合わせて素材音声がテンポよくランダムに並んだ「音MAD風」のオーディオが生成されます。
🚀 応用アイデア
フレーズ検出して特定の単語だけを強調
マルコフ連鎖で音声を並べる
**動画生成(moviepy連携)**してYouTubeに投稿可能なMADに発展
📝 まとめ
音MADはプログラムである程度自動化できる
Pythonの音声ライブラリを組み合わせるだけで簡単に作れる
自動生成でも「MADっぽさ」を演出できる
👉 次回は「動画版 音MADジェネレーター」を作ってみようと思います。