3

Android の音声認識機能を使用しています。デバイスに話しかけると、可能な単語のリストが表示されます。

「開始」と言うと、聞いたと思った次の単語が表示されます。

  1. 株式
  2. 株式
  3. 止まる
  4. 始める
  5. 止まる
  6. スタークス

そのリストは、他のさまざまな要因の中でユーザーのアクセントに依存します。そのリストで特定の単語を確認する簡単な方法はありますか?

ユーザーがコマンド「start」または「stop」を発行した場合、2 つのコマンドの違いを認識できる必要があります。

私の最初の考えは、正規表現を使用して、応答のいずれかで「sta」または「sto」をチェックすることでした。より効果的な方法はありますか?

4

1 に答える 1

3

通常、返されるすべての単語に対してSoundexを生成し、一致する文字の一部として探している単語のSoundexeに対してリスト全体をスコアリングし、それらのスコアを使用してどの単語がより可能性が高いかを判断することをお勧めします一致する。

たとえば、startencodestostopencodesto。_ 一致した文字のパーセンテージとして単語に対してそれらをスコアリングすると、次の表になります。S363S310

Word    Soundex  S363   S310
----    -------  ----   ----
stocks  S320     0.50   0.75
stock   S320     0.50   0.75
stop    S310     0.50   1.00
start   S363     1.00   0.50
stops   S312     0.50   0.75
starks  S362     0.75   0.50
                 ----   ----
Average Score    0.63   0.71

残念ながら、これは間違った答えを出します(あなたが開始を言ったことを知っていても、停止を言った確率は高くなります)。あなたの2つの単語には多くの共通点があるからです。レコグナイザーがターゲット単語の1つと一致し、同じゴーラウンドで別の単語と混同した場合、話者が実際にどの単語を言ったかを知る方法はありません。

これを回避するには、goandstopやbeginandendなど、あまり類似してない単語選択ます。次に、Soundexを完全に破棄して、返されたリストでターゲットの単語を探すことができます。他の言語でも同様の問題が発生する可能性があるため、アプリケーションの他のローカリゼーションでこれを監視する必要があります(たとえば、フランス語、allezarrêtez)。

HTH。

于 2011-02-12T16:41:35.397 に答える