• 検索結果がありません。

ファイルフォーマット 38

ドキュメント内 HARK Document (ページ 44-51)

本節では,HARK で利用するファイルの種類およびその形式について述べる.従来のHARK では多様なファ イルフォーマットが使用されており、全体像の把握が困難であった。特にバイナリ形式の伝達関数ファイルは フォーマットが複雑で解析が困難であった。そこで、HARK 2.1より、 従来の種類の多いファイルフォーマッ トをよりシンプルな形式に整理した。設計方針は次の2点である。

1. できるだけ標準に使用されているフォーマットを使い、独自形式は減らす。

2. ファイル入出力APIを提供するライブラリを充実させる。

本方針に従い、独自のファイルフォーマットは 行列を表現するMatrixバイナリのみで、その他はすべて標準 的なフォーマットとそれの組み合わせとした。また、ファイル入出力をサポートするライブラリlibharkio3を 提供し、ファイルの操作を容易にした。

HARK の独自ファイルフォーマットは、以下の3種類である。

1. XML:位置を表現するファイルに使用。拡張子は.xml

2. Matrixバイナリ:行列を表現するファイルに使用。拡張子は.mat

3. Zip:伝達関数など、上記のファイルから構成される複雑なファイル形式に使用。拡張子は.zip 他のファイルは上記3種類に統合、あるいは標準フォーマットを使用するように変更される。

HARK では、ノードの入出力やプロパティ設定でファイルを指定することができる.表5.1に一覧を示す。

以降では,HARK で使用する3種類のフォーマットについて説明する。なお、Julius形式についてはJuliusの ファイルフォーマットに基本的に準ずる.オリジナルのJuliusとの違いに関してはJuliusMFTの説明を参照さ れたい。Raw Audio Format, PCM Wave Formatについては、標準フォーマットに準ずるのでその説明を参照さ れたい。

5.1 XML 形式

マイク位置や音源定位結果など、位置を表現する種類の情報の保存に使用するフォーマット。図5.1に示すサ ンプルのように、ルート要素がhark_xml、その子要素にconfig,positions,neighbors,channelsがある。

以下では、各要素について詳細に説明していく。

5.1.1 hark xml

この要素が表現する情報

HARK のXMLファイルの起点となる。HARK で使用されるすべてのXMLフォーマットにはこの要素を ルート要素としている。

表5.1:ファイル入出力が関係するHARKノード一覧

ノード名 使用箇所 ファイル種類 新ファイル形式 旧形式

SaveRawPCM 出力 Raw Audioファイル Raw Audio Format 同じ

SaveWavePCM 出力 Waveファイル PCM Wave Format 同じ

LocalizeMUSIC プロパティ設定 音源定位伝達関数ファイル Zip HGTFバイナリ

SaveSourceLocation 出力 音源定位結果ファイル XML 定位結果テキスト

LoadSourceLocation プロパティ 音源定位結果ファイル XML 定位結果テキスト

GHDSS プロパティ設定 音源分離伝達関数ファイル Zip HGTFバイナリ

プロパティ設定 マイクロホン位置ファイル XML HARKテキスト プロパティ設定 定常ノイズ位置ファイル XML HARKテキスト プロパティ設定 初期分離行列ファイル Zip HGTFバイナリ 出力 分離行列ファイル Zip HGTFバイナリ

SaveFeatures 出力 特徴量ファイル Matrixバイナリ floatバイナリ

SaveHTKFeatures 出力 特徴量ファイル HTK形式 同じ

DataLogger 出力 Mapデータファイル XML Mapテキスト

CMSave プロパティ 相関行列ファイル Zip 相関行列テキスト

CMLoad 出力 相関行列ファイル Zip 相関行列テキスト

JuliusMFT 起動時引数 設定ファイル jconf (テキスト) 同じ

設定ファイル中 音響モデル・音素リスト julius形式  同じ 設定ファイル中 言語モデル・辞書 julius形式 同じ

harktool harktool 音源位置リストファイル XML srcinfテキスト

harktool インパルス応答ファイル PCM Wave Format floatバイナリ

