首先还是那句话,我不是大牛,这些只是简单的记录一下学习的过程,没有太多面向对象和设计模式的思维,只偏基础,不喜莫笑;个人观点如果有不足之处,还望多多指教!
导语:多媒体时代怎么让你的程序能满足用户多样化的需求,如html5里的语音输入,眼神控制等等
这节将给大家说说怎样让你的程序做智能语音提示!让你的程序比小霸王点读机还要强大
只是一个思路起抛砖引玉供大家借鉴,不喜勿骂!~
首先:传统开发中可以调用微软的提供的一个强大的tts语音识别引擎 让lily帮你读出你想说的话!支持多种语言版本
1. SAPI.51 SDK浅析以及安装
SAPI SDK是微软公司免费提供的语音应用开发工具包,这个SDK中包含了语音应用设计接口(SAPI)、微软的连续语音识别引擎(MCSR)以及微软的语音合成(TTS)引擎等等。目前的5.1版本一共可以支持3种语言的识别 (英语,汉语和日语)以及2种语言的合成(英语和汉语)。SAPI中还包括对于低层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别(SR)管理以及TTS管理等强大的设计接口。
语音引擎则通过DDI层(设备驱动接口)和SAPI(SpeechAPI)进行交互,应用程序通过API层和SAPI通信。通过使用这些API,用户可以快速开发在语音识别或语音合成方面应用程序。
要开发这个需满足几个前提:
SAPI5.1 SDK可以从微软网站下载:http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en需要安装程序的有Speech SDK 5.1(68M)和5.1 Language Pack (81.5M)。
在win8中不需要安装别的我没有尝试大家可以先开发出程序不能发音然后再下载语言包
现在语言包引进支持N多国家了大家可以去自己下载看一看
这里给大家贴出c#的语言识别代码
View Code
1 ///
2 /// 点击按钮发音
3 ///
4 ///
5 ///
6 private void buttonVoice_Click(object sender, EventArgs e)
7 {
8 read(textText.Text);
9 }
10
11 ///
12 ///发音线程,来管理发音;如果,多处发音,可以创建多个;
13 ///backgroundWorker的dowork事件,双击backgroundWorker1, 即可自动生成
14 ///
15 ///
16 ///
17 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
18 {
19 SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
20 SpVoice voice = new SpVoice();
21 voice.Rate = 0;//调整发音语速,可以为负数,如-3,0,5
22 voice.Speak(e.Argument.ToString(), spFlags);
23
24 }
25
26 ///
27 /// 发音
28 ///
29 ///
30 void read(object content)
31 {
32 try
33 {
34 backgroundWorker1.RunWorkerAsync(content);
35 }
36 catch (Exception er)
37 {
38 MessageBox.Show(er.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
39 }
40 }
这里介绍win8程序里面的发音这个就不多做介绍了
我找了一下提供的这些版本都没有winrt的支持组件所以这里就不用微软的tts来开发
我们用谷歌的翻译里面有个语音朗读功能
用谷歌的发音api
http://translate.google.cn/translate_tts?ie=UTF-8&q="+sound+"&tl=zh-CN&total=1&idx=0&textlen=3&prev=input
这个api默认传递的参数utf-8编码
由于winrt的程序默认编码就是utf-8不用费心思去转码直接上就Ok
请求回来的文件是mp3格式文件所以用mediaElement这个控件直接去请求加载它就ok方面简单
不过你实例化了这个对象之后要记住把它加入到xaml对象中去简单好用大家可以自己试试吧
缺点:需要联网发包。如果大家觉得不好就等微软出新版本或用别的方法
优点:所有平台都可以使用不受限制,所有类型的软件也可以使用
只起抛砖引玉:如果大家有好的方法还可以交流!!!
示例代码:
View Code
public class MediaHelper
{
private MediaElement mdeia;
public MediaHelper(string sound,MediaElement m)
{
mdeia = m;
mdeia.Source = new Uri("http://translate.google.cn/translate_tts?ie=UTF-8&q="+sound+"&tl=zh-CN&total=1&idx=0&textlen=3&prev=input");
}
public void play()
{
mdeia.AutoPlay=true;
mdeia.Volume = 10;
mdeia.Play();
}
}
同时这个控件还可以播放网络和本地的视频等,多媒体很强大,大家可以继续研究研究
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com