0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

イオンチャンス

Posted at

音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ジェネレーター」を作ってみようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?