6.7.14 Synthesize

6.7.14.1 ノードの概要

周波数領域の信号を時間領域の波形に変換する.

6.7.14.2 必要なファイル

無し.

6.7.14.3 使用方法

周波数領域の信号を時間領域の波形に変換する際に用いる.

典型的な接続例

\includegraphics[width=\linewidth ]{fig/modules/Synthesize}
Figure 6.107: Synthesize の接続例

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

Table 6.84: Synthesize のパラメータ表

パラメータ名

デフォルト値

単位

説明

LENGTH

int 

512

[pt]

FFT長

ADVANCE

int 

160

[pt]

シフト長

SAMPLING_RATE

int 

16000

[Hz]

サンプリングレート

MIN_FREQUENCY

int 

125

[Hz]

最小周波数

MAX_FREQUENCY

int 

7900

[Hz]

最大周波数

WINDOW

string 

HAMMING

 

窓関数

OUTPUT_GAIN

float 

1.0

 

出力ゲイン

入力

INPUT

: Map<int, ObjectRef> 型. ObjectRef は Vector<complex<float> > .

出力

OUTPUT

: Map<int, ObjectRef> 型.ObjectRef は Vector<float> .

パラメータ

LENGTH

FFT長,他のノード( MultiFFT )と値を合わせる必要がある.

ADVANCE

シフト長,他のノード( MultiFFT )と値を合わせる必要がある.

SAMPLING_RATE

サンプリングレート,他のノードと値を合わせる必要がある.

MIN_FREQUENCY

波形生成時に用いる最小周波数値

MAX_FREQUENCY

波形生成時に用いる最大周波数値

WINDOW

窓関数,HAMMING,RECTANGLE, CONJ から選択

OUTPUT_GAIN

出力ゲイン

6.7.14.5 ノードの詳細

入力された周波数領域の信号に対して, 低域4バンド分,および,$\omega _ s/2-100$ [Hz] 以上の周波数ビンについては 0 を代入したのち逆FFTを適用する. 次に,指定された窓をかけ,overlap-add 処理を行う. overlap-add 処理は,フレーム毎に逆変換を行い,時間領域の戻した信号を ずらしながら加算することにより,窓の影響を軽減する手法である. 詳細は,参考文献で挙げているwebページを参照すること. 最後に,得られた時間波形に出力ゲインを乗じて,出力する.

なお,overlap-add 処理を行うために,フレームの先読みをする必要があり, 結果として,このノードは処理系全体に遅延をもたらす. 遅延の大きさは,下記で計算できる.

  \begin{equation} delay = \left\{ \begin{array}{@{\, }ll} \left| \mathrm{LENGTH}/\mathrm{ADVANCE} \right| - 1, & {if~ ~ } \mathrm{LENGTH} \, mod\, \mathrm{ADVANCE} \ne 0,\\ \mathrm{LENGTH}/\mathrm{ADVANCE}, & {otherwise}. \end{array} \right. \end{equation}   (151)

HARK のデフォルトの設定では,LENGTH = 512, ADVANCE = 160 であるので, 遅延は3 [frame],つまり,システム全体に与える遅延は 30 [ms] となる.

6.7.14.6 参考文献

(1) http://en.wikipedia.org/wiki/Overlap-add