音のデジタル表現

サンプリング

サンプリングはたくさんのデータから測定するために取り出すことを言います。波動は刻一刻と値が変化しているので測定のためにはある瞬間の値を取り出すことになります。

頻繁に測定すればより正確な変化を掴むことができますが、測定も難しくなり、かつデータ量も多くなります。

波の測定例

たとえば、右のように変化する波を考えます。


一定間隔で測ります

水色の縦線の部分を測定します。

マウスを近づけると、赤いで測定値が示されます。


測った値で波を再現すると細かい部分は再現できないことがわかります

しかし、これでは十分ではありません。測定値から波を描くと細かな所が失われていることがわかります。


サンプリング周波数を上げる

1秒間に何回測定するかという周期をサンプリング周波数といいます。この周波数を2倍にして同じ測定をしてみます。

測定の場所を表す線が2倍細かい

水色の縦線の部分を測定します。

マウスを近づけると、赤いで測定値が示されます。


測った値で波を再現すると今度は細かなところも再現できます

かなり忠実に再現できます。


画像と比較すると

画像のデータと比較すると、サンプリングは解像度にあたります。

解像度は単位長さあたりいくつ測定するかということであり、サンプリングは単位時間あたりいくつ測定するかということです。

量子化

3ビットで量子化

横に7本の線を引いて一番近い値にします

測定する値をどう数値化するかも問題です。詳しく記録するとデータ量が多くなります。

もし、-3から+3までの7段階に表すなら1回のデータは3ビットで表現できます。(3ビットで8段階まで可)

右図にマウスを近づけると7本引いてある横線のうち一番近いデータを記録します。赤いが測定値の表現となります


測った値で波を再現するとかなり違いがあります

これで記録された音を再生すると右図の赤い線のようになります。

マウスを近づけると元の音との差がわかります。


4ビットで量子化

横に15本の線を引いて一番近い値にします

もし、-7から+7までの15段階に表すなら1回のデータは4ビットで表現できます。(4ビットで16段階までは可)

右図にマウスを近づけると15本引いてある横線のうち一番近いデータを記録します。赤いが測定値の表現となります


測った値で波を再現するとより正確に近づいています

これで記録された音を再生すると右図の赤い線のようになります。

マウスを近づけると元の音との差がわかります。


画像と比較すると

画像のデータと比較すると、量子化は階調にあたります。

共に値の変化を何段階に表現するかということです。

符号化

-3から+3までの7段階に表すと、真ん中が0と考えて、
0,2,3,3,3,2,1,0,0,0,0,-2,-3....となります。

2の補数を使った2進にそのままなおすと、3ビットなので
000 010 011 011 011 010 001 000 000 000 000 110 101 になります。


-7から+7までの15段階に表すなら、真ん中が0と考えて、
0,3,5,6,6,5,3,0,0,1,-1,-3,-5,-3....となります。

2の補数を使った2進にそのままなおすと、4ビットなので
0000 0011 0101 0110 0110 0101 0011 0000 0000 0001 1111 1101 1011 1101 です。

当然3ビットよりもデータ量が増えますが、波は少しづつ増えたり減ったりしますから、前の値からの差は小さくなります。

0, 3, 5, 6, 6, 5, 3, 0, 0, 1,-1,-3,-5,-3....を差で表すと、
0,+3,+2,+1,+0,-1,-2,-3,+0,+1,-2,-2,-2,+2...です。
これは3ビットで表すことができます。
000 011 010 001 000 111 110 101 000 001 110 110 010 です。

このように符号化では測定した値をそのまま01にするのではなく、表現を工夫してデータ量を減らします。

このような工夫は、量子化の後ばかりでなく、量子化の時に合わせて行う方法もあります。