我有这样的语法
<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,1和1。
目前正在使用
ISpRecoResult* pResult = spevent.RecoResult();
LPWSTR pszCoMemResultText = NULL;
_hr = pResult->GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE,&pszCoMemResultText,NULL);
pszCoMemResultText基于识别给我“1”或“2”
由于
答案 0 :(得分:0)
您使用的是W3C语法,而不是SAPI语法。傻我。
该数据存储在SPPHRASE结构中,而不是文本中,因此您可以像这样检索它:
ISpRecoResult* pResult = spevent.RecoResult();
SPPHRASE* pphrase;
hr = pResult->GetPhrase(&pphrase);
// your code here
CoTaskMemFree(pphrase);
现在,我还没有将W3C语法与C ++一起使用,所以我不能完全确定它是否与SAPI语法的工作方式相同,但假设它是,标签数据将存储为pphrase->pProperties
中的树。