第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【C#】基于System.Speech库实现语音合成与语音识别

【C#】基于System.Speech库实现语音合成与语音识别

时间:2018-09-27 21:24:33

相关推荐

【C#】基于System.Speech库实现语音合成与语音识别

假期里要完成2个C#demo的制作,记录一下自己从无到有的学习过程。

本文主要实现了一个简单的语音合成和语音转文字的小程序。

语音合成的需求为:根据已有问卷上的问题进行语音提问。

语音识别的需求为:在提问之后对用户的回答进行实时的语音转文字。

由于目前还无法接入科大讯飞的接口,并且后续要涉及语音情感识别的内容,此处先练习使用Windows自带类库进行制作。本文demo的效果图如下:

点击`开始询问`按钮之后,首先将通过语音合成的形式提问问题一,之后用户开始回答,答案将实时的显示在上方的对话框中。点击`结束询问`按钮,语音播报“感谢您的配合……”之类的然后结束。

语音合成

主要用到System.Speech.Synthesis这个命名空间。

// 定义类成员部分private SpeechSynthesizer speechSyn = new SpeechSynthesizer(); //用于语音合成//绑定“开始询问”按钮的点击事件private void buttonStart_Click(object sender, EventArgs e){// 配置对象speechSyn.SetOutputToDefaultAudioDevice();// 事件处理方法speechSyn.SpeakCompleted += new EventHandler<SpeakCompletedEventArgs>(speakCompleted); // 可有可无,看个人需求//异步合成 因为之后会需要同时进行其他工作speechSyn.SpeakAsync("首先是抑郁症问题测试,将有20道题目,你需要根据实际情况如实回答。");}

语音识别

主要用到System.Speech.Recognition这个命名空间。

// 定义类成员部分private SpeechRecognitionEngine speechRec = new SpeechRecognitionEngine(); //用于语音识别//绑定点击事件private void buttonStart_Click(object sender, EventArgs e){// 配置对象speechRec.SetInputToDefaultAudioDevice(); //设置默认输入speechRec.LoadGrammar(new DictationGrammar()); //设置语法// 事件处理方法speechRec.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(speechRecognized); //事件处理方法处需要有对应的函数调用} void speechRecognized(object sender, SpeechRecognizedEventArgs e){textBox_main.Text = e.Result.Text;} // 正在识别时调用的方法

接下来的工作

将简单的语音合成和识别结合,形成一个问答系统。能够对用户的回答进行情感分析并显示结果。(可选)将用户的回答与量表上问题答案做匹配,最终给出量表评分。

总结

本次demo用到的原理其实十分简单,但作为第一次接触C#并且C++的一些写法忘记很多的小白,还需要花一定的时间做。特别是在搜索时,答案全是如何调用网络接口进行识别,基本没有用自带库的,所以这方面也是花了一定的时间。

如果大家有更好的C#方面的建议也请多多指正!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。