【C#】基于System.Speech库实现语音合成与语音识别
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma.
·
假期里要完成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#方面的建议也请多多指正!
更多推荐
已为社区贡献1条内容
所有评论(0)