一个月前,接BOSS要求,做设备的声控功能,即语音识别。要求有三:1、命令可通过文件配置。2、离线语音识别。3、不改变系统显示语言的基础上实现多国语言的语音识别切换。
win7中的语音识别
以前并没有做过语音识别,只知道windows7中自带语音识别,位置在Control Panel->Ease of Access->Speech Recognition(如果您的系统中并没有这个功能,请下载驱动包自行安装),于是乎,便试玩了一下,具体命令请搜索“win7语音命令”,感觉识别效果还不错,只是不能够识别中文,以及其它国家的语言。
查看了一下它的设置Advanced speech options,但language中只有en-US一个选项,原因是中文及其它国家语言包没有安装,下载地址详见http://wenku.baidu.com/link?url=VWJqqNKN9F3GYBeoBYIJodKun2WKx1YbNSzNVEssZy4HQ-6d0MopwYyiShX2dlWTGbOAcKWLU-vEqw5Y5NreC7o_G1r7TJPYl0Pe2SY6X_S
安装后,可切换中文。
但切换到中文时却提示
原因是系统显示语言和语音识别的语言不匹配,会导致语言识别失败。
解决方法:可改变系统显示语言
但我的项目要求,不能够改变系统显示语言,回为它可能带来其它的软件系统问题。
System.speech
因为是做WPF开发,很自然地想到.net中有没有这样的语言识别,能过查看.net,发现了system.speech。原来上述win7语音识别的
代码实现在这里。具体实现可参考https://msdn.microsoft.com/zh-cn/library/system.speech.recognition.speechrecognitionengine.aspx
问题发现:
在不改变系统显示语言的基础上,虽然可以切换各国识别语言,但却没有实际效果。例如系统语言为英文,改变语音识别语言为中文,中文识别率
基本为0。为解决这个问题,还需要继续研究
Windows speech platform v11.0
为了能够利用windows speech plateform进行开发,需要下载三部分的内容:
1、Runtime https://www.microsoft.com/en-us/download/details.aspx?id=27225
2、Languages https://www.microsoft.com/en-us/download/details.aspx?id=27224
3、SDK https://www.microsoft.com/en-us/download/details.aspx?id=27226
安装顺序为 runtime->sdk->所需要的languages
在代码中需要添加对windows.speech.dll的引用。其它开发过程和System.speech几乎完全一样,但是可以解决在开发
System.speech中遇到的问题。
具体的开发过程我会在后续的博客中介绍,如果有想要一起研究的,可以联系我,第一次写博客,不当之处还请谅解。