音は、どのようにディジタル化されるの?
<音についての基礎知識>
- 波
音は、音波ともいうように波の一種です。
池に石を投げると水面に波紋が発生するがそれと同じように音をだすとそこを中心に周囲へ波が伝わっていきます。池の波は水を振動させ、音は空気を振動させることで波が発生します。
池の波は、波が進む方向と水が振動する方向が垂直になるので横波、音は進む方向と空気が振動する方向が平行であるので縦波とよばれています。例えば、地震のP波が縦波、S波が横波です。
- 音
池の波は水面の高さの変化が周囲に伝えられ波になります。それに対して、音の場合は、空気の圧力の変化が伝えられ波になっています。この圧力の高低の変化により我々の耳の鼓膜が振動することで音が聞こえるのです。
- 音の大きさ
同じ高さの音の場合、圧力の高低差が大きいほど、大きな音に感じます(図.音の大小)。この圧力の高低差の1/2を振幅とよんでいます。つまり、振幅が大きいほど大きな音に聞こえるのです(あくまでも、同じ高さの音の場合で、同じ振幅の音でも高いとの方が大きな音に聞こえます。)。
- 音の高さ
音が耳に達すると圧力の高低の変化により鼓膜が振動します。一定の時間内で、圧力の高低の変化の回数を振動数といいます。この振動数が大きいほど高い音に感じます(図.音の高低)。振動数の単位には、Hz(ヘルツ)を用います。人間が耳で聞くことができる周波数は個人差はありますが、20〜20,000Hzといわれています。
<音のディジタル化>
- 圧力変化を電圧変化に
音をディジタル化するには、まず、マイクを用いて電気信号に変換します。マイクは空気の圧力変化を電圧に変換する装置であり、マイクを通すことで音が連続した電圧値をもつアナログ信号に変換ができます。
- ディジタル化
音は時間的に連続し、なおかつ、その圧力の値も連続的に変化します。このように、時間的、数値的に連続なデータ(アナログ値)をコンピュータで扱えるような不連続な値(ディジタル値)に変換をします。
- サンプリング(時間的離散化)
連続的に変化するデータ(アナログ値)を、コンピュータでは処理できないので、一定時間ごとに電圧値を測定し不連続な値に変換します。この作業をサンプリングといいます(図.サンプリング。黒い点の時間における各電圧値(青い点)を読み取ります。)。
1秒あたりの測定回数をサンプリング周波数とよんでいます。このサンプリング周波数は、電話の場合が8000Hz、CDの場合が44,100Hzです。
この違いは、もとの音の最高周波数と関係します。電話は話し声を送るので、その最高周波数は3,000Hzぐらいです。CDは音楽を記録するので、人間の耳で聞くことができる限界の20,000Hzぐらいが最高周波数になります。サンプリングした値をもとのアナログ信号に戻すには、その音の最高周波数の2倍以上の周波数でサンプリングするとよいということがサンプリング定理(Shannon-染谷の定理)により知られています。
もし、サンプリング周波数が最高周波数の2倍よりも小さいとアナログ信号に戻したとに、実際よりも小さい周波数の音に復元されてしまいます。この現象をエリアジングといいます(図.エリアジング。サンプリングした青い点をなめらかにつないでみると緑色の線に復元できる。)。これを防ぐために電話では、4,000Hz以上の周波数の音をカットしてからサンプリングをしています。
- 量子化(値の離散化)
サンプリングした電圧の値を、何段階かの値に変換する作業を量子化といいます(図.量子化。実際の電圧値(青い点)を離散化した値(緑色の点)に変換)。例えば、電話の場合は8ビットで量子化するので値を256段階(2の8乗)に分割して、その中で一番近い値をそのときの値とします。このときに、実際の値と量子化された値との間に誤差(量子化誤差)が生じますが、量子化のビット数を大きくすればこの誤差を小さくすることができ、もとの音の強弱を忠実に再現することができます。CDでは、16ビット量子化されています(2の16乗=65,536段階)。
- 符号化
量子化された値を、実際のコンピュータでは、2進数の0、1に符号化します。
その値を確認してみましょう。下記のExcelソフト(Excel2007)をダウンロードして、解凍して試してください。なお、マクロを有効にして、使用してください。
・符号化確認ソフト:encoding.zip
(量子化周波数 8,000Hz、量子化ビット数 8ビット)
このソフトは、2進数を10進数に変換して、表示しています。音が入力されていない状態は、値が128です。なお、動作確認をしているOSは、Windows XPです。