detamamoruのブログ

興味を持ったことや勉強したことに関して記事を書きます。主に低レイヤー寄りの記事を公開。

Voice changerを作りたくて(1): 音ってなんやねん

出田 守です。
このシリーズは、ほとんど何もわからない状況からVoice changerを作る過程の記録です。

環境(私も含めて)

[私について]
算数・数学: 苦手で避けてきた(後悔中)。おそらく中学2年生で止まっている。
プログラミング: 努力中
[開発環境 - PC0]
OS: Windows10 Home 64bit 1903
CPU: Intel Core i5-3470 @ 3.20GHz
Rust: 1.39.0
RAM: 8.00GB
Editor: Vim 8.1.1
Terminal: PowerShell

音とは

もしかしたら習ったかもしれませんが、今まで真剣に音について考えたことがなかったので調べてみました。
音とは物体の振動です。それらの振動を空気や水を伝って感じることで私たちは音を認識します。音は振動を起こす音源があってこそ発生します。音を構成する音の3要素というのがあります。

音の大きさ

音の大きさとは、空気圧の変化量によって決まります。これを音圧と言います。音の大きい小さいは音圧で決まります。圧力の単位としてはPa(パスカル)があります。ただし、Paで表記した場合桁数が多くなりすぎ、このまま扱えば分かりにくいため、一般的にdB(デシベル)という相対的で分かりやすい単位を用います。音の場合、dBは人が聞こえる20μPaを基準として0dBとします。

音の高さ

音の高さとは、1秒間に振動する回数で、これを周波数と言います。周波数の単位はHz(ヘルツ)です。1秒間に1回振動すれば1Hzとなります。人は20Hz~20,000Hzまで聞こえると言われています。

音の音色

同じ音圧、同じ周波数でも振動の形が違えば人間は音の違いを認識します。これらは周辺の環境や音源などから違いが生まれます。

サンプリング

音はアナログで連続した量を表します。この信号をコンピュータで扱うためにサンプリングとよばれる処理を実行します。サンプリングはある時間間隔で、その時点での振幅を読み取ります。それらをリストで保持します。各値のことをサンプルと言います。
これにより、音はメモリ内では周波数とサンプルというリストで表現することができます。これをサンプリング周波数と言いHzを単位とします。例えば1秒間に44,100個のサンプルを読み取る場合は44,100Hzとなります。サンプリング周波数が大きくなるほどサンプル数が多くなり音質も良くなります。一般的に多く用いられているサンプリング周波数は44,100Hz、48,000Hz, 96,000Hzです。

チャンネル

調べた感じだと、1ch毎にスピーカの数に対応しているようです。例えば2chなら左と右に一つずつ、6chなら贅沢に頭の周りに6つスピーカに囲まれて臨場感を味わえるということですねー。ただ、サラウンドは3ch以上を表しており、5.1chとか7.2.2chとかいう表記されます。ドットセパレータで表し、左からスピーカ数、ウーハ数、上からのスピーカ数だそうです。