MP3ファイルの音量を均一化

  • Ubuntu(Linux)でMP3ファイルの音量を均一化する(normalize)には、aacgainを使用する。
  • aacgain(mp3gain)は、タグを変更するだけなのでMP3の音質に影響しない。
  • MP3ファイルを変更する他に、出力するときに音量を修正する方法もあるらしい。

CDから音楽をリッピングしたりPodcastをダウンロードしてくると、MP3ファイルの音量がアルバムやファイルごとに違うことがよくあります。音量が小さくなったらボリュウームを上げるだけですが、急に音量が上がると「うっ!」となります。

そこでMP3の音量を程よい大きさに統一してくれる方法がないかと探してみると、MP3ファイルに音量設定を加える方法と再生するときに変更する方法がありました。

MP3ファイルの音量はaacgainで均一化

MP3ファイルの音量を一定にする方法を探すためにググると、mp3gainを使う方法が一般的なようです。

音量を一定ににするに処理は、音声ファイルの十得ナイフsoxでも行えます。しかしsoxコマンドは、MP3ファイルを一度デコードして音量を変更した後に再度エンコードします。そのため処理に時間がかかる上に再エンコードにより音質が劣化してしまいます。

それに対してmp3gainは、MP3ファイルの波形情報には手を加えずに音量が一定になるようにボリュームの設定をMP3に加えるだけです1。そのためmp3gainは、処理時間が短くてすみ波形に手を加えないので音質劣化もなく人気があります

mp3gainは、様々なプラットフォームに対応しておりWindowsやマックで使用することができます。もちろんLinuxでも使えるようですが、Ubuntuではパッケージ化されていません2

そこでmp3gainの代わりにaacgainを使用します3。このソフトは、mp3gainと同じ機能に加えてMP4とAACファイルの音量も均一化できます。

aacgainのインストール

aacgainは、公式パッケージに入っていないのでPPAからインストールします。

$ sudo add-apt-repository ppa:robert-tari/main
$ sudo apt-get update
$ sudo apt-get install aacgain

MP3ファイル間の音量を統一

MP3ファイルの音量を一定にするには、-rオプションを指定して、引数で一定にしたい音声ファイルを指定するだけです。これで指定されたMP3ファイルの音量が全て同じ(くらい)になります。

$ aacgain -c -r *.mp3

-cオプションは、クリップした時の警告を無視します。

GUIならeasymp3gain

aacgain(mp3gain)をWindowsなどのようにGUIで使用したい場合は、GUIラッパーのeasymp3gainを使用します。

$ sudo apt-get install easymp3gain-gtk

# or Qtを使用したい場合

#$ sudo apt-get install easymp3gain-qt

ただしインストールしただけではmp3gainが無いのでMP3を扱えません。そこでMP3を処理するにはmp3gainの代わりにaacgainを使用するように設定を変更します。

easymp3gain-gtkまたはeasymp3gain-qtを起動したら、OptionsメニューからAdvancedを選択して、MP3Gain backendをaacgainに変更します。

easymp3gainのOptions→Advanced設定
easymp3gainのOptions→Advanced設定

easymp3gainの使い方

easymp3gainの使い方は、次のような流れになります。

  1. Add File(s)またはAdd Folderボタンをクリックして一定にしたい音声ファイルを選択する。
  2. Analyzeボタンをクリックして音声ファイルを解析する。
  3. Gainボタンをクリックして、音量を一定にするための情報をを音声ファイルに加える。

再生時に音量を均一化

MP3ファイルを変更するのではなく、出力される全ての音量を調整するには、LADSPAプラグインを使用する方法があるようです。ただし試していないので、こんな方法もあるというポインタのみ記しておきます。

Automatically adjust the volume based on content? – ask ubuntu

参照と脚注

  1. mp3gainは、音量を一定にするために再生するときに音量をどのくらい上げるか・下げるかという情報を付加します。MP3Gain – wikipedia

  2. mp3gainは、Ubuntuでも以前はパッケージが配布されていました。しかしUbuntu 15.04以降はパッケージが削除されました。
    Debian Bug report logs – #761847
    Publishing history of mp3gain package in Ubuntu

  3. aacgainの他には、python-rgainやnormalize-audioを試してみました。またsoxでも–normオプションを使っても音量を統一できるということで試してみました。ただし使い方を間違っていたのか、どれもaacgainのようにはMP3ファイルの音量を揃えることはできませんでした。

Ubuntu 15.10マシンにBluetoothスピーカーを接続

  • Ubuntu 15.10マシンにBluetooth接続のワイヤレス・スピーカーを接続した。
  • Bluetoothスピーカーを接続するのに特別なパッケージのインストールは必要なかった。
  • 音飛びが発生することがある。

パソコンから離れた場所でポッドキャスト(音楽)を聞きたくて、Ubuntu 15.10マシンにBluetoothスピーカーを接続してみました。

当初FMトランスミッターを使ってラジオに飛ばすことを考えていましたが、電気屋さんでBluetooth接続のスピーカーがあることを知り失敗覚悟での挑戦でした。一応その場でググって成功事例があることは確認したのですが、思いの外すんなり行ってしまいちょっと拍子抜けでした。

環境

パソコン ThinkPad T400
OS Ubuntu 15.10
無線スピーカー ELECOM LBT-SPP20

Bluetoothには、従来のVer. 3.0までとBluetooth Low Energy(BLE)と呼ばれるVer. 4.0の二種類が存在します。これらは同じBluetoothですが互換性はありません 。非互換性は、ハードウエアレベルでの非互換性なので、ソフトウエアで対応することはできません。そのため購入前にBluetoothのバージョンが合っているか確認しておく必要が有ります。

