6.4.3 MelFilterBank

6.4.3.1 ノードの概要

入力スペクトルにメルフィルタバンク処理を行ない,各フィルタチャネルの エネルギーを出力する. 入力スペクトルは,2 種類あり,入力によって出力結果が異なる点に留意.

6.4.3.2 必要なファイル

無し.

6.4.3.3 使用方法

どんなときに使うのか

音響特徴量を求める前処理として使用する. MultiFFT ,PowerCalcForMap ,PreEmphasis の直後に使用する. MFCCExtraction ,MSLSExtraction の前段で使用する.

典型的な接続例

\includegraphics[width=100mm]{fig/modules/MelFilterBank}
Figure 6.79: MelFilterBank の接続例

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

Table 6.73: MelFilterBank のパラメータ表

パラメータ名

デフォルト値

単位

説明

LENGTH

int 

512

[pt]

分析フレーム長

SAMPLING_RATE

int 

16000

[Hz]

サンプリング周波数

CUT_OFF

int 

8000

[Hz]

ローパスフィルタのカットオフ周波数

MIN_FREQUENCY

int 

63

[Hz]

フィルタバンクの下限周波数

MAX_FREQUENCY

int 

8000

[Hz]

フィルタバンクの上限周波数

FBANK_COUNT

int 

13

 

フィルタバンク数

入力

INPUT

: Map<int, ObjectRef> 型.音源 ID とパワースペクトル Vector<float> 型または, 複素スペクトル
Vector<complex<float> > 型のデータのペア. ただし,パワースペクトルを選択した場合,複素スペクトルを選択した場合と 比較して出力エネルギーが2倍になる.

出力

OUTPUT

: Map<int, ObjectRef> 型.音源 ID とフィルタバンクの出力エネルギーから構成される ベクトルの Vector<float> 型のデータのペア.出力ベクトルの次元数は,FBANK_COUNT の2倍である. 0 から FBANK_COUNT-1 までに,フィルタバンクの出力エネルギーが入り,FBANK_COUNT から 2 *FBANK_COUNT-1 までには,0 が入る.0 が入れられる部分は,動的特徴量用のプレースホルダーである.動的特徴量が不要な場合は FeatureRemover を用いて削除する必要がある.

パラメータ

LENGTH

: int 型.分析フレーム長である.入力スペクトルの周波数ビン数に等しい.値域は正の整数である.

SAMPLING_RATE

: int 型.サンプリング周波数である.値域は正の整数である.

CUT_OFF

: int 型.離散フーリエ変換時のアンチエーリアシングフィルタのカットオフ周波数.SAMPLING_RATE の1/2以下である.

MIN_FREQUENCY

: int 型.フィルタバンクの下限周波数.値域は正の整数でかつ CUT_OFF 以下.

MAX_FREQUENCY

: int 型.フィルタバンクの上限周波数.値域は正の整数でかつ CUT_OFF 以下.

FBANK_COUNT

: int 型.フィルタバンク数である.値域は正の整数である.

6.4.3.5 ノードの詳細

メルフィルタバンク処理を行ない,各チャネルのエネルギーを出力する. 各バンクの中心周波数は,メルスケール $^{(1)}$ 上で等間隔に配置する. チャネル毎の中心周波数は,最小周波数ビン $\hbox{SAMPLING\_ RATE}/\hbox{LENGTH}$ から $\hbox{SAMPLING\_ RATE} \hbox{CUT\_ OFF} / \hbox{LENGTH}$ までを FBANK_COUNT 分割し決定する.

リニアスケールとメルスケールの変換式は,

  $\displaystyle m $ $\displaystyle = $ $\displaystyle 1127.01048 \log ( 1.0 + \frac{\lambda }{700.0} ) $   (134)

である.ただし, リニアスケール上での表現を \lambda (Hz),メルスケール上での表現を $m$ とする.図 6.80 に 8000 Hz までの変換例を示す.赤点は, SAMPLING_RATE が 16000 Hz,CUT_OFF が 8000 Hz, かつ FBANK_COUNT が 13 の場合の,各バンクの中心周波数を表す.各バンクの中心周波数が,メルスケール上で等間隔なことを確認できる.

\includegraphics[width=80mm]{fig/modules/MelFilterBank-melfreq.eps}
Figure 6.80: リニアスケールとメルスケールの対応

6.81 にメルスケール上の 各フィルタバンクの窓関数を示す.中心周波数部分で 1.0 となり, 隣接チャネルの中心周波数部分で 0.0 となる三角窓である. 中心周波数がチャネル毎にメルスケール上で等間隔で, 対象な形状である.これらの窓関数は,リニアスケール上では 図 6.82 のように表現される.高域のチャネルでは, 広い帯域をカバーしている.

\includegraphics[width=80mm]{fig/modules/MelFilterBank-melWeight.eps}
Figure 6.81: メルスケール上での窓関数
\includegraphics[width=80mm]{fig/modules/MelFilterBank-linWeight.eps}
Figure 6.82: リニアスケール上での窓関数

入力するリニアスケール上で表現されたパワースペクトルに 図 6.82 に示す窓関数で重み付けし, 各チャネル毎にエネルギーを求め,出力する.

6.4.3.6 参考文献:

(1) Stanley Smith Stevens, John Volkman, Edwin Newman: “A Scale for the Measurement of the Psychological Magnitude Pitch”, Journal of the Acoustical Society of America 8(3), pp.185–190, 1937.