吵吵   2019-03-16  阅读:4,568

近来想解决标本批量扫描条码的时候漏扫的问题,解决这个问题固然可以用弹框提示,例如条码扫描不全就弹框提示一下,但是由于条码扫描枪自带Enter功能,还是容易导致批量扫描时一带而过。

最好的办法还是声音提示,一是扫描时报数,二是扫错了进行提示!


以前做危急值提示功能时,就用到了微软的语音播报平台的功能Microsoft Speech Platform。该功能集成在.net framework4.0里面。

依次在“引用”,“添加引用”,“.net”中找到v4.0的System.Speech加上即可,方便的很。

然后写上代码:

SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Volume = 100;
synth.Rate = -2;
synth.SpeakAsync(str);

以为就大功告成,然而报错了!

“系统上未安装语音,或没有当前安全设置可用的语音。”

那就是没有安装语音包了,那就去下载一个吧!

到微软的官网找到:
https://www.microsoft.com/en-us/download/details.aspx?id=27224

这个就是:Microsoft Speech Platform – Runtime Languages (Version 11)下载里面的中文语音MSSpeech_TTS_zh-CN_HuiHui.msi。这个安装一闪而过,还以为没装好呢,去控制面板里面看看,其实装好了,毕竟也很小的。

然后试试,还是报系统未安装语音。网上找了很多说是版本的问题,因为你下载的语音包是V11的,而.net 4.0自带的是v4的,有修改注册表的办法,大概注册表是在这里的:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server\v11.0\Voices\Tokens\TTS_MS_zh-CN_HuiHui_11.0

C:\Program Files\Common Files\Microsoft Shared\Speech\Tokens\TTS_MS_zh-CN_HuiHui_11.0\MSTTSLoczhCN.dat

但是我们部署客户机总不能老修改注册表是吧,还是去下载V11的开发SDK吧:

https://www.microsoft.com/en-us/download/confirmation.aspx?id=27226

Microsoft Speech Platform – Software Development Kit (SDK) (Version 11)

安装之后我们重新引用C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll这个Dll。使用的时候

using Microsoft.Speech;

好了,不报错了,看来还真是版本的问题。

怎么还是没有声音呢?

synth.SetOutputToDefaultAudioDevice();

原来啊,还得选择一下默认的输出设备,好了,完美运行了!

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

发表评论

电子邮件地址不会被公开。 必填项已用*标注