とっちゃん@nyanco! です。
今回は指定フォルダ内のMP3ファイルを指定した音量に統一(ノーマライズ)するPythonコードの共有です。
この手だとフリーソフトのMP3Gainが有名ですが、よりサクッと使えるようにパイソンで作ってみましたにゃ〜
ちなみに変換時に再エンコードするので僅かに音質劣化しますにゃ〜(ほぼ分からないレベルですにゃ〜)
コードの動作環境
- OS:Windows11 / macOS Sequoia15.1
- FFmpeg必須
- Pythonバージョン:3.11.2
- 別途必要ライブラリ:
- Pydub:Pythonで音声ファイルを簡単に操作・編集できるライブラリ
pip install pydub
MP3ファイルを一括で任意の音量に統一するスクリプト
早速ですがスクリプトはこちら!
import os
from pydub import AudioSegment
# 入力フォルダと出力フォルダのパスを指定
input_folder = r'path/to/input/folder'
output_folder = r'path/to/output/folder'
# 目標音量レベル(dBFS)を指定
target_dbfs = -20.0
# 出力フォルダが存在しない場合、作成
os.makedirs(output_folder, exist_ok=True)
# フォルダ内のMP3ファイルを処理
for filename in os.listdir(input_folder):
if filename.endswith('.mp3'):
# MP3ファイルを読み込む
audio = AudioSegment.from_mp3(os.path.join(input_folder, filename))
# 音量を調整
change_in_dbfs = target_dbfs - audio.dBFS
normalized_audio = audio.apply_gain(change_in_dbfs)
# 出力ファイルのパスを作成
output_path = os.path.join(output_folder, filename)
# 調整後の音声を保存
normalized_audio.export(output_path, format='mp3')
print(f'Normalized and exported: {filename}')
print('All MP3 files have been normalized and saved to the output folder.')
コードは自動生成AI「perplexity」で作成したものを元にカスタマイズしています。
自分用にカスタマイズする箇所は以下の通り。
- 5行目:変換元になるmp3ファイルが格納されたフォルダパス
- 6行目:変換後の出力先となるフォルダパス(フォルダがない場合は自動生成される)
- 9行目:統一したい音量レベルを指定(マイナス値が大きいほど音量が小さくなる)
・音量レベルの目安
YouTubeやTikTok動画のBGMとして使用する場合、あくまで目安ですが-18 dBFS から -30 dBFS の範囲が適切とされています(ナレーションの有無や動画内容によって異なる)。
以下、具体的な使い方の流れですがとてもシンプルです。
▼5行目で指定したフォルダに変換したいmp3ファイルを用意してpythonファイルを実行すると、このようにコンソールウィンドウに続々と変換されたmp3ファイルが表示されていきます。

1ファイルにつき1・2秒程度かかりますにゃ〜
ファイル数が多いと少し時間がかかりますにゃ〜
▼「プロセスが完了しました」と表示されたらOKです!

▼出力先に指定したフォルダ内に音量が統一化されたmp3ファイルが確認できたら完了です。

バラバラだった音量が統一されて聴きやすくなりましたにゃ〜!
▼サクッとすぐに使えるように下記より.pyファイルのダウンロードも可能です(zip圧縮しています)。
→MP3ファイルを一括で任意の音量に統一する.pyファイルをダウンロード
おわりに
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント