Pythonでpydubを使い簡単なリズムを作成しmp3保存する方法

【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 が生成されます。再生すると「ドン・チッ・ドン・チッ」のリズムが鳴ります。


応用:もっと音楽っぽくするには?


よくある質問(FAQ)

Q1. mp3が出力されない

👉 ffmpegがインストールされていない可能性があります。ffmpeg -version で確認してください。

Q2. ModuleNotFoundError: No module named 'audioop' が出る

👉 Python 3.13以降では audioop-lts をインストールしてください。

Q3. リズムだけでなくメロディも作れる?

👉 はい。pydub.generators.Sine を周波数指定で並べればメロディも可能です。


まとめ


Pythonのデコレータ(@記号)を初心者向けに解説!

pygameの機能とインストール方法

PythonでTOTP・HOTPを実装する方法|ワンタイムパスワード

Python ブラウザ指定し自動で開く!webbrowserモジュール完全ガイド

Pythonでmoricons.dllのアイコンをPNGとして抽出する方法

【Python音声再生】playsoundではなくpygameを選ぶ理由とは?

Pythonのtqdmライブラリで簡単プログレスバーを実装する方法

📡Dash × PlotlyでリアルタイムスピードテストWebアプリを作る

【Python】pyttsx3のインストール方法と使い方|音声合成で日本語を喋らせる&音声ファイルに保存

【Python入門】pydubで簡単なリズムを作ってmp3保存する方法|audioopエラー対策

pydubで複数のmp3をミックスして保存する方法|音楽合成を簡単に実現

MBTI診断 | あなたの性格タイプを分析

PDFファイル結合|パスワード設定ツール

【C#】大容量ファイルを指定サイズ以下に分割する方法|.NET8対応コード付き