| Home | Column1 | Column2 | Dustbox |
WebMaster : j-takayanagi@artemissoftservice.com

Copyright ©2006-2016 ArtemisSoftService.
Sorry Japanese only.

It is optimizing by "HTML4.01 Strict" and "CSS Level2.1".
Valid HTML 4.01! Valid CSS!

音質へのこだわり〜実践編

さて、前回のコラムで音質へのこだわりを披露させていただきました。
今日はその実践方法をご紹介したいと思います。
例として音楽CDを高音質MP3化する手順をご紹介していきましょう。


音楽CDの取り込み

まずは音楽CDを取り込む方法からです。
音楽CDからいきなりMP3変換することももちろん可能ですが(というか大抵のひとはその方法でやっているのでは?)今回はそれはしません。
音楽CDをPCに取り込むのはWindows標準の無損失のWAV形式です。
無損失ファイルに変換するだけなので、ツールはなんでも良いです。
WindowsXP以上を使っているひとなら、Windows Media Player11以上が使えるはずなので、それでも構いません。
iTuneを持っている人がいればiTuneでもWAV変換は可能です。
もちろん他のツールでもOKですが、ここではWMP11を使った方法をご紹介します。

音楽CDをCDドライブにセットしてWMPを起動します。
アルバム情報の更新機能を使えば下記のスクリーンショットのようにアルバム名や各トラックの楽曲名が表示されます(必須ではありません)。
WMP11
メニューのツールからオプションを選び、音楽の取り込みタブを選択します。
いくつか選択できますが、無損失のWAVで取り込むので、下記のスクリーンショットのようにします。
WMP11オプション
オプションの設定が完了したらPCに取り込みたいトラックにチェックを入れます(既定では全てにチェックが入っています)。 ここでは「シュラバ★ラ★ランバ」という曲だけを取り込むのでこの曲のみチェックし、他は全て外します。
そうしたら右下にある取り込み開始のボタンをクリックして取り込みを開始してください。
以下のスクリーンショットが取り込み中の状態です。
WMP11取り込み中
取り込みが完了すると、下記のようにライブラリに取り込み済みとでます。
WMP11取り込み済
ここでWMP11はもう用事はないのでWMP11は終了させましょう。
CDももう必要ないので抜いて構いません。
取り込まれたWAVファイルはマイミュージックの中にあります(下記スクリーンショット参照)。
取り込み済みファイル
ファイルサイズを見てみましょう。
この曲は約5分近くあるので、ご覧のとおり50MBオーバーです。
これではiPodやスマホを初めとしたポータブルプレーヤーで聴くにはサイズが大きすぎます。
ファイルのプロパティ
ですので、このファイルをMP3で圧縮を行います。


MP3変換

