0

だから私は音声認識を行うための小さなツールを書いています。SAPI 5.4から始めて、SRGSxmlファイルを使用して文法を設定しました。それは非常にうまく機能しました。私のコマンドはすべて簡単に認識されました。ただし、これをXPで実行しようとしていますが、問題が発生しています。次のコードを使用して、既存のxmlファイルを読み込みました。

listener = New SpSharedRecoContext()
AddHandler listener.Recognition, AddressOf Handle_Speech
Dim grammar As ISpeechRecoGrammar
grammar = listener.CreateGrammar()
grammar.CmdLoadFromFile(Utilities.INI.ConfigPath & "\Voice_Commands.xml")
grammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive)

ただし、コマンドの認識におけるSAPI 5.1のパフォーマンスは、5.4よりもはるかに劣ります。まず、オンにする必要のある外部リスナーアプリを起動します(これはそれほど悪くはないと思います)。しかし、主な問題は、私が話すときにリスナーがOS操作を開始することだと思います(フォルダーを開くなど)。したがって、明らかに、事前定義された一連のコマンド以上のものをリッスンしています。

SAPI 5.1を5.4のように機能させる方法を知っている人はいますか?

ありがとう、

イアン

4

1 に答える 1

0

これはXPですか?説明している動作は、Vista以降でのみ実行されるWindows音声認識を実行しているように聞こえます。

共有レコグナイザーの代わりに、インプロセスレコグナイザー( SpInProcRecoContext )が必要です。これを初期化するには少し作業が必要です(エンジンとオーディオソースを接続する必要があります)。これについてはブログに少し書いていますが、ネイティブAPIを使用して作成しました。

最後に、XPのSRエンジンは、Vista以降のSRエンジンほど良くありません。結局のところ、XPSRエンジンは10年以上前のものです。

于 2013-02-01T18:32:29.607 に答える