ichou1のブログ

主に音声認識、時々、データ分析のことを書く

音声認識

音声認識メモ(Julius)その5(連続単語認識(DFA))

前回の続き。孤立単語の場合、"単語内(intra word)の遷移"のみを計算したが、連続単語の場合は、単語内に加え、"単語間(inter word)の遷移"を計算する。連続単語の場合の木構造化辞書を以下に示す。丸枠の下はノード番号を表す。 単語間の接続は、DFA文法…

音声認識メモ(Julius)その4(連続単語認識(DFA))

Juliusでは、連続単語の言語モデルとして、「N-gram」と「DFA」をサポートしている。ここでのDFA(Deterministic finite automaton、決定性有限オートマトン)はMealy型有限オートマトンのことで、出力が現在状態と入力に決定されるモデル。 遷移は一方通行…

音声認識メモ(Julius)その3(孤立単語)

juliusで音声を認識する過程をトレースする。HMMはモノフォンのモデルとし、「m」、「o」、「s」、「i」、「silB」、「silE」が学習済みであるとする。言語モデルは孤立単語(-w オプション)とし、辞書は以下とした。 MOSIMOSI m o s i m o s i MOMO m o m…

音声認識メモ(HMM)その9(HTK HERest コマンド(6))

混合正規分布モデル(Gaussian Mixture Model)のHMMを作成する。尚、単一正規分布のHMMモデル(single Gaussian models)のままでも認識エンジン「Julius」に渡すことはできる。混合数の増加には「HHEd」コマンドを使用する。 HHEd -H "HMMモデル" -w "出力…

音声認識メモ(HMM)その8(HTK HERest コマンド(5))

トライフォンの初期モデルに対して学習を行う。 HERest -C "config名" -I "トライフォン用の音素MLF" -t 250.0 150.0 1000.0 -S "学習対象となるファイルのリスト"-s "統計ファイル" -H "トライフォンの初期モデル" -M "出力先" "トライフォンのリスト"イン…

音声認識メモ(HMM)その7(HTK HERest コマンド(4))

モノフォン(monophone)での音響モデルを作ったら、続けて、トライフォン(triphone)の音響モデルを作成する。トライフォンというのは音素の3つ組のこと。 2つ組ならバイフォン(あるいはダイフォン) これらは、音素(phone)に「MONO」、「BI」、「TRI」を…

音声認識メモ(HMM)その6(HTK HERest コマンド(3))

「forward-backward」(またはalpha-beta)アルゴリズムの後ろ向き確率が求まったら、 続けて前向き確率を求める。t=2において、ラベル1の状態2にいる確率(下図の赤枠)は ①(t=1でラベル1の状態2にいる確率) * ②(遷移確率) * ③(出力確率)により求まる。 log…

音声認識メモ(HMM)その5(HTK HERestコマンド(2))

HMMは2種類の確率を持つ。 遷移確率(transition probabilities) 出力確率(output probabilities) 出力確率は、HTK Bookの数式を見ていてもイメージがわきにくかったので、まとめてみた。パラメータを「NUMCEPS = 12」、「MFCC_D_A_0」で与えた時、HMMに…

音声認識メモ(HMM)その4(HTK HERestコマンド(1))

音声データと、それが意味する音素や単語("ラベル"と表現する)の紐付けには、「音響モデル」を使用する。Juliusでは、音響モデルとして、HMM (Hidden Markov Model) を用いることができる。HMMは、HTK(HMM Tool Kit)を使って作成できる。モデルの学習には、…

音声認識メモ(フーリエ変換)

フーリエ変換を用いることで、波形データを純音に分解できる。 結果、波形データの特徴を解析しやすくなる。 フーリエ変換の定義式 ω:角周波数/角速度[rad/s] t:時間[s] j:虚数単位 f(t):変換前の時間波形 F(ω):角周波数ωにおけるcos成分の大きさ、sin…

音声認識メモ(HMM)その3(HTK HCopyコマンド(3))

"もしもし"というWAVE音声データをプロットしてみると以下のとおりであった。 発声の時間は2秒間で、サンプリングレートは16kHz(出力結果として得られるサンプル数は32,000) 1サンプルは2バイト(C言語でのshort(−32,768〜 32,767))の範囲の値を取る 横軸が…

音声認識メモ(HMM)その2(HTK HCopyコマンド(2))

音声認識は音声データをそのまま扱うのではなく、MFCCという音響特徴データに変換する。MFCCは"Mel Frequency Cepstrum Coefficents"の略。音というのは波で、複数の純音が重なり合っている(ならば、純音に分離できるということ)。 音声データは"x軸が時間…

音声認識メモ(HMM)その1(HTK HCopyコマンド(1))

Juliusに渡す音響モデルを"HTK"(Hidden Markov Model Toolkit)で作成する。音声データは、"もしもし"という発声をWAVEファイルに保存したものを用意した。 サンプリングレートは [16000 Hz] チャンネル数は [1] (モノラル) 量子化深度 (サンプリングデータを…

音声認識メモ(Julius)その2

前回の続き使用するJuliusのバージョンは"4.3.1"Juliusに渡すパラメータを簡略化して書くと以下のとおり。 julius "入力音声" "音響モデル" "言語モデル" 入力音声オプション例 HTKの特徴ベクトルを渡す -input mfcfileマイク入力 -input mic 音響モデルオプ…

音声認識メモ(Julius)

画像や文字といった"パターン認識"技術の中でも、特に難しいとされる音声の認識。その仕組みを調べてみた。qiita.com 「Julius」は他と比べると見劣りする。 デフォルトですぐに使えるようにしてあるのは試しやすくていいけど、認識精度にガッカリしてしまう…