今回購入したBluetoothスピーカー(ELECOM LBT-SPP20)は、スマホ対応ということでBluetooth Ver. 4.0(BLE)のみに対応しています。

最近のパソコンは、仕様にBluetoothの対応バージョンが記載されていますが、ThinkPad T400はBluetooth対応というだけでどのバージョンになっているのか記載がありませんでした1。そのためVer. 4.0のみ対応のBluetoothスピーカー(LBT-SPP20)は選ばないほうが賢明です。しかし手元にBluetooth 4.0対応のUSBドングルがあったので、非対応でもなんとかなるだろうという算段でした。

しかしThinkPad T400内蔵のBluetoothはVer. 4.0にも対応していたようで、LBT-SPP20と問題なくペアリングすることが出来ました2

Bluetoothスピーカーとのペアリング

Bluetoothスピーカーを使用するためには、最初にペアリングをおこなう必要が有ります。

Bluetoothスピーカーとのペアリングは次の手順で行います。なおこの手順は、Bluetoothスピーカーに限らずBluetoothデバイスに共通の手順です。

  1. Bluetoothスピーカーをペアリングモードにします。
  2. UbuntuマシンのBluetooth設定を開きます。
  3. デバイス欄下の[+]をクリックして、接続するBluetoothスピーカーを検索します。
  4. Bluetoothスピーカーが表示されたら、それを選択して「進む」をクリックします。
    発見されたBluetoothデバイスを選択して「進む」をクリックします。デバイスの検索には多少時間がかかります。
    発見されたBluetoothデバイスを選択して「進む」をクリックします。デバイスの検索には多少時間がかかります。

    少し待つとペアリングが完了します。
    これでBluetoothデバイスとのペアリングに成功です。
    これでBluetoothデバイスとのペアリングに成功です。

    LBT-SPP20は、ペアリングに失敗することが有りました。この時はもう一度ペアリングさせると上手く行きます。

ペアリングの結果は保存されるので、次回からは電源を入れれば自動的に通信して使用できる状態になります。

サウンド設定

ペアリングに成功したら、Bluetoothスピーカーから音が出るか確認します。

  1. サウンドの設定を開くと出力タブにペアリングしたBluetoothスピーカーが表示されているはずです。表示されない時は、Bluetooth設定の[-]でペアリングを削除して再度ペアリングを行います。
    サウンドの設定。内蔵スピーカーの下にBluetooth接続のスピーカー(LBT-SPP20)が表示されています。
    サウンドの設定。内蔵スピーカーの下にBluetooth接続のスピーカー(LBT-SPP20)が表示されています。
  2. テストボタンをクリックしてBluetoothスピーカーから音が出ることを確認します。
    LBT-SPP20は、ペアリング完了直後は音量が最大に設定されます。そのためテストを行う前に音量を最低に絞っておくことをオススメします。

これで問題がなければ、rhythmbox等で再生した音楽をBluetoothスピーカーで楽しめます。安いスピーカーとはいっても、やはりノートパソコン内蔵のスピーカーとは段違いの音質です。

問題点

UbuntuマシンとBluetoothスピーカーの接続はすんなり行ったのですが、いくつか問題が有ります。

ペアリングで音量設定が最大になる

LBT-SPP20は、ペアリングすると音量設定がリセットされて最大になってしまいます。ペアリング後に音量を下げておくのを忘れると大音量で再生され心臓によくありません。ペアリングが完了したら[-]ボタンを押して音量を最小(「ピポ」と音がする)にしてから、ちょうど良いところまで音量を上げることをオススメします。

音飛びすることがある

時々(結構な頻度かも)音飛びすることが有ります。その時にはsyslogに次のようなログが記録されています。

Jan  5 10:20:13 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 103796 us (= 18308 bytes) in audio stream
Jan  5 10:20:13 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 71287 us (= 12572 bytes) in audio stream
Jan  5 10:20:13 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 106171 us (= 18728 bytes) in audio stream
Jan  5 10:20:13 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 72159 us (= 12728 bytes) in audio stream
Jan  5 10:20:13 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 8108 us (= 1428 bytes) in audio stream
Jan  5 10:20:14 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 150157 us (= 26484 bytes) in audio stream
Jan  5 10:20:14 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 36300 us (= 6400 bytes) in audio stream
Jan  5 10:20:14 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 165 us (= 28 bytes) in audio stream
Jan  5 10:20:14 T400 pulseaudio[1810]: [bluetooth] module-bluez5-device.c: Skipping 101186 us (= 17848 bytes) in audio stream

この音飛びの原因はWi-Fiとの干渉かと思いThinkPad T400のWi-Fiを無効にしてみましたが改善されませんでした。ただなんとなく夜は昼間に比べて音飛びする頻度が低いような気がするので、どこかの電波(ノイズ)と干渉しているのかもしれません。

Bluetoothスピーカーが消える

UbuntuのBluetooth設定を見るとスピーカーと接続してていても、サウンド設定にBluetoothスピーカーが表示されないことが有ります。この時はペアリングを一度削除して、再度ペアリングをする必要が有ります。

参照と脚注

  1. ThinkPad T400の仕様について書かれたページを見つけたが、Bluetoothは ver. 2.1となっていた。なぜ接続できたんだろう? 見つけたページに誤りがある可能性と、LBT-SP20がver. 4.0の他に従来のBluetoothにも対応していた可能性が考えられます。
    Lenovo ThinkPad T400 Notebook specs

  2. ThnkPad T400内蔵のBluetoothを無線のハードウエアスイッチでOFFにすると、Bluetooth Ver. 4.0 USBドングルを接続してもBluetoothを有効にできませんでした。ドングル自体はUbuntuから認識できているようなのですが、もし内蔵のBluetoothがver. 4.0に対応していなかったら接続できなかったかもしれません。