文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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();

        }    


    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