我的问题是如何加载使用它们在MSDN文档中列出的标记的语法文件? 我想在标题语法格式标记(SAPI 5.3)下使用MSDN中记录的格式标记。
http://msdn.microsoft.com/en-us/library/ms723634(VS.85).aspx
在那里列出了DEFINE,LIST,OPT等标签。但是每当我尝试在grammar.xml文件中使用这些标签时,我都会收到错误消息,说明该标签不受支持。
如果使用仅使用标签中的一个,项目等的语法文件,则在MSDN中列出;语法文件加载。
http://msdn.microsoft.com/en-us/library/ms870140.aspx
我知道这可能很简单,但我似乎无法弄清楚......
语法文件......有效
<grammar xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar
http://www.w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="en-US" version="1.0" root="command">
<rule id="command" scope="public">
<one-of>
<item>nail</item>
<item>hammer</item>
<item>saw</item>
</one-of>
</rule>
</grammar>
代码清单-------------------
public Form1()
{
InitializeComponent();
// set up the recognizer
_speechRecognizer = new SpeechRecognizer();
_speechRecognizer.Enabled = false;
_speechRecognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized);
// set up the command and control grammar
Grammar commandGrammar = new Grammar(@"grammar.xml");
commandGrammar.Name = "main command grammar";
commandGrammar.Enabled = true;
// activate the command grammer
_speechRecognizer.LoadGrammar(commandGrammar);
_speechRecognizer.Enabled = true;
}
答案 0 :(得分:1)
您似乎正在使用c#,因此使用语音系统的.NET接口。据我所知,.NET接口只显式支持W3C SRGS XML语法格式, http://www.w3.org/TR/speech-grammar/。虽然您链接的语法格式是MS特定格式,他们似乎称之为CFG。只有低级COM API提供CFG格式的详细信息。
您应该能够在SRGS中执行与CFG中相同的操作。
使用SDK工具编译后,您可以加载二进制版本的CFG。