6.4.6 PreEmphasis

6.4.6.1 ノードの概要

音声認識用の音響特徴量抽出の際に高域の周波数を強調する処理(プリエンファ シス)を行い,ノイズへの頑健性を高める.

6.4.6.2 必要なファイル

無し.

6.4.6.3 使用方法

一般的に,MFCC 特徴量抽出の前に用いる.また,HARK で一般的に 用いている MSLS 特徴量抽出の際にも前処理として用いることができる.

典型的な接続例

\includegraphics[width=\linewidth ]{fig/modules/Preemphasis}
Figure 6.67: PreEmphasis の接続例

6.4.6.4 ノードの入出力とプロパティ

Table 6.59: PreEmphasis のパラメータ表

パラメータ名

デフォルト値

単位

説明

LENGTH

int 

512

[pt]

信号長もしくはFFTの窓長

SAMPLING_RATE

int 

16000

[Hz]

サンプリングレート

PREEMCOEF

float 

0.97

 

プリエンファシス係数

INPUT_TYPE

string 

WAV

 

入力信号タイプ

入力

INPUT

: Map<int, ObjectRef> ,入力信号が時間領域波形の場合は,ObjectRef は,Vector<float> として扱われる.また,周波数領域の信号の場合は, Vector<complex<float> > として扱われる.

出力

OUTPUT

: Map<int, ObjectRef> ,高域強調された信号が出力される. ObjectRef は, 入力の種類に対応して, 時間領域波形では Vector<float> ,周波数領域信号では Vector<complex<float> > となる.

パラメータ

LENGTH

INPUT_TYPE が SPECTRUM の場合は FFT長であり,前段のモ ジュールと値を合わせる必要がある.INPUT_TYPE が WAV の場合は,1フレー ムに含まれる信号の信号長を表し,同様に前段のノードと値を合わせる 必要がある.通常の構成では,FFT長と信号長は一致する.

SAMPLING_RATE

LENGTH と同様,他のノードと値を合わせる必要がある.

PREEMCOEF

以下で $c_ p$ として表わされるプリエンファシス係数.音声認識では,0.97 が一般的に用いられる.

INPUT_TYPE

入力のタイプはWAV, SPECTRUM の2種類が用意されている. WAV は時間領域波形入力の際に用いる.また,SPECTRUM は周波数領域信号入力の際に 用いる.

6.4.6.5 ノードの詳細

プリエンファシスの必要性や一般的な音声認識における効果に関しては,様々 な書籍や論文で述べられているので,それらを参考にしてほしい.一般的には, この処理を行った方がノイズに頑健になると言われているが,HARK では,マイク ロホンマイクロホンアレイ処理を行っているためか,この処理の有無による性能差はそれほ ど大きくない.ただし,音声認識で用いる音響モデルを学習する際に用いた音 声データとパラメータを合わせる必要性がある.つまり,音響モデル学習で用 いたデータにプリエンファシスを行っていれば,入力データに対してもプリエ ンファシスを行った方が性能が高くなる.

具体的には PreEmphasis は,入力信号の種類に対応して,2種類の処理から なっている.

時間領域での高域強調:

時間領域の場合は,$t$ をフレーム内でのサンプルを表すインデックスとし, 入力信号を $s[t]$,高域強調した信号を $p[t]$,プリエンファシス係数 を $c_ p$ とすれば,以下の式によって表すことができる.

  \begin{equation} \label{eq:pre-time} p[t] = \left\{ \begin{array}{@{\, }ll} s[t] - c_ p \cdot s[t-1] & t > 0 \\ (1 - c_ p) \cdot s[0] & t = 0 \\ \end{array} \right. \end{equation}   (123)

周波数領域での高域強調:

時間領域のフィルタと等価なフィルタを周波数領域で実現するため, 上記のフィルタのインパルス応答に対して,周波数解析を行った スペクトルフィルタを用いている. また,低域(下から4バンド分)と高域($fs$/2 - 100 Hz 以上)は, 誤差を考慮して,強制的に 0 としている.ただし,$fs$ は,サンプリング 周波数を表す.