HRestが認識できるファイル

HCopyを使えば,HRestが認識できる.mfcファイルはすぐつくれる.けど,独自のパラメータを使いたい場合(メルケプとかLPCとか以外),HCopyでは対応できないので,自力でHRestが認識できるファイルを作ることになる.

参考にするため,HCopyが吐く.mfcファイルをのぞいてみた.バイナリエディタでHListの結果とてらしあわせてみると,どうやら先頭12byte分がヘッダで,あとは4byteのfloat型データが並んでいるらしい.(エンディアンはbig.)

けどこの12byteにはなにをかけばいいんだっっっ!と一日格闘していたところ,答えらしいものが見つかりました.(HTKBookにふつうに書いてあった.)

  • 先頭4byte: フレーム数
  • 次の4byte: フレームシフト(単位は100ns)
  • 次の2byte: バイト数/1フレーム
  • 次の2byte: ファイルの種類(今回は,9.下記参照)

もちろん,ヘッダ部分もbig endianです.

0 WAVEFORM sampled waveform
1 LPC linear prediction filter coefficients
2 LPREFC linear prediction reflection coefficient
3 LPCEPSTRA LPC cepstral coefficients
4 LPDELCEP LPC cepstral plus delta coefficients
5 IREFC LPC reflection coef in 16-bit integer f
6 MFCC mel-freqency cepstral coefficients
7 FBANK log mel-filter bank channel
8 MELSPEC linear mel-filter bank channel outputs
9 USER user defined sample kind
10 DISCRETE vector quantised data
64 _E has energy
128 _N absolute energy suppressed
256 _D has delta coefficients
512 _A has acceleration coefficients
1024 _C is compressed
2048 _Z has zero mean static coef
4096 _K has CRC checksum
8192 _0 has 0' in cepstral coef

例えば MFCC_E_D_Z ならば 6+64+256+2048=2374