隠れマルコフモデルのしきい値処理


14

私はmfccおよび非表示のマルコフモデルを使用した音声認識のための概念実証システムを開発しました。既知の音でシステムをテストすると、有望な結果が得られます。システムは、未知の音が入力されると、最も近い一致で結果を返しますが、スコアは考案するのにそれほど明確ではありません。

私は、スピーチ用、水道の蛇口から出る水用、机の上でノックするための3つの隠れたマルコフモデルを訓練しました。それから、私はそれらを目に見えないデータでテストし、次の結果を得ます:

input: speech
HMM\knocking:  -1213.8911146444477
HMM\speech:  -617.8735676792728
HMM\watertap:  -1504.4735097322673

So highest score speech which is correct

input: watertap
HMM\knocking:  -3715.7246152783955
HMM\speech:  -4302.67960438553
HMM\watertap:  -1965.6149147201534

So highest score watertap which is correct

input: knocking
HMM\filler  -806.7248912250212
HMM\knocking:  -756.4428782636676
HMM\speech:  -1201.686687761133
HMM\watertap:  -3025.181144273698

So highest score knocking which is correct

input: unknown
HMM\knocking:  -4369.1702184688975
HMM\speech:  -5090.37122832872
HMM\watertap:  -7717.501505674925
Here the input is an unknown sound but it still returns the closest match as there is no system for thresholding/garbage filtering.

キーワードスポッティングでOOV(ボキャブラリー外)の音は、ガベージモデルまたはフィラーモデルを使用して除外できることを知っていますが、これは、システムに適用できない未知の単語の有限セットを使用して訓練されていると言いますシステムが記録するすべての音を知りません。

同様の問題は音声認識システムでどのように解決されますか?そして、誤検知を避けるためにどうすれば問題を解決できますか?

回答:


5

とても良い質問です!

あなたが言及したように、HMMに「わからない」(OOVと呼びましょう)答えを与える唯一の方法は、モデルの下で最も可能性の高い状態を常に出力するため、特別な状態を与えることです。だから、OOVは下より高い可能性を持っていることを確認する必要があり、すべてではない入力speechwatertapまたはknocking

簡単な答えは、これは不可能だということです。HMMは絶対パターン認識エンジンではないためです。それはあなたのモデルの下での出力の可能性を比較するだけで、コンテキストではトレーニングされました

だろう入力について考えspeechknocking同時に。この入力にはそれぞれの特徴があるため、HMMはこれら2つの状態の間を「hes」します。最終的にはそれらの1つを出力しますが、OOVを出力することはほとんどありません。キーワードスポッティングの場合、私の推測では、一貫してHMMをだます巧妙な入力を見つけることができると思います。ただし、著者はおそらくどのような入力を期待するかを知っており、未知の単語の有限リストを選択しているため、これらの有毒な入力は一般的ではありません。

同じことをすることをお勧めします。HMMを使用して、排除したい最も一般的な入力でOOV状態をトレーニングする状況について考えてください。いくつかのOOV状態があると考えることさえできます。


2
しかし、どのようにジェスチャー認識のためのHMMに基づく閾値モデルについては、ここで説明:herin.kaist.ac.kr/Publication/PS/hklee_PAMI_i09611.pdfを。それらは、各hmmの状態が結合されたエルゴードhmmであるしきい値モデルを作成します。「しきい値モデルはベースラインとして機能します。特定のジェスチャモデルがしきい値を超えると、ジェスチャ候補が見つかります」しかし、私の問題は、Javaおよびjahmmライブラリを使用しているため、エルゴディックのオプションがないと思うことです。うーん。
ラデク

タイトルにあるように、これはHMMベースのアルゴリズムであるため、HMMではありません。純粋なHMMはニーズに合わず、しきい値ベースの分類器が実際に適しているように思えます。
gui11aume

5

これは、ジェスチャー認識の分野ではやや一般的です。答えは、Lee and Kim(1999)の論文で説明されているしきい値モデルを作成することです。

フィラーモデルまたはガベージモデルと同じ役割を果たしますが、あなたが言うように個別にトレーニングする必要はありません。他のモデルからのすべての自己遷移状態を接続し、それらの状態を完全に接続して均一な確率で遷移を初期化することにより、しきい値モデルを作成できます。それを実際にどのように行うことができるかについては、この論文をご覧ください。

ライブラリがエルゴードモデルをサポートしていない場合でも、必要なサイズのモデルを手動で作成し、それに応じて状態を設定することを妨げるべきではありません。そのためのライブラリが本当に必要な場合は、Accord.NET Frameworkなどで、しきい値モデルのサポートを含む隠れマルコフモデル分類子の実装を利用できます。

免責事項:私はこのライブラリの著者です。


しきい値モデルを手動で作成できます。たとえば、sound1とsound2という名前の2つのhmmモデルがあるとします。どちらにも2つの状態があります。次に、4つの状態を持つしきい値モデルを作成します。各状態の同じ初期値は0.25です。次に、可能なすべての遷移に対して均一な分布を設定し、可能なすべての状態遷移(0,0)、(0,1)、(1,0)、(1,1)、(1,2)、(2,1)、 (2,2)などは、0.0625の均一な分布を取得します。次に、しきい値モデルの状態1および2に対して、sound1から状態1および2のopdfを設定し、しきい値の状態3および4に対して、sound2から状態1および2のopdfを設定します。
ラデク

上記のアプローチは正しいですか?
ラデク

1
そうではありません...おそらく、説明が少しゆるんでいました。しきい値モデルの遷移行列の対角要素は、他のモデルから元の自己遷移確率を受け取ります。状態から他の状態への遷移は、一様な確率で初期化されます。コードに指摘するのは怠seemsに思えるかもしれませんが、コードはformulasよりも理解しやすい場合があります
シーザー

ところで、リーとキムの論文を読んで別の解釈をした場合、または私の実装が間違っていると思われる場合は、お知らせください。
シーザー

3

それで、私がやったことは、フィラーモデルの簡易バージョンを作成したことです。ウォータータップ音、ノッキング音、およびスピーチ音を表す各hmmは、それぞれ0.3秒から10秒のさまざまな長さの30、50、90音のトレーニングセットの音によってトレーニングされた個別の6状態のhmmです。次に、ノッキング、ウォータータップ、およびスピーチ用のすべてのトレーニングセットサウンドで構成される1状態のうーんとなるフィラーモデルを作成しました。そのため、特定のサウンドのhmmモデルスコアがフィラーのスコアよりも大きい場合、サウンドは認識されます。それ以外の場合は不明なサウンドです。本当に大きなデータは持っていませんが、目に見えない音に対する誤検知拒否と真の拒否拒否について次のテストを行いました。

true positives rejection
knocking 1/11 = 90% accuracy
watertap 1/9 = 89% accuracy
speech 0/14 = 100% accuracy


false positives rejection
Tested 7 unknown sounds
6/7 = 86% accuracy

したがって、この簡単なテストから、このアプローチでは妥当な結果が得られると結論付けることができますが、十分ではないかもしれないという不思議な感じがします。


+1これは非常に興味深いです。この作業をまだ忘れていない場合、このアプローチは最終的に機能しましたか?「フィラー/その他」モデルとしては十分でしたか?そうでない場合、最終的に他の何かを実装しましたか?
ジュバル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.