アナログ−ディジタル変換入門


アナログ値からディジタル値に変換する際に、コンピュータ上でどのような処理が行われているのかをまとめてみます。
ちなみにアナログからディジタルに変換することを、AD変換(Analog to Digital Convert)といいます。
(こちらの記事の続きです↓)

なぜAD変換が必要なの?

コンピューターは1か0か(あるないか)しか処理ができないので、1.5とか、0.1とかそういった1でも0でもない数値は扱えません。

たとえば、は空気を一定周期で振動させることで発生する情報です。
空気の振動はアナログ値の振動になります。
こんなかんじ↓

上図は-1から1までを行き来する波形であり、離散量であるディジタルではその間の数値は表現できません。
そのため、現実世界に溢れている情報は全て1か0かに変換しなければいけません

AD変換の流れ

ここからはAD変換の基本的な流れをまとめます。
詳細は後述しますが、基本的には以下のステップで変換していきます。

1.標本化(Sampling)
2.量子化(Quantization)
3.符号化(Coding)

ものすごくざっくりと説明すると、
アナログ信号を一定間隔で切り出して(標本化)、切り出したそれぞれの値をまるめて(量子化)、それらを二進数に直します(符号化)。

標本化

標本化は英語でsamplingと言いますが、そちらの方が聞き慣れた方は多いかもしれませんね。
標本化のフェーズでは、元となるアナログ情報を一定間隔で切り取っていきます
なぜそんなことをするのかと言うと、アナログ情報は途切れのない連続量ですので、その全ての量に対して変換作業を行うととんでもないデータ量になってしまうためです。

標本化のイメージとしては以下図になります。
以下図の赤線が標本化です。

鋭い方はお気づきかもしれませんが、標本化の間隔が狭ければ狭いほど情報の劣化が少なくなりますがデータ量も多くなります。(逆に、間隔が広すぎると元の情報から大幅に劣化することになります)

そして、元の波形を正確にディジタル値に変換するためには、元の信号の最大周波数の2倍以上の周波数で標本化する必要があります。
これを標本化定理といいます。
その時の周波数のことをサンプリング周波数といい、元の周波数のことをナイキスト周波数といいます。
また、サンプリング周波数の逆数を取ればサンプリングに必要な周期間隔であるサンプリング周期も求められます。
サンプリング周波数を$f_s$、ナイキスト周波数を$f_n$、サンプリング周期を$T_s$とすると・・・

f_s = 2f_n\\
f_n = \frac{f_s}{2}\\
T_s = \frac{1}{f_s}

という関係になります。

ちなみに、CDのサンプリング周波数は一般的に44.1KHzです。
これは人間の可聴周波数が20Hz~20KHzであり、
可聴最大周波数の20KHzをナイキスト周波数とした時に・・・

\begin{align}
f_n &= 20 kHz\\
f_s &= 2\times f_n\\
&= 2 \times 20KHz\\
&=40KHz
\end{align}

となるため、40KHz以上であれば元の周波数を完全に再現できることがわかります。
従って、人間が聴くCDのサンプリング周波数は40KHz以上である44.1KHzとなっています。

さらにちなみにの余談ですが、44.1KHzよりも高いサンプリング周波数でAD変換された音源は、ハイレゾといったりします。人が聞こえる音以上の周波数でサンプリングしてどうするんでしょうね!!

量子化

続いては標本化した波形を量子化していきます。
量子化はこの後に行う「符号化」をやりやすくするための中間作業です。

まずは縦軸を一定間隔で区切っていきます。そして元の値を区切った値にまるめて行きます。
この間隔のことを量子化ビット数といいます。
以下の図では量子化として、●の値を▲の値にまるめていきます

またしても鋭い方ならお気づきかもしれませんが、この量子化ビット数が狭ければ狭いほど情報の劣化が少なくなりますがデータ量も多くなります
また、量子化で近似した値と元の値との間に生じる誤差は、量子化誤差と呼ばれ以下の通り求めます。

\begin{align}
量子化誤差 = 標本化した値 - 量子化した値
\end{align}

符号化

最後に、量子化した値を二進数に変換していく符号化という作業を行います。

ということで、符号化された値を時系列順に上から並べてみると・・・
1000
1010
1001
0100
0001
0010
0110
1010
1001
1000
0101
0001
0001
0101
となります。

人間の目から見ればなんだこりゃな羅列ですが、コンピューターからみれば元の波形を復元できるデータ列となるわけです。

こんな感じで、コンピューターはアナログデータをディジタルに変換して行きます。
コンピューターで情報を処理するたびに情報が劣化するのは、標本化・量子化の段階で切り捨ててしまうからです。

最後の最後に余談ですが、パソコンやらスマホやらに音などのアナログデータを取り込むと、必ずAD変換が行われます。それには当然声も含まれます
声をAD変換して相手に送ったり受けたりすることで、「通話」をすることができます
その際に回線が重かったりすると、数秒分の音情報がつっかえた状態で送られたり、そもそもデータ送信自体が遅延したりすることで「ラグ」が発生したり「急に早口になったり」します

以上、AD変換についてでした。