最近需要给自己开发的软件添加语音导航功能,百度+摸索终于实现了,不过比较简陋,分享出来供大家娱乐批评!
现在市场上的语音引擎不多,有微软SAPI、googgle、讯飞,经过多番比较最终决定使用微软SAPI 5.1,原因是免费,便于我集成到winform程序里。
首先,要实现微软的这个语音识别需要几个东西:
1.安装微软SAPI 5.1 SDK
2.安装中文语言包
这两个东西网上都可以下载到,自己找吧!
然后,开始实现吧。
由于微软的语音引擎是微软的,也就是人家外国人做的,中文识别方面当然没有国内的讯飞好了,所以就在语音连续识别和命令词识别之间取舍,为了识别率高点所以采用命令词识别的方法实现。
核心代码:
private static SpRecofnition _Instance = null;
private ISpeechRecoGrammar isrg;
private SpShareRecoContext ssrContext = null;
private void Function()
{
ssrContext = new SpShareRecoContext();
isrg = ssrContext.CreateGrammar(1);
isrg.CmdLoadFromFile(Application.StartuoPath + "\\1.xml",SpeechLoadOption.SLODynamic);
ssrContext.recognition += new _ISpeechRecoContextEvents_RecofnitionEventHandler(ContextRecognition);
isrg.CmdSetRuleState(isrg.Rules.Item(0).Name,SpeechRuleState.SGDSActive);
}
1.xml是语法文件
<?xml version="1.0" encoding="gb2312">
<GRAMMAR LANGID="804">
<RULE NAME="命令" TOPLEVEL="ACTIVE">
<L>
<p>你好</p>
<p>我好</p>
<p>他好</p>
</L>
</RULE>
</GRAMMAR>
注:记得要在控制面板里把语音切换到中文上,否则会报错的!
如果你对微软SAPI没有一点了解的话,可能会看不懂我写的东西,此处给个链接先了解一下微软SAPI。微软语音SAPI介绍以其及语音识别过程