MP3圧縮には前回でもご紹介したとおりオープンソースのLameを使います。
本家サイトではソースコードのみの配布で、自分でビルドしなければならないなど面倒なので、別のサイトからWindows用にビルドされたものが配布されているので、ここからバイナリをダウンロードしてください。
※注:一部のウィルス対策ソフトでは有害サイトと表示されることがありますが、有害サイトではありません。大丈夫です。
このLAME Bundlesにある最新バージョンをダウンロードしましょう。※執筆時点では3.99.5が最新のようです。
Lameはコマンドプロンプト用のアプリケーションなので、そのままでは使いにくいです。
ですので、GUIからLameを操作できるフロントエンドをダウンロードしましょう。
Lameフロントエンドは色々ありますが、筆者はLame Front-End 1.7を使っています。
これをインストールしましょう。
Lame Front-Endにもlame.exeが同梱されていますが、若干古いバージョンなので、先ほど落としてきた最新版のlame.exeに差し替えましょう。
ちなみに日本語対応ソフトなので安心して利用できます。
Lame Front-Endを起動すると、こんな感じの画面がでます。
LameFrontEnd
入力ファイルタブにMP3変換したいWAVファイルをドラックアンドドロップします。
LameFrontEndその2
上記のようになればOKです。
次にLameの設定です。
まずは基本設定から。
基本設定
基本はLameのプリセットを使うのが最終的によいと筆者は感じました。
もちろんファイルサイズを抑えつつ高音質を維持できる可変のVBR形式や平均ビットレートで圧縮するABR形式も選択可能ですが、ここではMP3で可能な限りで最高音質の圧縮するので、CBRの320Kbpsのプリセットを選ぶことにしました。
チャンネルはステレオではなくジョイントステレオで。
ジョイントステレオというのは、端的に言えば圧縮効率を良くした普通のステレオのことです。
Lameもそうですが、iTuneのAAC形式もデフォルトはこのジョイントステレオになります。
技術的な話で言えば、音声をいくつかのブロックに分割して、ミッドサイドステレオに適しているか、シンプルステレオに適しているかを判別しながら圧縮します。
ミッドサイドステレオというのはモノラル音声を主信号にしながら副信号として左右の差を用意するステレオ方式で、シンプルステレオよりも少ない情報量で済みます。
mp3の場合、同一ビットレートでの圧縮なら全般的な音質が向上するといわれ、ステレオ感も損なわれることはありません(AAC形式では一部ステレオ感が損失するという指摘もあるようですが)。
もちろん5.1chや7.1chの環境を持っている人はマルチチャンネルでもいいです。
ただポータブルオーディオで聴くことが目的ならジョイントステレオにしておくのが無難でしょう。
エンコード品質アルゴリズムは0−最高品質を選択します。
詳細は上記スクリーンショットのとおりです。
次に詳細設定です。
ほとんど既定の設定で構いませんが、ポイントは3つ。
1つ目は心理音響モデルのチェックを全て外すこと。
MP3は人に聴こえない音域をカットすることで圧縮するわけですが、この機能は少しでも音質を向上させることを目的とした独自アルゴリズムです。
本来は先に述べたとおり「音質を良くする」ことが目的なわけですが、本来の波形に余計な手を加えることになります。
また変換速度が遅くなる。中域の音域が物足りなくなる(ハイ上がりになる)など余計なことをしてくれるので筆者は使いません。
次にリプレイゲインですが、これも無効にしておきましょう。
ゲインの調整は別のツールを使って行います。
最後にローパスフィルターとハイパスフィルターです。
いわゆるカットオフフリケンシーというやつで、低音域、高音域をどの程度カットするかをここで決めます。
値が大きいほど音域がカットされ、圧縮率があがりますが、ここでは巣の音をなるべく保持したいのでこのフィルターは通しません。
lameの古いバージョンでは全てのフィルタを無効チェックボックスで無効化できたのですが、最新版のLame3.99.5ではこのオプションは廃止になってしまいました。
ですのでスクリーンショットのようにそれぞれ-1の値を入れてます。これでパスフィルターを無効化することができます。
あとは下記のスクリーンショットを参考にしてみてください。
詳細設定1
詳細設定2
これでエンコードの準備は完了です。
Encode/Decodeボタンをクリックしてエンコードを開始してください。
CBRのエンコードは少し時間が掛かります。
いくつもの楽曲を一気にエンコードするとなるとそれなりに時間がかかるので覚悟してくださいね。
エンコード中の画面はこんな感じになります。
エンコード中
CBR320Kbpsで圧縮すると、無損失の約1/4のサイズになります(ちなみに128Kbpsで圧縮すると1/10のサイズになります)。

あとMP3には出力ゲインを調整することができます。
普通の音楽CDでは殆どありえないことですが、MIDIや生演奏をレコーディングするときに、ゲインが大きすぎるとクリッピングを起こすことがあります。
クリッピングとは音の出力レベルがマックスあるいはそれを超えてしまう現象を言い、このクリッピングが度を越すと音割れが発生します。
出力ゲインの調整はこのクリッピングを極力抑えること、そして楽曲リストを一定の音量レベルに揃えるのに便利です。
音楽CDはものによって録音状態が異なります。
妙に音の大きなもの、逆に小さいものなど。
複数のCDから楽曲を取り込んだ場合は音量にばらつきが出てしまいます。
そこでMP3Gainというソフトを使って取り込んだ全ての楽曲の出力ゲインを一律にします。
エンコード中
Lameと同じようにゲイン調整したいMP3ファイルをドラックアンドドロップで画面に放り込むと次のようになります。
エンコード中
まず、トラック分析のボタンを押して現状どうなっているかを確認します。
すると下記のように表示されます。
エンコード中
ここでは95dBのゲインでクリッピングしていることがわかります。
ちなみに音割れをしている可能性がある場合、文字が赤く表示されます(…が、リソース元が音楽CDなら大抵大丈夫です)。
調整するゲイン(dB)ですが、デフォルトでは89dBになってます。
これはこの音量ならどのようなジャンルの楽曲でもクリッピングせずに済む値だろうということらしいですが、これでは少々音が小さすぎます。
ですので筆者は92dBで揃えるようにしました。
この値が、私の持つ楽曲全てで音割れしないギリギリの音量なのです。
ですので、この値は完全に好みということになります。
ゲインを変更する場合はトラックゲインのボタンを押します。
すると下記のようにゲイン調整され、クリッピングもなくなりました。
エンコード中
もし出力ゲインを元に戻したい場合は、メニューのゲインの変更からUndo Gain changesを選べば戻ります。
尚、このゲイン調整はMP3の波形に影響を与えるものではありません。
ですので音質にはまったく影響しません。
MP3には属性情報として出力ゲインの値を持っています。
MP3Gainではその値をAPEタグ属性にバックアップしてから属性のゲインを変更します。
ですので、APEタグ属性を削除すると元に戻らなくなるので注意が必要です。
 訂正のため削除2013.02.04

