音声認識の前に、音声をどうやってデータにするかが出てくる。A-D変換・PCM・FFT・MFCCと用語が多い
【疑問】音声をデータにする、A-D変換・PCM・FFT・スペクトル包絡・フォルマント・メル尺度・MFCC【G検定】
前提のおさらい。微分は「少し変えたらどれだけ変わるか」。音は空気の圧力が時間とともに変わる波で、その変わり方の速さ(周波数)が音の高さを決める
>>1
A-D変換は、マイクの連続した電気の波を、コンピュータが扱えるとびとびの数字にすること
標本化:一定の時間ごとに値を読む。1秒に16000回なら16kHz
量子化:読んだ値を決まった段階の数に丸める。16ビットなら 段階
こうして数字の列にしたものをPCM(パルス符号変調)という。16kHz・16ビットなら、1秒あたり ビット
>>3
16kHzで読んだら、何Hzまでの音が表せるん?
>>4
読む回数の半分、8000Hzまで。それより高い音は、正しく表せずに別の低い音に化ける
人の声の聞き分けに大事な成分はおおむねその範囲に入るから、音声認識では16kHzがよく使われる
数字の列のままやと、どんな高さの音がどれだけ入ってるかが分からん。そこで周波数ごとの強さに分ける(フーリエ変換)
FFT(高速フーリエ変換)は、それを速く計算する方法。1024個の点なら、そのままの計算は約 万回、FFTは約 回で、約100倍速い
>>6
周波数ごとの強さのグラフ(スペクトル)を、細かいギザギザを無視してなめらかになぞった線がスペクトル包絡。のどや口の形で決まる
スペクトル包絡の山の部分がフォルマント。周波数の低いほうから第1・第2フォルマントと呼ぶ。「あ」と「い」の違いは、主にこの山の位置の違い
>>7
メル尺度は?
>>8
人の耳が感じる音の高さに合わせた目盛り。人は低い音の違いには敏感で、高い音の違いには鈍い
よく使われる式 だと、1000Hz は約1000、4000Hz は約2146、8000Hz は約2840。周波数が4倍になっても、メルは2倍ちょっとにしかならん
>>9
MFCC(メル周波数ケプストラム係数)は、スペクトルをメル尺度で区切って強さの対数をとり、そこからスペクトル包絡の形を十数個の数で表したもの。音声認識の入力として長く使われてきた
>>10
今のディープラーニングのモデルは、MFCCまで縮めずに、メル尺度のスペクトルをそのまま入れることも多い。どこまで人が手で加工するかは、モデルとデータの量で変わる
音素は、その言語で語の意味を区別する一番小さい音の単位。「かさ」と「かた」は /s/ と /t/ の1つで意味が変わる
音韻は、そうした音の区別の体系のこと。日本語では英語の l と r を区別しないように、言語ごとに違う
管理人のひとこと
- A-D変換は標本化(16kHzなら1秒に16000回)と量子化(16ビットなら65536段階)。数字の列にしたものがPCMで、16kHz・16ビットなら256kビット毎秒。表せるのは読む回数の半分(8000Hz)まで。
- FFTはフーリエ変換を速く計算する。1024点で約105万回が10240回になり約100倍速い。
- スペクトル包絡はスペクトルをなめらかになぞった線、その山がフォルマントで母音の違いを表す。メル尺度は耳の感じ方の目盛り(1000Hz→約1000、8000Hz→約2840)。MFCCはメル尺度で包絡の形を十数個の数で表す。
- 音素は意味を区別する最小の音の単位、音韻はその区別の体系で言語ごとに違う。