dup / text / 研究報告書 /

音声圧縮を試してみる


最近音声圧縮の技術がいろいろありますが、基本的に私は言うなれば無圧縮至上主義なので、 iTunesに音楽を読み込むときも当然無圧縮でGOです。 ・・・が、さすがにそれで我がコレクション数十枚を全部取り込むと結構な容量になります。 iPod(旧10GB)なんか1000曲がポケットにINみたいなキャッチでしたが、 それはmp3圧縮での話なので私の場合は200曲ちょっとです。 まぁそれでもいいんですが入れ替えが面倒だったりします。

という訳で、そろそろ圧縮モノに手を出してみようかなーと思ったりしていて、 っつーかそもそも圧縮嫌いはただの食わず嫌いみたいなもんなのでここで実験してみましょう!  ってやつです。 Let's比較! 今回の実験にエントリーした音声フォーマットは次の3つです。 iTunesで普段の鑑賞、iPodで外出時の鑑賞という用途のため、そこら辺で再生できるフォーマットだけです。

wav: Windows WAVE format(44.1kHz・16bit無圧縮PCM)←元ネタ(基準)
mp3: MPEG-1 Audio Layer-3(128kbps/2ch)
aac: MPEG-4 Advanced Audio Coding(128kbps/2ch)

というのは日記のコピペですが・・・。ここからが本番です。まぁ今回は真面目な研究です。 実験方法は簡単です。まず、テスト信号生成ソフト(「WaveGene」というフリーソフト)で適当な音声ファイルを44.1kHz・16bitの音声として生成します。 これをCD-Rに焼きこんで、iTunesにてwav、mp3、aacの各種フォーマットにエンコードしながら読み込み、 それぞれを再生して比較します。比較の内容はソフトウェアのスペクトルアナライザ(「WaveSpectra」というフリーソフト)による周波数分布の比較です。 エンコードに用いたのはiTunes4(with QuickTime6.3)です。 CoDecの詳しいことは調べていません。とりあえずそのバージョンの素のままで使用しています。

ここで、制限というか何と言うか、気にとめておかないとならない点がいくつかあります。 まず、100Hzぐらいより低い周波数帯の結果はあまりあてにならないと思ってください。 理由はスペクトルアナライザの処理にFFTという処理を用いてることにあります。 詳しい説明は省くとして、この処理だと低い周波数帯では誤差が大きくなるのであまり信用なりません。 また、逆に20kHzより高い周波数帯もあまりあてになりません。 こっちの理由は音声のキャプチャに用いたサウンドカードの性能的にその辺までしか読めないみたいだからです(笑)。  そして、ある程度のノイズが無音状態でも観測されています。 これはMacで再生→Windowsで観測ということをやっていて、その間が普通〜のオーディオケーブルなので避けられませんでした。 因みにどれぐらいのノイズが定常的に観測されているかというと、下の図ぐらいです。 まぁこのサウンドカード(謎)だとこんなもんでしょう。

無音状態
無音状態  定常的なノイズの参考に・・・


因みにこの図の見方ですが、横軸が周波数(Hz)で縦軸が音圧レベル(dB)です。 周波数と音圧レベルの関係が手にとるようによくわかります(たぶん)。  低い音圧レベルでの変化をよく見れるようにするために縦軸を等間隔目盛りにしています。 実際に耳で聴く感覚的な音の大きさとは違うので若干違和感があるかもしれませんがその辺は許してください。 音圧レベルについては何も調整してないので単なる相対的な指標だと思ってください。

ではいってみよう! まずはホワイトノイズ対決です。 ホワイトノイズというのは、全ての周波数において同じ音圧レベルになるように調節された音です。 テレビの"砂嵐"の音がこれに近いです。 全ての周波数で同じ音圧レベルになるように作られているので、 その相対的な変化をみることで、「この周波数帯で音が弱くなる」等といった、 周波数特性らしきものを読み取ることができます(たぶん)。  その結果が下図です。上から順番にwav、mp3、aacの結果です。

wav ホワイトノイズ(wav)
mp3 ホワイトノイズ(mp3)
aac ホワイトノイズ(aac)


wavがCDからそのまま無圧縮で読み込んだ音声と等価なので、wavの結果が基準になります。 一応観測した音圧レベルは、この図で言うとだいたい-30dBになります。このレベルが基準だと思ってください。 mp3はwavとあまり変わらない感じですが、よく見るとwavよりも音圧レベルの動きは若干大きいです。 aacは基本的にmp3と似ていますが16kHzより高い周波数はカットされてしまします。 図で見える部分はここまでとして、これ以上のコメントは主観が入るので控えます。

