没人用过speech sdk吗??发了3个帖都没人理??
xbcom 2004-08-28 09:50:38 开发环境vs.net,speech sdk 5.1,win2000
想用命令和控制方式(c&c)识别中文语音读入,sdk帮助上只有英文识别教程,现在已经实现。用xml写的英文识别grammar文件能导入进行识别,但是不清楚怎么写中文grammar的xml文件,在英文grammar文件上的修改都没成功,激活rule的时候发生了错误。
假设xml文件如下:
<GRAMMAR LANGID="409">
<DEFINE>
<ID NAME="RuleId_A" VAL="0"/>
</DEFINE>
<RULE ID="RuleId_A" TOPLEVEL="ACTIVE">
<P PROPID="PropId_B" VAL="PropVal_AB"> good morning </P>
</RULE>
</GRAMMAR>
要想识别中文,如good morning变为“早上好”,应该怎么改写这个xml文件。中文的LANGID好象是804,但改了还是没用。在grammar.CmdSetRuleIdState (0, SGDSActive)这一句老是出错。
代码方面是否也和英文识别不同。我用的主要代码如下。应该怎么改。
private SpeechLib.SpSharedRecoContext objRecoContext;
private SpeechLib.ISpeechRecoGrammar grammar;
private SpeechLib.ISpeechGrammarRule rule;
//初始化
void initRecongition()
{
objRecoContext=new SpSharedRecoContext();
objRecoContext.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(RecoContext_Recognition);
grammar = objRecoContext.CreateGrammar(0);
grammar.CmdLoadFromFile("path+filename",SLODynamic);
grammar.CmdSetRuleIdState(0,SGDSActive); //编译器说这句错误,但英文识别没问题
}
//识别事件后调用方法
public void RecoContext_Recognition(int StreamNumber,object StreamPosition, SpeechRecognitionType RecognitionType,ISpeechRecoResult Result)
{
Result.PhraseInfo.GetText(0,-1,true);
}