C# windows语音识别与朗读实例

这篇文章主要为大家详细介绍了C# windows语音识别与朗读实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C# windows语音识别与朗读示例,供大家参考,具体内容如下

本示例通过windows语音识别功能进行语音识别和文本朗读。

打开windows麦克风,点击start按键,大声朗读 “中国”、“美国”、“英国”,识别成功将发出“嘟”的提示音并朗读对应结果。

用到的语音识别模块包括:

 using System.Speech.Recognition; using System.Speech.Synthesis;

动态连接库文件在我的资源中下载.

示例界面如下:

程序源码如下:

 using System; using System.Runtime.InteropServices; using System.Speech.Recognition; using System.Speech.Synthesis; using System.Threading; using System.Windows.Forms; namespace Test { public partial class FormVoiceControl : Form { static SpeechSynthesizer SS = new SpeechSynthesizer(); private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine(); //语音识别模块 private bool SRE_listening = false; private int wordid; private string shibie; [DllImport("kernel32.dll")] public static extern bool Beep(int freq, int duration); public FormVoiceControl() { InitializeComponent(); } public void InitVoice()  //语音识别初始化 { //SS.SelectVoice("lily"); SRE.SetInputToDefaultAudioDevice();  // 默认的语音输入设备,也可以设定为去识别一个WAV文 GrammarBuilder GB = new GrammarBuilder(); GB.Append(new Choices(new string[] { "中国", "美国", "英国"})); DictationGrammar DG = new DictationGrammar(); Grammar G = new Grammar(GB); G.SpeechRecognized += new EventHandler(G_SpeechRecognized);  //注册语音识别事件 SRE.EndSilenceTimeout = TimeSpan.FromSeconds(2); SRE.LoadGrammar(G); } void G_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { Beep(500, 500);//已识别提示音 string result = e.Result.Text; switch (result) { case "中国": shibie = "中国:五星红旗"; choice(0); break; case "美国": shibie = "美国:星条旗"; choice(1); break; case "英国": shibie = "英国:米字旗"; choice(2); break; } } private void Button1_Click(object sender, EventArgs e) { if (SRE_listening == false) { button1.Text = "stop"; SRE.RecognizeAsync(RecognizeMode.Multiple); } else { button1.Text = "start"; SRE.RecognizeAsyncStop(); } lblanswer.Text = ""; SRE_listening = !SRE_listening; } private void choice(int id) { wordid = id; Thread t1; Thread t2; t1 = new Thread(new ThreadStart(ShowAnswer)); t1.Start(); t1.Join(); t2 = new Thread(new ThreadStart(SpeekAnswer)); t2.Start(); } void ShowAnswer()  //线程 { MethodInvoker mi = new MethodInvoker(this.dosomething); this.BeginInvoke(mi); } void dosomething() { lblanswer.Text = shibie; } void SpeekAnswer()  //线程 { switch (wordid) { case 0: SS.Speak("五星红旗"); break; case 1: SS.Speak("星条旗"); break; case 2: SS.Speak("米字旗"); break; } } private void FormVoiceControl_Load(object sender, EventArgs e) { InitVoice(); } } }

以上就是C# windows语音识别与朗读实例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程