2

私はこのような文法を持っています

 <grammar xml:lang="en-US" version="1.0" xmlns="http://www.w3.org/2001/06/grammar" tag   format="semantics/1.0" root="number" mode="voice">
 <rule id="number" scope="public">
  <one-of>
        <item>1<tag>out.string="one"</tag><tag>out.Name="first"</tag></item>
        <item>2<tag>out.string="two"</tag><tag>out.Name="second"</tag></item>
  </one-of>
 </rule>
</grammar>

タグ要素内の要素にアクセスする方法も教えてください。たとえば、レコグナイザが 1 を認識した場合は、最初に 1 を与える必要があります。

現在使用している

ISpRecoResult* pResult = spevent.RecoResult();

LPWSTR pszCoMemResultText = NULL;
_hr = pResult->GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE,&pszCoMemResultText,NULL);

pszCoMemResultText は、認識に基づいて「1」または「2」を返しています

ありがとう

4

1 に答える 1

0

SAPI 文法ではなく、W3C 文法を使用しています。愚かな私。

そのデータはテキストではなくSPPHRASE構造に格納されるため、次のように取得します。

ISpRecoResult* pResult = spevent.RecoResult();

SPPHRASE* pphrase;
hr = pResult->GetPhrase(&pphrase);
// your code here
CoTaskMemFree(pphrase);

現在、私は C++ で W3C 文法を使用していないため、SAPI 文法と同じように機能するかどうかは完全にはわかりませんが、そうであると仮定すると、タグ データは にツリーとして格納されpphrase->pPropertiesます。

于 2013-08-11T18:06:30.713 に答える