フーリエ変換の基礎①

monja2004-03-30



前回は、波形符号化方式
(波形を少ないビット数で再現させる)の話で
その代表例としてADPCMをあげた。
基本的に、波形符号化は
圧縮率に限界があると言われてて
ADPCMやその他の方式でも、
大体25%以下(1サンプル当たり4ビット未満)の圧縮をかけると
著しく品質が劣化することが知られている。


そういったことから、違うアプローチで
音声・音楽のデータ圧縮を考えようということで
スペクトル符号化方式が考案された。
波形符号化方式は、「時間波形を忠実に再現させる」アプローチだったが
スペクトル符号化は、「時間波形を周波数領域に変換させる」アプローチを
とる。
どういう事かっていうと、上記の図を見て欲しい。
上記の図形は、ある波形を表したものである。
x(n)が、圧縮したい波形だとする。
このx(n)、実はある波形に分解ができる。
その分解波形は、a(n),b(n),c(n)になっていて
x(n)=a(n)+b(n)+c(n)という関係がある。


スペクトル符号化方式とは、このように元の波形を
「ゆっくり変化する波形」や「激しく変化する波形」に分解する
っていうのを基本的なアイデアにしてるんだ。
図のa(n)みたいなゆっくり変化する波形を
「周波数が低い波形」と言って
図のc(n)みたいな激しく変化する波形を
「周波数が高い波形」と言う。


んで、この時a(n),b(n),c(n)の高さがわかっていれば
元の波形x(n)に戻せるわけじゃない?
スペクトル符号化方式の場合、x(n)の振幅を記録するのではなく
分解波形a(n),b(n),c(n)の高さを記録するわけよ。


振幅じゃなく、分解波形の高さを記録する方法のメリットは以下の通り。

  • 低周波成分にパワーが集中する。
  • 人間の聴覚モデルを利用できる。

基本的に普通の音声や音楽って、
元の時間波形はそんなに急激な変化はないんだ。
つまりa(n)みたいに、ゆっくり変化する波形は、
大きな高さを持つんだけど
c(n)みたいに、激しく変化する波形は、ほとんど高さが0になって
無視できるんだよね。
だから、a(n)量子化を細かく、c(n)量子化を荒くすれば
それだけで、圧縮効率が高くなるんだよ。
あと人間の聴覚って、
「周波数の低い音は敏感だけど、周波数の高い音は鈍感」っていう性質とか、
「ある周波数の音が、他の周波数の音をかき消してしまう」っていう
マスキングっていう性質がある。
上手くその性質を利用すれば、量子化によるノイズを隠す事ができるんだ。
MP3とか最近の楽音符号化技術は、
大抵どれもこういう人間の聴覚特性を利用しているよな。


んじゃ、次回は実際にある離散波形をフーリエ変換した実例を出すね。