这篇文章主要为大家详细介绍了C# windows语音识别与朗读实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C# windows语音识别与朗读示例,供大家参考,具体内容如下
本示例通过windows语音识别功能进行语音识别和文本朗读。
打开windows麦克风,点击start按键,大声朗读 “中国”、“美国”、“英国”,识别成功将发出“嘟”的提示音并朗读对应结果。
用到的语音识别模块包括:
using System.Speech.Recognition;
using System.Speech.Synthesis;
动态连接库文件在我的资源中下载.System.Speach.dll
示例界面如下:
程序源码如下:
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<SpeechRecognizedEventArgs>(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语音识别与朗读实例
				
        
 
            
        
             猜你喜欢
        
	     - 如何使用C# 捕获进程输出 2023-03-10
 - WPF使用DrawingContext实现绘制刻度条 2023-07-04
 - user32.dll 函数说明小结 2022-12-26
 - Oracle中for循环的使用方法 2023-07-04
 - Unity3D实现渐变颜色效果 2023-01-16
 - c# 模拟线性回归的示例 2023-03-14
 - Unity Shader实现模糊效果 2023-04-27
 - .NET CORE DI 依赖注入 2023-09-27
 - 在C# 8中如何使用默认接口方法详解 2023-03-29
 - C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
 
						
						
						
						
						
				
				
				
				