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

C# windows语音识别与朗读示例,供大家参考,具体内容如下
本示例通过windows语音识别功能进行语音识别和文本朗读。
打开windows麦克风,点击start按键,大声朗读 “中国”、“美国”、“英国”,识别成功将发出“嘟”的提示音并朗读对应结果。
用到的语音识别模块包括:

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

动态连接库文件在我的资源中下载.System.Speach.dll
示例界面如下:
C#|C# windows语音识别与朗读实例
文章图片

程序源码如下:
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#|C# windows语音识别与朗读实例】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读