2016-11-19 15 views
-1

私はアプリケーション(Windows、明らかにC++、Win8 SDK)に音声認識サポートを追加するためにMicrosoft Speech API(SAPI、5.3)を使用していますが、文法の読み込みに関するいくつかのフープジャンプファイルは非常にうまく動作しています。SAPIルールの列挙

しかし、私はファイルから読み込まれた文法からルールを列挙する方法を考え出すことができません。明らかに、手動/動的に文法を構築するときは、自分でルールを作成しています。しかし、は、のように、ファイルから読み込まれた文法の規則を列挙する方法ではありません。 IspRecoGrammar :: GetRule()はルールの照会に最も近いと思われますが、既知のルール(ルール名またはIDのいずれか)を取得するためのものです。

当分、私は自分自身でXMLを解析し、ルール名を抜き出していますが、これは完全な解決策ではありません。 XML バイナリ文法設定ファイルの両方をサポートする必要があります。後者は私の現在の回避策を回避します。

私はこれをどのように達成するのか、SAPIの経験を持つ方は知っていますか?

+0

ここで達成しようとしているより高いレベルの目標は何ですか? (AKA - なぜあなたはSAPIルールを列挙する必要があると思いますか?) –

+0

返事をありがとう、Eric。要するに、ロードされた文法のルールに対して、他のデータを事前に検証する必要があります。この他のデータは名前でルールを参照するため、この他のデータの読み込み時に、データ参照が実際に有効である文法ルール(名前)を検証したいと考えています。 – SBD

+0

前述のXMLの処理に加えて、SAPI認識コールバックを介して遭遇したように、「既知のセット」にルールを検証してから追加することはできませんが、それは非常に堅牢なソリューションではありませんデータのエラーをキャッチします。 – SBD

答えて

0

IspRecoGrammar::GetRule()はまだ必要な処理をしているようです。既知の適切なルール名がある場合は、IspRecoGrammar::GetRule()を使用してルール名を検証します。有効な場合は、セットに追加します。 (あなたには、よく知られた悪名もあるかもしれません。)

+0

良い提案、私はその方向からそれに行くことはなかった。それは確かに手元の問題(既存のデータ検証)に対処するでしょう。前もって考えてみると、参照データを作成するための既知のルールのリストを提示したいので、ルールの列挙の場合は正方形に戻すことができます。あなたが知っている限り、ルールを列挙する方法はないと私は推測しています。私自身のかなり深いインターネット検索では、何か類似のものを試してみたり何もしていない。 – SBD

+0

@SBDいくつかのチェックを行い、文法コンパイルのほとんどはSAPIインターフェイスのエンジン側で行われました。これは、文法のコンパイル中に実行されたルール列挙が内部的な問題で実行されており、ルール列挙のための他のクライアント側のインタフェースがないことを意味します。 –

+0

それを調べていただきありがとうございます。明らかに、これまでのところ、明確な必要性はなかった。おそらく将来のバージョンが施設を提供するでしょう(公開するのは簡単なことです)。今のところ私はそれを得るときに提案されたように検証し、他の橋と交差するつもりです。再度、感謝します。 – SBD