はじめに
機会学習を行う際には、それがテキストであっても画像であっても音声であっても前処理を行うことが欠かせません。今回は音声の前処理についてまとめました。
音声の下処理
1. フレームとフレームサイズ
まずは音声波形を短い区間に分けていく。この取り出された時間のことをフレームと呼び、フレームの長さ(時間のことを)フレーム長やフレームサイズ(以下、フレームサイズとする)、次のフレームまでの間隔のことをフレームシフト、フレーム間隔(同、フレームシフト)と呼びます。音声認識ではフレームサイズは25msほどにすることが多い。音素を捉えるにはこのくらいのフレームサイズが良いためである。フレームサイズを小さくするほど、フーリエ変換の処理の高速が行うことができる。また、フレームシフトを設けるのは、フレームの間の繋がりの情報を保つためである。
2. 窓掛け
このように、フレームごとに分割した音声データに対してフーリエ変換を行なっていくわけですが、フーリエ変換は1周期分のデータに対して計算する理論であるため、そのまま計算を行うとフレームに含まれる信号が1周期でない分、誤差が生じる。しかし、フレームに含まれる音声データが1周期分になるよう分割することは困難である。そこで、窓関数というものを信号にかけることでこの問題を緩和する。窓関数にはいくつかの種類がありますが、代表的なハミング窓は以下の式で表される。
\[ f(x) = 0.54-0.46cos\left(\dfrac{2\pi n}{N}\right) (0≤n<N) \]
これを掛け合わせると次のようになり、不連続部分が目立たなくなる。
3. スペクトログラム
窓掛けを行った後、フーリエ変換したものをスペクトルという。複数フレームのスペクトルを重ね1つの図にしたものをスペクトログラムという。
また、フーリエ変換の絶対値を取ったある周波数成分の大きさを表すものを振幅スペクトル、振幅スペクトルの結果を二乗したある周波数のおける信号強度を表すのもをパワースペクトルという。
4. プリエンファシス(高音強調)
周波数が高い信号ほど減衰しやすいため、減衰した部分を補うプリエンファシスが行われる。 以下のフィルタを信号に畳み込みを行うことで計算される。
\[ h(\tau) = \begin{cases} 1&(\tau=0)\\ -\alpha&(\tau=1)\\ 0&(\tau>1) \end{cases} \]
\(\alpha\)の値は、0.97ほどが利用される事が多い。
5. ケプストラム、スペクトル微細構造、スペクトル包絡
ケプストラムは波形の対数振幅スペクトルの iFFT(逆フーリエ変換)として定義されものである。さらにこれの高周波成分のみをフーリエ変換したものをスペクトル微細構造、低次元成分のみをフーリエ変換したものをスペクトル包絡と呼ぶ。 スペクトル微細構造は、音声の内容を表しており、スペクトル包絡は、男性、女性などを識別する際に利用される。
6. フィルタバンク
特定の範囲のみの周波数を通すバンドパスフィルタを複数利用し、次元を落としたものをフィルタバンクと呼ぶ。三角形の バンドパスフィルタの数をチャネル数と呼び,このチャネル数だけの次元が得られる。特定のポイントについてそのまま取り出さず、三角窓を用いる理由として、周辺のスペクトルの情報をある程度加味できるため、その周波数ビンが外れ値であってもそれを抑える働きがある。
7. メル尺度とMFCC
メル尺度は心理学者のStanley Smith Stevensらによって提案された、人間の音高知覚が考慮された尺度である。1000Hzの高さの感覚を1000メル(mel)と決めた上で、1000メルの半分の高さに感じた音を500メル、1000メルの2倍の高さに感じた音を2000メルという容量で定めている。一般に周波数fとメル尺度mの関係は次の式で表される。
\[m=m_{0}\ln\left(\frac{f}{f_{0}}+1\right)\] \[f=f_{0}\left(\exp{\frac{m}{m_{0}}}-1\right)\] \(f_{0}\),\(m_{0}\)は、\(f=m=1000\)である時のパラメーターである。
振幅スペクトルに対してm次元のメルフィルタバンク(メル尺度を考慮したいフィルタバンク)、離散フーリエ変換をかけた後、低周波数成分を取り出したものをMFCC(Mel-frequency cepstrum coeffient)と呼ぶ。離散フーリエ変換を行うことは、逆フーリエ変換と同様、周波数と時間の世界を変換している。