第504回:MP3圧縮で、どんな音が失われるのか
~24bit WAVとの差分を抜き出して比較 ~
WAVをMP3に圧縮すると多少なりとも音質は劣化する。このDigital Audio Laboratoryでも10年ほど前からその点について検証し、周波数分析したグラフなども掲載してきた。でも、実際抜け落ちた音というのはどんなものなのだろうか? 今回、オリジナルのWAVと圧縮したMP3の差分を音として取り出すとともに、その抜けた音について分析してみたところ、面白い結果が出たので、紹介してみよう。
■ MP3圧縮で失われるのは高域だけ?
MP3では高域の成分が欠ける。そんな指摘をしたのが2001年に書いた“パッケージソフト全盛時代の「現代MP3事情」”の一連の記事だった。その後、WMAやAAC、OggVorbisなどさまざまな圧縮フォーマットで試してみたが、基本的な傾向は同じであり、ビットレートを下げて圧縮率を上げれば上げるほど、高域の成分がより消えていくということが周波数分析をしたグラフからは読み取れた。
いま改めてWAV、MP3(320kbps)、MP3(128kbps)、MP3(64kbps)のそれぞれを周波数分析してみると、以下のようになり、それぞれの違いがハッキリと見える。改めて、このテスト方法を紹介しておくと、まず周波数分析にはefu氏開発のフリーウェア、WaveSpectraを使わせていただいている。昨年11月にVer1.50にバージョンアップしており、性能強化が図られるとともに、画面も少し雰囲気が変わったようだ。
24bit/44.1kHzのWAV | MP3 320kbps |
MP3 128kbps | MP3 64kbps |
一方、曲データとして使わせていただいたのは、友人のミュージシャン、NOROさんのミニアルバム「FREEWHEELin’ e.p.」の中の1曲目「FREEWHEELin’」の一部分。WAVファイルはototoyで配信しているものと同じ24bit/44.1kHzの高音質フォーマットになっている。これを元に3種類のビットレートでMP3にエンコードしたものをNOROさんがSoundCloudにアップしているので、確認してみるといいだろう。
楽曲サンプル(SoundCloudで再生) | |||
WAV 24bit | MP3 64kbps | MP3 128kbps | MP3 320kbps |
もっとも、WaveSpectraでは、直接MP3ファイルを読み込んで分析することはできない。そこで、これをWAVファイルにデコードした結果を分析している。聴いた感じとグラフを見比べていかがだろうか? MP3の64kbpsは明らかに音質劣化しているのが分かるが、128kbps以上だとちょっと聴いた感じだとあまり分からないかもしれない。
以前書いた記事が影響を及ぼしたのかどうかは知らないが、その後、各オーディオメーカーではMP3などの圧縮音源をより高音質で聴くための機器をいろいろと出してきている。AVアンプやポータブルプレーヤーにそうした機能を搭載したものが中心だが、基本的には高域の失った音を推測して足し合わせ、より自然な音に補正するようになっている。いくつか聴いてみたところ、聴き心地はいいけれど、やはりオリジナルとは違うという印象ではあった。やはり失ったものを取り戻すというのは難しいということのようだ。
一方、自分で「高域の成分が消える」と結論を出しつつ、しっかりと検証できずに気になっていたのは、「高域だけなのか? 」という点。詳細なアルゴリズムまで把握しているわけではないが、MP3などの圧縮では別に「高域を削る」ことをしているのではなく、「聴こえにくい音を消す」=マスキングという手法で音を間引いてデータ容量を削減しているのだ。そのため、「中域や低域も削られているのでは……」と思っていたが、実際に検証できずにいた。
■ 圧縮前後の差分を取り出した方法
そんな中、先日、目から鱗が落ちるような実験を目の当たりにした。先日、国内での発表会が行なわれた「Auro-3D」というオーディオコーデック技術のプレゼンテーションのひとコマ。オノセイゲン氏がオリジナルと圧縮結果との差分を作り出し、Auro-3Dの場合とMP3の場合の違いを音で聴かせてくれたのだ。何をしていたのかというと、ProTools上でオリジナルのデータとそれを圧縮したデータを別トラックに並べた上で、圧縮データの位相を反転させた上で、オリジナルと合成して差分を作り出していたのだ。
この話、よく状況が分からない方もいると思うので簡単に説明しておこう。音は波形で表すことができるが、その波形を反転させたものを位相反転とか逆相と呼ぶ。実際のスピーカーの話でいうと、+と-を間違えて反対に接続してしまうと位相が反転し、逆相の音が出る。これだけを聴いている分には、違いは分かりにくいかもしれないが、正しく接続した正相の音と逆相の音を同時に出すと、お互いが打ち消しあって音が消えてしまう。なんとも不思議な現象だが、例えるなら、オリジナルの音をAとすると、逆相は-Aだから「A - A = 0」となる。ここで、話を元に戻そう。オリジナルの音をA、それを圧縮した音をA’とすると、圧縮した音の逆相を作り出して、オリジナルと合成=ミックスするというのは「A - A’」を行なうのと同じだから、その差分が作り出せるということになる。
オノセイゲン氏のプレゼンテーションでは、いとも簡単にこの差分を作り出していたので、簡単なのかなと思い、波形編集ソフトのSoundForgeを使ってWAVとMP3との差分がどうなるかを試してみた。ところが、これがまったくうまくいかなかったのだ。波形を拡大して見てみると、オリジナルと圧縮結果では結構な時間差があり、MP3は0.1秒近く遅れている。0.1秒といったら数サンプルなんてものではなく、何千サンプルもズレているのだから、このまま合成してもうまくいくはずがない。やはりサンプル単位でピッタリと一致させた状態で行なう必要がある。画面を拡大しながら試行錯誤してみたが、なかなか埒が明かない。そこでSoundForgeを諦め、ProToolsやSONARなどを試してみたのだが、そもそもオリジナルとMP3では、サンプル単位に波形を拡大させるとかなり違いがあるため、どこが一致点なのかを見出すこと自体が困難で、うまくいかない。
そんな中、あっさりうまく動いてしまったのがCubaseだった。当初、あらかじめ用意しておいたオリジナルデータとMP3データをトラックに並べて、サンプルを合わせる作業をしていたのだが、Cubaseの場合、Cubase自身で作り出したMP3ファイルのサンプルがズレることがなく、何の調整もしなくても合成することが可能だったのだ。手順としては、まずオリジナルのWAVデータを読み込む。そしてオーディオミックスダウン機能を用いて、MP3ファイルに落とす設定をするとともに、この落としたデータをプロジェクトにオーディオトラックとして新たに読み込む設定にしておくのだ。これを実行すると、上にオリジナル、下にMP3と時間軸が完全にあった形で並ぶ。さらに、下のMP3ファイルの位相を反転させた上で、この2つのトラックをミックスダウンするのだ。その結果を3つ目のトラックに読み込むと、差分が出てくる。64kbps、128kbps、320kbpsのそれぞれの結果を拡大表示させると、やはり音質劣化の大きい64kbpsでは差分は大きく、見た目にも大きな波形になっているのに対し、320kbpsでは小さな波形になっていることがわかるだろう。
オリジナルのWAVを読み込む | MP3ファイルに変換した後、オーディオトラックとして新たに読み込む |
時間軸の合った形で2つのファイルが並んだ | 位相を反転させる | 2つのファイルの差分が3つ目のトラックに読み込んだ |
MP3 64kbpsとの差分 | MP3 128kbpsとの差分 | MP3 320kbpsとの差分 |
その気になる差分、先ほどのSoundCloudのページで音を聴くことができるので、ぜひ確認してみてほしい。シャカシャカしたノイズになっていることがわかるはずだ。64kbpsの差分になると、ある程度音量も大きくなり、原曲の雰囲気も聴こえてくる。
オリジナルWAVとの差分音声(SoundCloudで再生) | ||
差分 320kbps | 差分 128kbps | 差分 64kbps |
■ 周波数成分を比較
この差分の音を聴いてみて、いかがだっただろうか? もっと高域のキンキンした音なのかと思ったが、そうでもない。強いて表現するとしたら、ドラムをブラシで叩いたような音。均一なホワイトノイズではなく、明らかに低音成分がいっぱい含まれている。ピンクノイズというよりもブラウンノイズといった音になっている。そこで、それぞれの周波数成分がどうなっているのかを分析してみたのが以下の図だ。
MP3 64kbps | MP3 128kbps | MP3 320kbps |
当然のことながら、それぞれのビットレートによって音量の違いはあるが、いずれも低域から高域まで含んでいて、音量的には中低域のほうがやや大きめとなっている。これがブラウンノイズっぽい音に聴こえたということなのだろう。
ところで、Cubaseで3つのトラックを並べてみて、ちょっと面白い使い方を発見。逆相にしたMP3のトラックを正相に戻した上で、オリジナルトラックをミュートさせると「A’+ 差分」ということで、完全な補正がされてオリジナルの音として聴こえること。もちろん再生しながら差分トラックをミュートすればMP3の音に戻るので、WAVとMP3とを切り替えながら聴くこともできるわけだ。
これをうまく応用し、サンプル単位で同期する形でMP3の音量に合わせて音量変化するブラウンノイズトラックを作成して、足し合わせると、各メーカーが行なっている音質補正と同等かそれ以上のことができるのかもしれない。