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

【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这个命名空间。
// 定义类成员部分
bak
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;
} // 正在识别时调⽤的⽅法
接下来的⼯作
未成年工特殊保护规定1. 将简单的语⾳合成和识别结合,形成⼀个问答系统。
2. 能够对⽤户的回答进⾏情感分析并显⽰结果。
3. (可选)将⽤户的回答与量表上问题答案做匹配,最终给出量表评分。
总结
本次demo⽤到的原理其实⼗分简单,但作为第⼀次接触C#并且C++的⼀些写法忘记很多的⼩⽩,还需要花⼀定的时间做。特别是在搜索时,答案全是如何调⽤⽹络接⼝进⾏识别,基本没有⽤⾃带库的,所以这⽅⾯也是花了⼀定的时间。
如果⼤家有更好的C#⽅⾯的建议也请多多指正!

本文发布于:2024-09-23 06:24:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/203112.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:识别   问题   合成   回答
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议