属性とその意味

hark xmlは属性versionをもつ。現在のバージョンは”1.3”である。

子要素

次節以降で説明するconfig, positions, neighborsが子要素となる。いずれの要素もオプショナルであり、あっ てもなくても良い。

5.1.2 config

この要素が表現する情報

XMLファイルの一般的な属性を表現する。

属性とその意味 属性はない。

<hark_xml version="1.3">

<config>

<comment>Test file</comment>

<SynchronousAverage>16</SynchronousAverage>

<TSPpath>/home/tsp.wav</TSPpath>

<TSPOffset>2</TSPOffset>

<PeakSearch from="0" to="100"/>

<nfft>1024</nfft>

<samplingRate>0</samplingRate>

<signalMax>0</signalMax>

<TSPLength>0</TSPLength>

</config>

<positions type="tsp" coordinate="cartesian">

<position x="0.100" y="0.100" z="0.100" id="0" path="/home/tsp1.wav"/>

<position x="0.150" y="0.100" z="0.100" id="1" path="/home/tsp2.wav"/>

<position x="0.200" y="0.200" z="0.200" id="2" path="/home/tsp3.wav"/>

</positions>

<neighbors algorithm="NearestNeighbor">

<neighbor id="0" ids="0;1;2;"/>

<neighbor id="1" ids="1;0;2;"/>

<neighbor id="2" ids="2;1;0;"/>

</neighbors>

</hark_xml>

図5.1: XMLフォーマットのサンプル 子要素

下記の要素を子要素にもつ。ただしすべてオプショナルであり、あってもなくても良い。comment以外は基 本的に伝達関数ファイルで使用される。

comment ファイルの説明が入る。任意の文字列をいれてよい。

SynchronousAverage 伝達関数計測用の信号(TSP信号)の再生回数を表す。自然数が入る。

TSPpath 伝達関数計測用の信号(TSP信号)のパスを表す。文字列が入る。/home/tsp.wav TSPOffset 伝達関数を計算する際のオフセットに使用される。自然数が入る。

PeakSearch 2つの属性fromとtoをもち、伝達関数を計算する際の直接音のピークを検索する範囲に用いら れる。これらの属性は必須であり、自然数が入る。

nfft 伝達関数を計算する際に行うフーリエ変換の解析長を表す。自然数が入る。

samplingRate 収録された伝達関数計測用の信号のサンプリング周波数が入る。自然数が入り、通常は16000 を使用する。

signalMax 収録された伝達関数計測用の信号の振幅の最大値が入る。自然数が入り、Waveファイルが16bitの 場合は32767を使用する。

TSPLength 伝達関数計測用の信号(TSP信号)の1回分のサンプル数を表す。自然数が入り、通常は16384を 使用する。

5.1.3 positions

この要素が表現する情報

XMLファイル中で位置の集合を表現する際に用いられる。

属性とその意味 3種類の属性をもつ

type 必須。この要素が表す位置の意味を指定する。現時点では、以下の5種類のtypeを許容する。

• noise:雑音位置を表す

• microphone:マイク位置を表す。

• source:音源定位された音源の位置を表す

• tsp: TSP信号を計測した位置を表す。

• impulse:インパルス応答を計測した位置を表す。

coordinate 必須。座標系を表す。直交座標系ならcartesian、極座標系ならpolarが入る。

frame オプショナル。このpositionsが何らかのフレーム番号に対応するとき、その値が入る。

子要素

個々の位置を表す要素positionが0以上の任意の個数入る。

positionsの属性は、まずは固定かつ必須の属性がある。

id : positions内で一意となる整数。

path : positionsが対応するファイルへのパス。

次に、親要素となるpositionsのcoordinate属性によって、座標の属性が異なる

coordinate=”cartesian”の場合 三次元座標を表すx, y, zの値。単位はミリメートル。

coordinate=”polar”の場合  極座標を表すazimuth, elevation, radiusの値。azimuth/elevationの単位はdegree、

radiusの単位はミリメートル。

5.1.4 neighbors