次は100Hzのサイン波です。サイン波は最も基本的な振動です。 理論的には純粋にその周波数だけ(この場合は100Hzだけ)が観測されるはずです。 以下、ホワイトノイズ同様にwav、mp3、aacの順で観測した結果を図示します。 冒頭に載せた定常的なノイズがあることを考慮して読んでください。

wav 100Hzサイン波(wav)
mp3 100Hzサイン波(mp3)
aac 100Hzサイン波(aac)


mp3はwavと殆ど変わりません。しかしaacは100Hz前後のレベルがwavやmp3よりも20dBほど大きくなっています。

続いて400Hzサイン波です。ここからはみんなサイン波です。どんどん周波数が高くなっていきます。 勝手に代表選手として約2オクターブごとに観測しました。

wav 400Hzサイン波(wav)
mp3 400Hzサイン波(mp3)
aac 400Hzサイン波(aac)


ここでwav、mp3、aacそれぞれの性格が見えてきました。 400Hz前後にそれぞれお違う大きさの"裾野"が形成されていることに注目です。 "裾野"というのは、中心になる周波数の両脇にできる斜面状の余分な音のことを私が勝手にそう読んでいるだけです。 音源は純粋な400Hzのサイン波なので、本来は無いはずの音である訳ですから、これが音声圧縮による音質劣化の一因であると言えます。 原音に忠実という観点からはこれが少ない(元の音に近い)に越したことはありません(たぶん)。  800Hz、1.2kHz付近に倍音が出ていますが、これはwavにもほぼ同じように出ているので恐らく再生→観測の間でできてしまったものだと思います。

続いて1kHzサイン波です。

wav 1kHzサイン波(wav)
mp3 1kHzサイン波(mp3)
aac 1kHzサイン波(aac)


mp3はwavと区別付かないぐらい似ています。aacはだんだん自己主張の強い裾野ができるようになってきました。 低い周波数(左)側と高い周波数(右)側で全く形の異なる裾野ができています。 個人的には、右側のような勾配の緩い裾野は"牧草地帯"(笑)と呼びます。 1.4kHz付近で若干音圧レベルが上昇するという変な形の牧草地帯です。 何故かは謎ですが何度やってもaacだけはこうなるのでaacエンコードの産物だと思います。 2kHz付近と3kHz付近にまた倍音が出ています。400Hzサイン波のとき同様にwavでも出ているのでエンコード処理とは関係無いものだと思います。 すいません、へっぽこ設備で実験しているもので・・・(汗)。

続いて4kHzサイン波です。

wav 4kHzサイン波(wav)
mp3 4kHzサイン波(mp3)
aac 4kHzサイン波(aac)


この辺がもっともわかりやすいと思います。だいたいこんな感じです。 やっぱりaacの裾野は不自然です。 2倍音、3倍音は相変わらず出ています。もう気にしないことにしましょう。

ではこれで最後、16kHzサイン波です。 因みに私の場合、一応少なくとも20000Hzぐらいまでは再生できると思われるヘッドフォンで モニタしていましたがこの音は全然聞こえませんでした。ただ、なんかいやーんな気分になりました(笑)。  やっぱ音が聴こえて無くても神経は何かを感じ取っているようです。 因みにこの辺が人間の可聴範囲の上限と言われている周波数です。 まぁ良い(?)耳を持っている人や特別に訓練した人は聴こえるかもしれませんね。

wav 16kHzサイン波(wav)
mp3 16kHzサイン波(mp3)
aac 16kHzサイン波(aac)


mp3はwavとどこが違うの?って感じです。 aacは・・・ホワイトノイズの結果を思い出してください。aacは16kHz以上をカットしてしまうのでした。 ということで見事にカットされています。しかし本命のピークが無くても裾野(周波数が低い側だけ)はできるみたいです(笑)。  あと、何故かaacではwavやmp3で出ているノイズのような細かい棒が消えてしまっています。一体何が起こったのでしょう?

という訳で、ひととおり気になるところをやってみましたが・・・結論付けるコメントは例によって主観が入るので控えます。 あと私の環境のクセだったりするかもしれないので。とりあえず参考資料的な意味合いで実験結果を載せてみました。 何かの参考にでもしてやってください。





back

(C) digi*unique production  2003