ポッドキャスト技術音響Python

Pythonライブラリ〜Pydubを使ってオーディオファイルを指定のdbにてノーマライズ

作品制作の際のノーマライズといえば、複雑な思考回路が必要になりますが、ポッドキャストの投稿や、簡単なノーマライズでいいだけの時もあります。

そのたびにいちいちDAWソフトやマスタリングソフトを出すのは面倒なのでPythonでノーマライズしてしまいましょう。

もちろん一括も可能です。

Pydubというライブラリを使います。

Pydubのインストールや根本的なエラーに対する対処はこちらの記事を参照してください。

Pythonライブラリ〜Pydubを使ってオーディオファイルを変換するコード

指定のdbでノーマライズ

こちらのフォームで可能です。

from pydub import AudioSegment

# オーディオファイルの読み込み
audio = AudioSegment.from_file("example.mp3")

# 現在のピークボリュームレベル(dBFS)を取得
current_peak = audio.dBFS

# 目標のピークボリュームレベル
target_peak = -0.1

# ノーマライズに必要なボリューム調整量を計算
change_in_dB = target_peak - current_peak

# ボリュームを調整
normalized_audio = audio.apply_gain(change_in_dB)

# ノーマライズされたオーディオを保存
normalized_audio.export("normalized_audio.mp3", format="mp3")

ただし、ピークノーマライズは音質に影響を与える可能性があるため、特に音量を大幅に上げる場合は注意が必要です。

ある程度適切な録音レベルを把握しながら録音できる中級者以降向けになります。

また、32bitの場合は24bitに処理してからノーマライズする必要があります。

そちらは後半に。

また、ファイルの形式やビットレートなどの他の要因も音質に影響を与えるため、これらの設定も考慮に入れるとよいでしょう。

当然-0.1dbである必要はありません。

フォルダ内のファイルを一括ノーマライズ

import os
from pydub import AudioSegment

# 対象のフォルダと出力フォルダを指定
input_folder = 'path/to/your/input/folder'
output_folder = 'path/to/your/output/folder'

# 目標のピークボリュームレベル(例:-0.1dB)
target_peak = -0.1

# 対象のフォルダ内のすべてのファイルをループ処理
for filename in os.listdir(input_folder):
    if filename.endswith('.mp3'):  # MP3ファイルのみ処理(必要に応じて変更)
        # オーディオファイルの読み込み
        file_path = os.path.join(input_folder, filename)
        audio = AudioSegment.from_file(file_path)

        # 現在のピークボリュームレベル(dBFS)を取得
        current_peak = audio.dBFS

        # ノーマライズに必要なボリューム調整量を計算
        change_in_dB = target_peak - current_peak

        # ボリュームを調整
        normalized_audio = audio.apply_gain(change_in_dB)

        # ノーマライズされたオーディオを出力フォルダに保存
        output_path = os.path.join(output_folder, filename)
        normalized_audio.export(output_path, format="mp3")

32bitを取り扱う際の処理

32ビットのオーディオファイルをPydubで処理するための具体的な手順と方法を説明します。

ただし、Pydubは内部的にオーディオファイルを16ビットの深度で扱うため、32ビットファイルを扱う際にはいくつかの制約があります。

特に、32ビットのオーディオファイルをそのままのビット深度で完全に処理することはできませんが、ffmpegなどの外部ツールを利用することで読み込みと基本的な編集は可能です。

必要なツールとライブラリ

  1. Pydub: Pythonのオーディオ処理ライブラリ。(すでにインストール済み)
  2. ffmpeg: マルチメディアファイルを扱うための強力なツール。32ビットファイルの読み込みに必要。(インストールと設定方法は下記の記事を参照してください。)

Pythonライブラリ〜Pydubを使ってオーディオファイルを変換するコード

from pydub import AudioSegment

# 32ビットのオーディオファイルを読み込む
audio = AudioSegment.from_file("path/to/your/32bit-file.wav", format="wav")

# 例:ボリュームを5dB上げる
audio = audio + 5

# 編集したオーディオを16ビットの深度で保存
audio.export("output-file.wav", format="wav", parameters=["-acodec", "pcm_s16le"])
  • Pydubは内部的にオーディオデータを16ビットで処理します。32ビットのオーディオファイルを扱う際には、この変換による品質の変化が生じる可能性があります。
  • 保存時のフォーマットとビットレートは、exportメソッドのparameters引数で調整可能です。
  • 32ビットファイルの処理には、より専門的なオーディオ処理ライブラリ(例えば、wavescipy.io.wavfile)を使用することも検討してください。

作品制作の際は必ずDAWソフトやマスタリングソフトなどの専門ソフトにて調整するようにしましょう。

こうたろう

音大を卒業後ピアニストとして活動。 日本で活動後北欧スウェーデンへ。 アーティストLindha Kallerdahlと声帯とピアノによる即興哲学を研究。 その後ドイツ・ケルンに渡りAchim Tangと共にアルバム作品制作。 帰国後、金田式DC録音の第一人者:五島昭彦氏のスタジオ「タイムマシンレコード」にアシスタントとして弟子入り。 独立後音楽レーベル「芸術工房Pinocoa(現:Kotaro Studio)」を結成。 タンゴやクラシックなどアコースティック音楽作品を多数プロデュース。 大阪ベンチャー研究会にて『芸術家皆起業論~変化する社会の中、芸術家で在り続けるために』を講演。 その後、秋山庄太郎氏後継の写真スタジオ「村上アーカイブス」でサウンドデザイナー兼音響担当として映像制作チームに参加。 村上宏治氏の元で本格的に写真、映像技術を学ぶ。 祖父母の在宅介護をきっかけにプログラムの世界に興味を持ち、株式会社 ジオセンスの代表取締役社長:小林一英氏よりプログラムを学ぶ。 現在はKotaro Studioにて『あなたのためのアートスタジオ』音と絵をテーマに芸術家として活動中。 2023年より誰かのための癒しの場所『Curanz Sounds』をプロデュース。