最近需要给自己开发的软件添加语音导航功能,百度+摸索终于实现了,不过比较简陋,分享出来供大家娱乐批评!

现在市场上的语音引擎不多,有微软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介绍以其及语音识别过程

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