【Python入門】pydubで簡単なリズムを作ってmp3保存する方法|audioopエラー対策
2025年8月28日
Pythonでリズム音楽を自動生成できる?
Pythonには、音声編集や波形生成をサポートするライブラリがあり、これを使えば簡単な リズム(ドラム風のビート) を自動生成して音声ファイルに保存できます。
特に便利なのが pydub です。pydubは音声の読み書き・加工に強力で、ノイズやサイン波を組み合わせて「ドン・チッ」のようなビートを作れます。
必要なライブラリと環境準備
1. pydubのインストール
まずはpydubをインストールします。
pip install pydub
mp3の入出力には ffmpeg が必要なので、macOSなら Homebrew、Windowsなら公式サイトからインストールしてください。
# macOS (Homebrew)
brew install ffmpeg
2. audioopエラーへの対応(Python 3.13以降)
Python 3.13 から audioop が削除されたようで。そのため、pydubなど一部ライブラリを使うと以下のようなエラーが出ます。
ModuleNotFoundError: No module named 'audioop'
解決方法1: audioop-lts をインストール
Python 3.13以上を使う場合は以下をインストールしたほうがいいようです。
pip install audioop-lts
これで audioop が使えるようになり、pydubも正常に動作します。
解決方法2: Python 3.12以下を利用
もし audioop-lts が環境に合わない場合は、Python 3.12以下に切り替えるのも手です。
実際にリズムを作ってみる
ここでは、 キック(ドン)と ハイハット(チッ) を組み合わせた簡単な4つ打ちビートを作成します。
from pydub import AudioSegment
from pydub.generators import Sine, WhiteNoise
# キック音(低いサイン波)
def make_kick():
kick = Sine(60).to_audio_segment(duration=200) # 60Hz, 200ms
return kick.fade_out(150)
# ハイハット音(ホワイトノイズ)
def make_hat():
hat = WhiteNoise().to_audio_segment(duration=100) - 15 # 音量を-15dB
return hat.fade_out(80)
# 1小節(1秒)
beat = AudioSegment.silent(duration=1000)
# 配置:KickとHatを組み合わせ
beat = beat.overlay(make_kick(), position=0)
beat = beat.overlay(make_hat(), position=0)
beat = beat.overlay(make_hat(), position=250)
beat = beat.overlay(make_kick(), position=500)
beat = beat.overlay(make_hat(), position=500)
beat = beat.overlay(make_hat(), position=750)
# 4小節に拡張
track = beat * 4
# mp3に保存
track.export("rhythm.mp3", format="mp3")
実行すると、カレントディレクトリに rhythm.mp3 が生成されます。再生すると「ドン・チッ・ドン・チッ」のリズムが鳴ります。
応用:もっと音楽っぽくするには?
- スネア(パン!) → ノイズを加工して追加すると雰囲気アップ
- BPM(テンポ)変更 →
durationを調整してテンポを速く/遅く - メロディ追加 →
Sine(440)のように周波数を変えて音階を生成
よくある質問(FAQ)
Q1. mp3が出力されない
👉 ffmpegがインストールされていない可能性があります。ffmpeg -version で確認してください。
Q2. ModuleNotFoundError: No module named 'audioop' が出る
👉 Python 3.13以降では audioop-lts をインストールしてください。
Q3. リズムだけでなくメロディも作れる?
👉 はい。pydub.generators.Sine を周波数指定で並べればメロディも可能です。
まとめ
- Pythonの
pydubを使えば、簡単にリズムを生成してmp3に保存できる ffmpegのインストールが必須- Python 3.13以降での
audioopエラーはaudioop-ltsの導入で解決 - Kick・Hat・Snareなどを組み合わせて本格的なリズムパターンも作れる
PythonでTOTP・HOTPを実装する方法|ワンタイムパスワード
Python ブラウザ指定し自動で開く!webbrowserモジュール完全ガイド
Pythonでmoricons.dllのアイコンをPNGとして抽出する方法
【Python音声再生】playsoundではなくpygameを選ぶ理由とは?
Pythonのtqdmライブラリで簡単プログレスバーを実装する方法
📡Dash × PlotlyでリアルタイムスピードテストWebアプリを作る
【Python】pyttsx3のインストール方法と使い方|音声合成で日本語を喋らせる&音声ファイルに保存
【Python入門】pydubで簡単なリズムを作ってmp3保存する方法|audioopエラー対策