14.4.1 オフライン音源分離

はじめにオフライン音源分離のサンプルを紹介する. 入力音声が,ファイルであるため,マルチチャンネル AD/DA を持っていない 場合でも,音源分離処理を実行しながら確認できる.

Separation ディレクトリに含む demoOfflineKinect.sh を実行する. 図 14.12 実行例を示す.

> demoOfflineKinect.sh
 UINodeRepository::Scan()
 Scanning def /usr/lib/flowdesigner/toolbox
 done loading def files
 loading XML document from memory
 done!
   ... skipped ...
Figure 14.13: demoOfflineKinect.sh の実行例.

実行後,音源分離され,分離音声が生成される.

うまく実行できないときは,次の項目をチェックをする.

  1. ../config ディレクトリに kinect_loc.dat,kinect_sep.tff ファイルが あるかチェックする.Kinect のインパルス応答ファイルである.このファイル がなければ,サンプルは失敗する.

  2. ../data ディレクトリに kinect_20words.wav ファイルがあるかチェック する.このファイルは,-45,0 度方向からの二話者同時発話を Kinect により 録音した音声ファイルである.このファイルがなければ,音源分離の入力がない ことになり,サンプルは失敗する.

本サンプルに含まれるモジュールは,12 個である. MAIN (subnet) に 3 個 MAIN_LOOP (iterator) に 9 個のモジュールがある. MAIN (subnet) には,Constant  モジュールと InputStream , と MAIN_LOOP (iterator) がある. MAIN_LOOP (iterator) は, 図 14.13 に示す ネットワークとなっている. AudioStreamFromWave モジュールでファイルから読み出した音声波形を MultiFFT で周波数領域に変換し,LocalizeMUSIC ,SourceTracker , SourceIntervalExtender ,DisplayLocalization モジュールが音源定位 を行う.定位結果と波形から,GHDSS モジュールで音源分離を行いし, Synthesize で時間領域の音声波形に変換し,SaveWavePCM で音声波形を保存 している.

\includegraphics[width=0.8\textwidth ]{fig/recipes/LearningHARK-separation-ghdss.png}
Figure 14.14: Sound source separation without HRLE

サンプルの中で重要なパラメータは,TF_CONJ_FILENAME である. マイクアレイ(このサンプルの場合は Kinect )のインパルス応答から harktool3 で作成したファイルを使用する.