この要素が表現する情報

兄弟要素であるpositionsの隣接関係を表す要素。

属性とその意味

必須の属性algorithmをもつ。この属性は隣接関係を計算するアルゴリズムを表しており、現状ではユーク リッド距離の近い順に隣接関係を求めるNearestNeighborのみが実装されている。

子要素

個々の位置(position)に対する隣接関係を表すneighbor要素を子要素に持つ。それぞれ2つの必須の属性 を持つ。

id 隣接関係を表すpositionのid。 整数が入る。

ids idと隣接するpositionのidがセミコロンで区切られて入る。自分自身のidを含む。

例えば、idが1のposition要素が、idが2のposition要素と隣接している場合、neighbor要素は以下のよう に表現される。

<neighbor id="1" ids="1;2"/>

5.2 Matrix バイナリ形式

ある方向の伝達関数など、行列を表現するためのフォーマット。図5.2に概要を示す。

最初の32バイトに、HARKのMatrixバイナリ形式で表すことを示す文字列が入り、次の32バイトにデー タ型を表す文字列が入る。データ型には、int32,float32,complexがあり、それぞれ4バイト整数、4バイ ト浮動小数点数、4バイト浮動小数点数を実数・虚数にそれぞれ持つ複素数を意味する。続いて、行列の次元 数を表す4バイト整数(現時点ではテンソルは表現しないので2で固定)があり、行・列の順にサイズが4バイ ト整数で入る。その後、1行1列目の要素、1行2列目の要素。。。 という順で行列の内容が保存される。

図5.2: Matrixバイナリ形式の概要

5.3 Zip 形式

複数の方向の伝達関数を表す定位用伝達関数など、複雑な情報を表現するためのフォーマット。要素はテキ ストファイル、XMLファイル、Matrixバイナリなどのシンプルで独立したファイルで表し、それらの構造は zipファイル内のディレクトリ構造で表す。

Zip形式は任意のファイル構造を表現できるが、現時点では1種類の構造のみをサポートしており、それを 伝達関数ファイル用の形式と、GHDSSノードのExport W使用時の分離行列、CMLoad CMSaveノードなど で利用する相関行列 に使用している。

5.3.1 伝達関数ファイルのディレクトリ構造

伝達関数ファイルのディレクトリ構造は下記のようになっている。なお、/で終わる名前はディレクトリを 表す。

transferFunction/ --- whatisthis.txt

|- microphone.xml

|- source.xml

|- localization/ --- tf00000.mat

| |- tf00001.mat ...

|

|- separation/ --- tf00000.mat

|- tf00001.mat ...

ルートディレクトリはtransferFunctionである。まず、ファイルの種類を表すwhatisthis.txtがあり、内 容はtransfer functionである。また、伝達関数に対応するマイク位置を表すmicrophone.xmlと、伝達関数 の計測位置を表すsource.xmlがある。定位用伝達関数はlocalization/ディレクトリ以下に、分離用伝達関数は

separation/ディレクトリ以下に保存される。各ディレクトリ内のファイルは全てフォーマット文字列で使用す

るtf%05d.matの形式になる。つまり、伝達関数ファイルの名前は、source.xml内のidに対応する数字を5桁 で表した文字列(0詰め)となる。

なお、localization/とseparation/は、いずれか、あるいは両方が空でも構わない。例えば、localization/以下 が空の場合、旧ファイルフォーマットで使用した分離用伝達関数に相当する。また、localization/とseparation/

の両方にMatrix形式のバイナリファイルがある場合、従来の分離用伝達関数ファイルと定位用伝達関数ファイ

ルを1ファイルに統合したものに相当する。

5.3.2 GHDSS 分離行列のディレクトリ構造

分離行列ファイルのディレクトリ構造は下記のようになっている。なお、/で終わる名前はディレクトリを 表す。

transferFunction/ --- whatisthis.txt

|- microphone.xml

|- source.xml

|- localization/ --- (empty)

|- separation/ --- tf00000.mat

|- tf00001.mat ...

ドキュメント内 HARK Document (ページ 44-51)