Overview¶
HARKTOOL5-GUIはウェブブラウザベースで音源定位用・音源分離用の伝達関数を生成・可視化するGUIツールである。
HARKTOOL5-GUIによって次のことが可能になる。
- マイクアレイ座標ファイルの作成、編集、可視化
- 音源座標ファイルの作成、編集、可視化
- 伝達関数の生成、可視化
最初の一歩¶
依存するソフトウェア¶
HARKTOOL5-GUIは以下のソフトウェアに依存している。 HARKTOOL5-GUIをインストールする前にこれらをインストールする必要がある。
- node.js(アプリケーションサーバとして)
- Windowsユーザ: https://nodejs.org/en/download/releases/ からv6.xをダウンロードする。
- Ubuntuユーザ: https://github.com/nodesource/distributions からv6.xをインストールする。
- Google Chrome
- HARKTOOL5 (CUI)
インストール¶
Linuxユーザ¶
- HARKのリポジトリを追加する。詳しくは https://www.hark.jp/install/linux/ を参照。
- HARKTOOL5-GUIをインストールする。
sudo apt install harktool5-gui
を実行。
Windowsユーザ¶
- https://www.hark.jp/install/windows/ に従って Hark for Windows と依存ソフトウェアをインストールする。
- https://www.hark.jp/downloads/harktool5-gui_2.4.0.zip からHARKTOOL5-GUIをダウンロードする。
- 適当なディレクトリ(例:
C:\ProgramData\HARK\harktool5-gui
)に展開する。
ステップ 1: HARKTOOL5-GUI を開く¶
Linuxユーザ¶
ターミナル上で harktool5_gui
を実行する。直後にChrome ブラウザが開く。
Windowsユーザ¶
- コマンドプロンプトを開き、HARKTOOL5-GUIを展開したディレクトリへ移動する。
例cd C:\ProgramData\HARK\harktool5-gui
- 初回のみ: npmモジュールをインストールする。
npm install --production
- HARKTOOL5-GUIを起動する。
node app.js
- Chromeを起動し、 http://127.0.0.1:3001 にアクセスする。
ステップ 2: マイクアレイ座標ファイルを作成する¶
旧マイクロホン位置情報ファイルを使用したいときは、 マイクロホン位置情報ファイルの移行 を参照。
- “Microphone array positions” > “Create” をクリックする。
- 座標モデルを選択する。
- パラメータを入力する。距離の単位はメートル。
Generalパラメータ¶
- Position Type
- “microphone”固定
- Output File
- 出力するファイル名
- 画面下の”Create”ボタンをクリックすると、マイクアレイ座標ファイルが作成され、3Dグラフが右側に表示される。
- “Go back to the top page”のリンクまたは、画面上の”HARKTOOL5”タイトルをクリックし、トップ画面へ戻る。
- 作成したマイクアレイ座標ファイルは”Microphone array positions” > “Download” をクリックするとダウンロードできる。
ステップ 3: 音源座標ファイルを作成する¶
旧TSP応答リストファイルを使用したいときは、 TSP応答リストファイルの移行 を参照。
また、旧インパルス応答リストファイルを使用したいときは、 インパルス応答リストファイルの移行 を参照。
- “Sound source positions” > “Create” をクリックする。
- 座標モデルを選択する。
- パラメータを入力する。
Generalパラメータ¶
- Position Type
- 録音したTSPを使う場合”tsp”、インパルス応答(wav形式)を使う場合、”impulse”を選択する
- Wav File Path
録音したTSPファイルまたは、インパルス応答(wav形式)の格納場所。 “{}”で囲まれた部分はテンプレートで、それぞれ指定した項目の値が指定したフォーマットで置換される
RADIUS ( 単位 m ) ELEVATION ( 単位 deg ) AZIMUTH ( 単位 deg ) X_AXIS ( 単位 mm ) Y_AXIS ( 単位 mm ) Z_AXIS ( 単位 mm ) HEIGHT ( 単位 mm ) - Output File
- 出力するファイル名
- Use Channels
- 使用するマイクチャンネルをカンマ区切りで列挙。空欄で全チャンネルを使用
Neighborsパラメータ¶
- Algorithm
- アルゴリズム種別。”NearestNeighbor”固定
- Maximum Number
- Positionそれぞれが保持できるNeighborの最大数
- Threshold
- 近傍判定のための閾値(単位 m)
- 画面下の”Create”ボタンをクリックすると、音源座標ファイルが作成され、3Dグラフが右側に表示される。
- “Go back to the top page”のリンクまたは、画面上の”HARKTOOL5”タイトルをクリックし、トップ画面へ戻る。
- 作成した音源座標ファイルは”Sound source positions” > “Download” をクリックするとダウンロードできる。
ステップ 4: 伝達関数ファイルを作成する¶
マイクアレイ座標ファイル、音源座標ファイルが揃うと、伝達関数を作成することができる。
- “Transfer function” > “Create” をクリックする。
- Configを必要に応じて入力する。
- Sync. Add Num
- TSP信号の録音時にTSP信号を連続再生した回数
- Original TSP Path
- 録音に使用したTSP 信号、1周期分のファイル名
- TSP Offset
- 録音したファイルを伝達関数計算に用いる先頭位置(単位 サンプル 0始まり)
- Peak Search From
- 伝達関数計算時にピークを探索する開始位置(単位 サンプル 1始まり)
- Peak Search To
- 伝達関数計算時にピークを探索する終了位置(単位 サンプル 1始まり)
注釈
Peak Searchに0を指定した場合、全サンプルがピークを探索の範囲となる。
探索したピーク位置を直接音とみなす。インパルス応答の直接音よりも反射音が大きい場合など、反射音を無視したい場合にPeak Searchの範囲を使う。
- FFT Length
- 伝達関数を離散周波数表現するときのビン数
- Sampling Rate
- 伝達関数のサンプリング周波数
- Signal Max
- 最大振幅値とする数値
- TSP Length
- 録音したTSP信号1個分のサンプル数
以下の図に、典型的なTSP収録(TSPを17回連続再生したものを、wiosで同期録音)ファイルの波形とConfigパラメータの対応を示す。
- Transfer Function Parametersを必要に応じて入力する。
- Output File Name (zip)
- 出力する伝達関数ファイル名
- TF Calculation Type
- 伝達関数を計算する方法 (ステップ3で選択された Position Type によって、表示されないオプションがある。)
- Use Impulse Response Files: インパルス応答ファイルから伝達関数を計算
- Use TSP Record Files: TSP収録ファイルから伝達関数を計算
- Use Mouth TSP Record Files: TSP収録ファイルから 複素回帰モデルを用いた伝達関数推定 で伝達関数を計算(HARKTOOL5新機能)
- Use Geometric Calculation: 幾何計算により伝達関数を計算
- TF Type
- 伝達関数ファイルに定位用・分離用のどれを含むか
- Direct Sound Length
- 直接音とみなすサンプル数
- Reverb Sound Length
- 反響音とみなすサンプル数
- Normalize SRC axis
- 伝達関数の音源軸の正規化有無
- Normalize MIC axis
- 伝達関数のマイクチャンネル軸の正規化有無
- Normalize FREQ axis
- 伝達関数の周波数軸の正規化有無
- Reset Mic Channels
- 音源座標ファイルのUse Channelsで使用するマイクチャンネルを選抜した場合、伝達関数のマイクチャンネルを0始まりの連番にリセットするかしないか。
注釈
リセットする場合、HARKTOOL4と互換の伝達関数となる。
- 画面下の”Create”ボタンをクリックすると、伝達関数ファイルが作成される。
- “Go back to the top page”のリンクまたは、画面上の”HARKTOOL5”タイトルをクリックし、トップ画面へ戻る。
- 作成した伝達関数ファイルは “Transfer function” > “Visualize” をクリックすると3Dグラフで確認できる。
- TF type
- 表示対象の伝達関数を選択
- Domain
- グラフのX軸(周波数/時間)を選択
- Z Axis
Z軸の種類を選択(周波数ドメインの時のみ)
- Amplitude: 振幅スペクトルを表示
- Amplitude in dB: 振幅スペクトルをデシベルで表示
- Phase: 位相スペクトルを表示
- 作成した伝達関数ファイルは “Transfer function” > “Download” をクリックするとダウンロードできる。
複素回帰モデルを用いた伝達関数推定¶
この手法は、複素回帰モデルを用いて、収録信号から伝達関数を推定する。 従来のアルゴリズムに対して次の特徴がある。
- 信号の再録のタイミングがズレていても伝達関数の計算が可能である
- TSP音ではなく、任意の信号を用いて伝達関数の推定が可能である。例えば、人の声からも伝達関数が計算できる
- あるマイクチャンネルを基準とした相対伝達関数が得られる
- 出力信号に含まれる周波数に対してのみ伝達関数が推定される
複素回帰モデルを用いた伝達関数推定では、ステップ 4: 伝達関数ファイルを作成する で TF Type に Use Mouth TSP Record Files を選択する。 以下のパラメータが追加されるため、必要に応じて入力する。
- Mouth TSP Start
- 録音したファイルを伝達関数計算に用いる先頭位置(単位 サンプル 0始まり)。Config > TSP Offset と同じ意味で、そちらを変更する。
- Mouth TSP End
- 録音したファイルを伝達関数計算に用いる終了位置(単位 サンプル 0始まり)
- Mouth TSP mch
- 基準とするマイクチャンネル
- Mouth TSP hop
- 伝達関数計算時のシフト長(単位 サンプル)
- Mouth TSP Head Margin
- インパルス応答の先頭位置のマージン(単位 サンプル)。mchより直接音が早く到達するマイクチャンネルがある場合は、それに合わせてマージンを設定する。 通常のケースでは、128(=FFT Length / 4)程度のマージンを取っておくといい。
アルゴリズム¶
入力信号S、インパルス応答H、出力信号Xは周波数領域で以下の式で表される。
異なる時間フレーム \(t = 1 \cdots N\) に対して、同じ音場であるため、以下の行列式で表される。
HARKTOOL4からの移行¶
- Python2.7以降をインストールする。
- https://www.hark.jp/downloads/harktool5migrationtool.zip から移行ツールをダウンロードする。
- 作業ディレクトリに展開する。
マイクロホン位置情報ファイルの移行¶
python conv4mic.py <HARKTOOL4マイクロホン位置情報ファイル> <出力ファイル>
を実行する。
例)python conv4mic.py miclist.xml microphones.xml
- 出力されたファイルはHARKTOOL5-GUIの “Microphone array positions” > “Upload” からロードできる。
TSP応答リストファイルの移行¶
python conv4src.py <HARKTOOL4TSP応答リストファイル> <出力ファイル>
を実行する。
例)python conv4src.py tsplist.xml source.xml
- 出力されたファイルはHARKTOOL5-GUIの “Sound source positions” > “Upload” からロードできる。
インパルス応答リストファイルの移行¶
python conv4src.py <HARKTOOL4インパルス応答リストファイル> <出力ファイル>
を実行する。
例)python conv4src.py implist.xml source.xml
- 出力されたファイルはHARKTOOL5-GUIの “Sound source positions” > “Upload” からロードできる。
flt2multiwav.txt
ファイルも出力されるので、中に記載されているコマンドを実行すると、fltファイルがwavファイルに変換される。