オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【音声解析】短時間フーリエ分析 #アルゴリズム編

Index

短時間フーリエ分析

音声解析における特徴量抽出のひとつ.

音声フレームに対して、スペクトル解析を行う.

より具体的には、各音声フレームの信号は定常であると仮定し、 それに対して高域強調を施した時系列信号に対して、フーリエ解析を行い、周波数成分を求める.

このような、信号に対し、窓関数をずらしながらかけて行うフーリエ解析のことを特に、短時間フーリエ解析 (Short-Time Fourier Transform)と呼ぶ.

単純にすべての音声データをフーリエ変換を行うと周波数軸の情報になってしまい、時系列的な情報がなくなってしまう.

そのためフレームごとに分割し、フレームを一つの時刻に対する情報として扱う.

フーリエ変換

目的

自然界の音は、複数の周波数の音が組み合わさってできている.

この組み合わさり方の違いが、音の違いとして現れる.

人間の体は、得た振動を周波数ごとに分解し、それぞれの振動の強さを神経に伝えることで音の違いを知覚している.

そのため、音声解析においても音の波形を周波数に分解する.

時間信号を周波数ごとの信号に分解する手段として、フーリエ変換がある.

フーリエ変換が利用できる理由

この目的を達成するための手段として、フーリエ変換が利用できる理由として、 フーリエ変換は「あらゆる周期的な信号は、周波数の異なる三角関数の組み合わせで表現できる」という定理 (フーリエの定理) に基づいているから.

フーリエ変換の種類

  • 連続値の時間信号を連続値の周波数軸に分解する連続フーリエ変換
  • 離散値の時間信号を連続値の周波数軸に分解する離散時間フーリエ変換
  • 離散値の時間信号を離散値の周波数軸に分解する連続フーリエ変換

解析では、離散値を扱うため、離散フーリエ変換が利用される.

離散フーリエ変換

 x_{N}\ (n) が周期  N (離散的なので、区間内のサンプル数に相当) の周期的信号であるとする.

 x_{N}\ (n)\ =\ x_{N}\ (n\ +\ N)





離散フーリエ変換 (Discrete Fourier Transform / DFT)

このとき、 x_{N}\ (n)離散フーリエ変換 (Discrete Fourier Transform / DFT)  X_{N}(k) が存在し、 以下の関係式で表される.

 X_{N}\ (k)\ =\ \displaystyle \sum_{n=0}^{N-1}\ x_{N}\ (n)\ e^{-\ j\ \displaystyle \frac{2 \pi nk}{N}},\ 0\ \leq\ k\ <\ N


 j は、虚数単位.



 X は (複素) スペクトル (Complex Spectrum) と呼ばれ、 x を周波数成分に分解した結果.

正確には、 k は 1 秒を 1 周期ちみなす周波数 [Hz] ではなく、 0\ ~\ N-1 の範囲を 1 周期とみなしたときの周波数を意味する.

例えば、 X(k=1) は、 0\ ~\ N-1 の範囲でちょうど 1 周する波の成分で、  X(k=2) は 2 周する、つまり、 X(k=1) の 2 倍の周波数を持つ波の成分 (第  k 高周波と呼ぶ) ということになる.

 Xは、複素数であり、振幅と位相の両方の情報をもっている.

逆離散フーリエ変換 (Inverse Discrete Fourier Transform / IDFT)

スペクトルから時間信号に戻す処理は、逆離散フーリエ変換 (Inverse Discrete Fourier Transform / IDFT)と呼ばれる.

逆離散フーリエ変換 (Inverse Discrete Fourier Transform / IDFT)

また、 X_{N}\ (k) から  x_{N}\ (n) を求める逆離散フーリエ変換 (Inverse Discrete Fourier Transform / IDFT) は以下の式で定義される.

 x_{N}\ (k)\ =\ \displaystyle\ \frac{1}{N}\ \displaystyle \sum_{k=0}^{N-1}\ X_{N}\ (k)\ e^{j\ \displaystyle \frac{2 \pi nk}{N}},\ 0\ \leq\ n\ <\ N



高速フーリエ変換 (Fast Fourier Transform / FFT)

実用では、計算時間を減らすために、一般に高速フーリエ変換 (Fast Fourier Transform / FFT) を用いる.

スペクトル

フーリエ変換の結果  X を (複素) スペクトル (Complex Spectrum) と呼ぶ.

それに対して、絶対値をとった  |X|振幅スペクトルと呼び、 偏角  \angle X を位相スペクトルと呼ぶ.

パワースペクトル

また、振幅スペクトルの二乗をとった  |X|^{2}パワースペクトルと呼ぶ.

パワースペクトルは、音の大きさを表す.

パワースペクトルは以下の式で表される.


\begin{eqnarray}
S_{k} &=& \displaystyle \frac{1}{N}\ |X_{N}\ (k)|^{2} \\
  &=& \displaystyle \frac{1}{N} \left|\ \displaystyle \sum_{n=0}^{N-1}\ x_{N}\ (n)\ e^{- \displaystyle \frac{j2 \pi nk}{N}}\ \right|^{2},\ 0\ \leq\ k\ <\ N
\end{eqnarray}

実装

参考

書籍