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

您使用的是 W3C 语法,而不是 SAPI 语法。傻我。

该数据存储在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 回答