ノート
スライド ショー
アウトライン
1
harkioライブラリ
  • harkioライブラリは、MUSICのTF,GSSのTF,SMファイル等を読み書き、新規作成するC++のライブラリです。
  • 詳細は、下記のページを参照してください。
    • オブジェクト図
    • 新規作成1〜3
    • ファイルの読み書き
    • データの参照
    • その他の処理
    • HARKフォーマット(詳細)

2
オブジェクト図
  • 以下は、MUSICの伝達関数の場合のオブジェクト図です。
  • RIFF、Data、Chunkクラスは、どのファイルフォーマットでも使用される基底クラスです。別のフォーマットを利用する場合には、別の派生クラスを使用します。
    (たとえば、GSS伝達関数の場合だと、M2PGクラスの代わりにGTFクラスを利用します。)
3
新規作成1
  • 以下、MUSICの伝達関数ファイルを作成する例を元に説明します
  • HARKのオブジェクトを生成します







  • HGTFのオブジェクトを作成します
4
新規作成2
  • HGTFのオブジェクトをHARKオブジェクトへ追加します





  • FMT,M2PG,SPECのチャンクオブジェクトを生成します
5
新規作成3
  • チャンクオブジェクトへデータを設定する
     (コンストラクタの引数で設定されるデータもあります)
    • それぞれのチャンクのメンバ関数によってデータを設定する





  • 3つのチャンクオブジェクトを、HGTFオブジェクトへ追加する
    • これでデータの作成は終了
6
ファイルの読み書き
  • ファイルの読み書きは、HARK(RIFF)オブジェクトのwriteFile(), readFile()関数を呼び出すだけです。
7
データの参照
  • データの参照にはまず、取得対象のオブジェクトのポインタを取得します。
    • Dataポインタの取得
      • getData関数で取得したDataポインタは、
        それがHGTFオブジェクトかどうかは保障されません



    • チャンクポインタの取得
      • getChunk()関数は、取得するチャンクのクラス名をテンプレート引数で指定します。



    • データの参照
      • 各チャンクオブジェクトのデータ参照関数を使用します
8
その他の処理
  • Sampleディレクトリに、サンプルプログラムがありますので、
    参考にしてください。
    • サンプルプログラムは、GSSのTF,GSSのSM,MUSICのTF,について、新規作成、ファイル読み書き、データ参照のすべて行っています。
      (扱っているデータは、意味の無いテストデータです)
9
HARKフォーマット
  • RIFF (Resource Interchange File Format)ライクなバイナリフォーマット
    • フォームタイプ
      • HGTF (HARK General Transfer Function)
    • サブチャンク
      • M2PG (MUSIC 2D Polar Grid)
      • GTF (GSS Transfer Function)
      • SM (Separation Matrix)
  • テキストフォーマット
    • GSS用マイク位置
    • 雑音源位置
10
バージョン情報
  • フォームタイプHGTFのバージョン
    • M2PG 1.0
    • GTF 1.0
    • SM 1.0
  • テキストフォーマットのバージョン
    • MICARY-LocationFile 1.0
    • Noise-LocationFile 1.0
11
フォーマットの作成条件情報
  • バイナリ,テキストフォーマットともに,作成条件の情報を付与する
  • 作成条件情報(英語で記述)
    • 作成日
      • 例:2009/05/19
    • 場所
      • 例:Smart room
    • ロボット(ロボットの種類,動作中かなど)
      • 例:ASIMO ver.2.5 #4 servo off
    • アレイのタイプ(詳細な配置はマイク位置として記録されているので,大雑把に)
      • 例:8ch headband, 8ch cubic, など
    • 作成者
      • 例:Shunichi YAMAMOTO
    • 備忘録(作成時のパラメータなど上記以外のその他)
      • 例:MUSIC_DIR=32
12
作成条件 備忘録の例
  • M2PG
    • 直接音部分のサンプル長
      • MUSIC_DIR=
  • GTF
    • 伝達関数の正規化(ベクトル毎 or 行列毎)
      • Normalization={vector norm, matrix norm}
  • SM
    • 分離行列を計算したときの状況
      • NumberOfSources=2
      • SourceDirection=(0, 30)
      • SourceType=(speech, music)
13
HGTF(汎用伝達関数)のデータ構造
14
fmtサブチャンクの定義
15
M2PGサブチャンクの定義
16
GTFサブチャンクの定義
17
SMサブチャンクの定義
18
SPECサブチャンクの定義
19
GSS用マイク位置,雑音源位置
  • ヘッダ
    • 現状ではマイク位置と雑音源位置の区別がつかないので区別できるようにする
    • バージョン番号を別の行にする
    • MICARY-LocationFile,Noise-LocationFile,Versionはファイルフォーマット識別のため,最初の2行に記述すること
  • データ
    • 従来のテキスト形式のまま
  • コメント
    • 行頭がシャープの行(行頭で無ければならない)をコメントとする
    • コメント内にこのファイルの作成条件等を記述しておく
20
GSS用マイク位置ファイルの例
21
雑音源位置ファイルの例