訂正2013.02.04

すみません。
ウソを書いてました。
MP3Gainでのゲイン調整は波形に影響を与えないという解釈は厳密には誤りです。
厳密にはスケールファクターを操作して再エンコードなしにMP3ファイルの音量を調節します。
つまり音楽データに改変を加えています。
但し、音量変更の履歴をタグに書き込むので、劣化することなく音量を元に戻すことができ、他のノーマライズ機能を持ったソフトとは異なり可逆です。
またゲイン調整の計算方法もリプレイゲインと同じ方法をとっているため、高度な音量調整が可能です。
先ほど可逆と書きましたが、履歴情報が書き込まれているタグを削除すると元の音量には戻りません。
そういう意味も含め、波形に直接手を加えることに抵抗があるなら、Winamp(in_!mpg123.dll)、foobar2000、MediaMonkey、QMPなどが本当の意味での波形に一切の影響を与えないリプレイゲインによる再生が可能なのでそれを利用すると良いでしょう。
筆者の場合、iPod Shuffleやスマホなどのポータブルプレイヤーで聴くことも想定しているため、リプレイゲイン機能のないプレイヤーでも音量を揃えられるように再エンコードせず可逆変換できるMP3Gainを利用しました。


楽曲の再生準備

さて次にデコード(再生)側の設定です。
私は長らくWinampを使っているので、Winampを使った設定をします。
ちなみにWinampの入手先はこちら
私は必要最小限のモジュールしかインストールしていないので至ってシンプルです。
スキンもモダンスキンではなく従来からのクラシックスキンを使っています。このほうが慣れてますので。
Winamp
設定は、少し見づらいですが、画面左上の小さなボタンから開くことができます。
まず、MP3デコーダー用のプラグインを入れます(前回もお話したとおりWinamp標準のMPEGデコーダーは使いません)。
ここからin_!mpg123.dllをダウンロードして、Winampインストールフォルダのpluginフォルダにコピーします。
通常版とSSE2版とがありますが、ほとんどの方はSSE2対応プロセッサのPCを使っていると思うので、SSE2版を入れましょう。
そうするとWinampの入力プラグインに認識されます。
エンコード中
さて、これだけではまだ駄目で、ちょっとした設定が必要になります。
まずWinamp標準のMPEGデコーダープラグインからMP3を認識しないようにする必要があります。
入力プラグインにあるNullsoft MPEGオーディオデコーダを選択して開きましょう。
MPEGオーディオデコーダ
既定ではこんな感じになってると思います。
このうち、MP3、MP2、MP1の3つを削除します。
MPEGオーディオデコーダ2
OKボタンを押して終了させ、今度はin_!mpg123.dllの設定を行います。
Shibatch mpg123 v1.18y ot112.1 SSE2を選択して開きます。
in_!mpg123.dll
デコーダータブの有効にチェックを入れます。
あとは好みの問題とサウンドデバイスの性能の問題になりますが、筆者はスクリーンショットのような設定をしています。
スレッドの優先度はマックスのHighest、出力フォーマットは64bit(float)の設定にしています。
またフルバッファリングと先頭の無音の抑制、ボリュームを別の方法で行うにそれぞれチェックしています。
出力フォーマットはサウンドボードは32bit(int)出力なのですが、後述するASIOの設定の関係でこのようにしています(理由も後述)。
ちなみにリプレイゲインは無効のまま。ストリーミングはお好みで。
WinampをWebブラウザの標準プレイヤーにする場合、ストリーミング再生の場合があるので有効にしておくとよいかもです。
つづいて出力プラグインです。
なるべく原版の巣の音をそのまま出したいので、DirectSound出力は使わず、レイテンシーの低いASIO出力を使います。
ただ、Winampは標準ではASIO出力に対応していないので、こちらも別途プラグインを追加します。
out_asio(dll).dllをこちらから入手してやはり同じようにWinampのpluginフォルダにコピーします。
こちらはexe版とdll版がありますが、違いはほとんどありません。
dll版のほうが動作が軽い代わりに、低スペックマシンだと音とびがしやすいこと。
exe版は動作が重い代わりに音とびが少ないということでしょうか。
普通のPCならdll版で良いと思いますが、音質に影響はないのでどちらでも良いと思います。
ちなみに筆者はdll版を使ってます。
Winampの設定画面から、今度は出力プラグインに移動し、ASIO output (dll version)v0.67 SSE2を選択して設定画面を開きます。
out_asio(dll).dll
まずASIOのデバイスを選択します。
利用しているサウンドデバイスがASIO対応なら、このドロップダウンに表示されます。
何も表示されない場合は、残念ながらハードウェアレベルでASIO出力に対応していません(が、その場合でも擬似的にASIO出力させる方法がありますが、それはまた別の機会に)。
スレッドの優先度はPCのスペックで判断してください。
筆者は最高のTimeCriticalを選択しています。
バッファサイズですが、これもPCのスペックとの相談になります。
基本的には10以下で問題ないはずですが、基準としては再生中に他のウィンドウを最小化したときに音とびが発生しないギリギリの値を入れるのがベストです。
この値は低ければ低いほどクリアな(より原版に近い)音が出ます。
あとLameで圧縮したMP3にはギャップレスモードが非常に有効なのですが、他のメディア(動画とか)を再生する場合、音のお尻が切れてしまうなどの弊害が出るため筆者は有効にしていません。
あとダイレクトモニターは必ず有効にしておきましょう。
これは音声データをコンピュータを通さず直でサウンドデバイスに送る機能で、ほとんどレイテンシが生じないので使わないのは損です。
最後にリサンプリングです。
CDオーディオは通常44.1kHzでサンプリングされています。
ですのでエンコードしたMP3も44.1になります。
ただサウンドデバイスが許容するならば、サウンドデバイスが対応する最大のサンプリング周波数にオーバーリサンプルするのがお勧めです。
44.1KHzから48KHzにあげるだけでもだいぶ違います。
ちなみに筆者のサウンドデバイスは最大で96KHzで出力しているので、スクリーンショットのとおり96KHzにオーバーリサンプルして出力しています。
この時、当然再生しながらリサンプリングの演算が走り続けるわけですので、その時のスレッドの優先度、品質も設定します。
筆者のPCはわりかしハイスペックなので、いずれも最大値を設定しています。
尚、このリサンプリングですが、内部的に64bit floatに変換されています。
入力プラグインで設定した出力フォーマットで64bit(float)にしたのは、この入力プラグインと出力プラグインの受け渡しの際に余計な変換を防ぐためです。
入力側の出力フォーマットを整数値(int)にしていると、整数→浮動小数点という変換が入ります。
私の環境では最終的には32bitの整数値でASIO出力されるのですが、そうすると整数→浮動小数点→整数というような変換処理が発生し、音質劣化の要因になります。
ですので、入力側のin_!mpg123.dllの設定で出力フォーマットを64bit(float)にしているわけです。
但し、出力フォーマットを24bit以上にすると、Winampのサードパーティ製エフェクトプラグインが機能しなくなるなどの弊害があります。
別途エフェクトプラグインを使いたいという人は16bit(int)か24bit(int)にしておきましょう。

以上が前回からの続きということで、設定手順について書かせてもらいました。
残念ながら低価格のサウンドデバイスやオンボードのサウンドデバイスはASIO対応してません。
でもソフトウェアエミュレーションでASIO出力する手立てがあります。
これについては「all asio driver」でググると手順が載っていたりするのでよろしければそちらを試してみてください。
筆者も以前持っていたノートPCではこの方法でASIO出力してました。
では今回はこの辺で。