音源分離した音の先頭が切れてしまう

Problem

に読む.

Solution

以下のように調節する.

  1. 分離音をファイルに保存したいを参考に, 分離結果を保存できるネットワークファイルを作成する.この際,LocalizeMUSIC モジュールなどの定位モジュール 分離モジュール GHDSS の間に SourceTracker と SourceIntervalExtender モジュールをはさむ.

  2. 音を分離して,その結果を表示する or 聞く

  3. 分離音の先頭部分が途切れている: PREROLL_LENGTH プロパティの値を上げる

  4. 分離音の先頭の無音区間が長い: PREROLL_LENGTH プロパティの値を下げる

Discussion

SourceIntervalExtender モジュールの役割は,音源定位が報告された時点で既に発話開始から 500 (msec) ほど時間が経過しているので, 分離音の先頭部分を失ってしまい,音声認識に失敗するという問題を解消することである. 音源定位の開始時点からどれだけ遡って分離するかを指定するために PREROLL_LENGTH の値を決定する.

PREROLL_LENGTH の値を減らしすぎると,分離音の先頭部分が切れて音声認識に悪影響を及ぼすが, PREROLL_LENGTH の値を増やしすぎると,一つ前の発話と繋がってしまい,音声認識で使用する言語モデルによっては, 誤認識に繋がることがある.

PREROLL_LENGTH の単位

この値の単位は短時間フーリエ変換したときの $1$ 時間フレーム分に相当する. そのため,実際の時間 (秒やミリ秒) との対応関係は, AudioStreamFromMic や AudioStreamFromWave モジュールで指定される サンプリング周波数 (SAMPLING_RATE),FFTのステップ幅 (ADVANCE) に依存する. すべてデフォルト (サンプリング周波数:16000 Hz,ステップ幅:160 pt) の場合,PREROLL_LENGTH の値を $1$ 変えることは,10 (msec) 変更することに対応する.

See Also