Overview

HARKTOOL5-GUIはウェブブラウザベースで音源定位用・音源分離用の伝達関数を生成・可視化するGUIツールである。

HARKTOOL5-GUIによって次のことが可能になる。

最初の一歩

依存するソフトウェア

HARKTOOL5-GUIは以下のソフトウェアに依存している。 HARKTOOL5-GUIをインストールする前にこれらをインストールする必要がある。

インストール

Linuxユーザ

  1. HARKのリポジトリを追加する。詳しくは https://www.hark.jp/install/linux/ を参照。
  2. HARKTOOL5-GUIをインストールする。 sudo apt install harktool5-gui を実行。

Windowsユーザ

  1. https://www.hark.jp/install/windows/ に従って Hark for Windows と依存ソフトウェアをインストールする。
  2. https://www.hark.jp/downloads/harktool5-gui_2.4.0.zip からHARKTOOL5-GUIをダウンロードする。
  3. 適当なディレクトリ(例: C:\ProgramData\HARK\harktool5-gui)に展開する。

ステップ 1: HARKTOOL5-GUI を開く

Linuxユーザ

ターミナル上で harktool5_gui を実行する。直後にChrome ブラウザが開く。

Windowsユーザ

  1. コマンドプロンプトを開き、HARKTOOL5-GUIを展開したディレクトリへ移動する。
cd C:\ProgramData\HARK\harktool5-gui
  1. 初回のみ: npmモジュールをインストールする。
npm install --production
  1. HARKTOOL5-GUIを起動する。
node app.js
  1. Chromeを起動し、 http://127.0.0.1:3001 にアクセスする。
Screen shot

ステップ 1: 初期画面

ステップ 2: マイクアレイ座標ファイルを作成する

旧マイクロホン位置情報ファイルを使用したいときは、 マイクロホン位置情報ファイルの移行 を参照。

  1. “Microphone array positions” > “Create” をクリックする。
  2. 座標モデルを選択する。
  3. パラメータを入力する。距離の単位はメートル。

Generalパラメータ

Position Type
“microphone”固定
Output File
出力するファイル名
  1. 画面下の”Create”ボタンをクリックすると、マイクアレイ座標ファイルが作成され、3Dグラフが右側に表示される。
  2. “Go back to the top page”のリンクまたは、画面上の”HARKTOOL5”タイトルをクリックし、トップ画面へ戻る。
  3. 作成したマイクアレイ座標ファイルは”Microphone array positions” > “Download” をクリックするとダウンロードできる。
Screen shot

ステップ 2: マイクアレイ座標ファイル作成後

ステップ 3: 音源座標ファイルを作成する

旧TSP応答リストファイルを使用したいときは、 TSP応答リストファイルの移行 を参照。

また、旧インパルス応答リストファイルを使用したいときは、 インパルス応答リストファイルの移行 を参照。

  1. “Sound source positions” > “Create” をクリックする。
  2. 座標モデルを選択する。
  3. パラメータを入力する。

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)
  1. 画面下の”Create”ボタンをクリックすると、音源座標ファイルが作成され、3Dグラフが右側に表示される。
  2. “Go back to the top page”のリンクまたは、画面上の”HARKTOOL5”タイトルをクリックし、トップ画面へ戻る。
  3. 作成した音源座標ファイルは”Sound source positions” > “Download” をクリックするとダウンロードできる。
Screen shot

ステップ 3: 音源座標ファイル作成後

ステップ 4: 伝達関数ファイルを作成する

マイクアレイ座標ファイル、音源座標ファイルが揃うと、伝達関数を作成することができる。

  1. “Transfer function” > “Create” をクリックする。
  2. 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パラメータの対応を示す。

Screen shot
  1. 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と互換の伝達関数となる。

  1. 画面下の”Create”ボタンをクリックすると、伝達関数ファイルが作成される。
  2. “Go back to the top page”のリンクまたは、画面上の”HARKTOOL5”タイトルをクリックし、トップ画面へ戻る。
Screen shot

ステップ 4: 伝達関数ファイル作成後

  1. 作成した伝達関数ファイルは “Transfer function” > “Visualize” をクリックすると3Dグラフで確認できる。
TF type
表示対象の伝達関数を選択
Domain
グラフのX軸(周波数/時間)を選択
Z Axis

Z軸の種類を選択(周波数ドメインの時のみ)

  • Amplitude: 振幅スペクトルを表示
  • Amplitude in dB: 振幅スペクトルをデシベルで表示
  • Phase: 位相スペクトルを表示
Screen shot

伝達関数表示

  1. 作成した伝達関数ファイルは “Transfer function” > “Download” をクリックするとダウンロードできる。

複素回帰モデルを用いた伝達関数推定

この手法は、複素回帰モデルを用いて、収録信号から伝達関数を推定する。 従来のアルゴリズムに対して次の特徴がある。

複素回帰モデルを用いた伝達関数推定では、ステップ 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)程度のマージンを取っておくといい。
Screen shot

複素回帰モデルを用いた伝達関数推定 パラメータ

アルゴリズム

入力信号S、インパルス応答H、出力信号Xは周波数領域で以下の式で表される。

\[X = H \cdot S\]

異なる時間フレーム \(t = 1 \cdots N\) に対して、同じ音場であるため、以下の行列式で表される。

\[\begin{split}\left[ \begin{array}{c} X_{1} \\ X_{2} \\ \vdots \\ X_{N}\\ \end{array} \right] &= H \cdot \left[ \begin{array}{c} S_{1} \\ S_{2} \\ \vdots \\ S_{N}\\ \end{array} \right] \\ \boldsymbol{X} &= H \cdot \boldsymbol{S} \\ H &= \boldsymbol{S}^+ \cdot \boldsymbol{X}\end{split}\]

HARKTOOL4からの移行

  1. Python2.7以降をインストールする。
  2. https://www.hark.jp/downloads/harktool5migrationtool.zip から移行ツールをダウンロードする。
  3. 作業ディレクトリに展開する。

マイクロホン位置情報ファイルの移行

  1. python conv4mic.py <HARKTOOL4マイクロホン位置情報ファイル> <出力ファイル> を実行する。
例) python conv4mic.py miclist.xml microphones.xml
  1. 出力されたファイルはHARKTOOL5-GUIの “Microphone array positions” > “Upload” からロードできる。

TSP応答リストファイルの移行

  1. python conv4src.py <HARKTOOL4TSP応答リストファイル> <出力ファイル> を実行する。
例) python conv4src.py tsplist.xml source.xml
  1. 出力されたファイルはHARKTOOL5-GUIの “Sound source positions” > “Upload” からロードできる。

インパルス応答リストファイルの移行

  1. python conv4src.py <HARKTOOL4インパルス応答リストファイル> <出力ファイル> を実行する。
例) python conv4src.py implist.xml source.xml
  1. 出力されたファイルはHARKTOOL5-GUIの “Sound source positions” > “Upload” からロードできる。
  2. flt2multiwav.txt ファイルも出力されるので、中に記載されているコマンドを実行すると、fltファイルがwavファイルに変換される。