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

        }    

    }
}

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

(0)

相关推荐

  • C#中调用SAPI实现语音识别的2种方法

    通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR.下面我们就介绍并贴出相关代码.主要有两种方式: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑.(注意要引入系统组件SpeechLib,XP要安装识别引擎) 2.使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑. 其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单. 使用第一种方式,需要注意在COM

  • C#语音识别用法实例

    本文实例讲述了C#语音识别用法.分享给大家供大家参考.具体分析如下: C#可以利用微软操作系统自动的语音识别功能,读取信息.步骤如下: 1.  在项目中添加  ""  引用 2.  引入命名空间: 复制代码 代码如下: using SpeechLib; 3.  读取的代码: 复制代码 代码如下: SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;     SpVoice voice = new SpVoic

  • c# 开发语音识别程序

    AI 平台:http://ai.baidu.com/ 开发工具:vs 2017 准备工作 1.注册百度账号 2.登录百度 AI 开发平台,http://ai.baidu.com/ 3.在控制台点击"百度语音"服务,点击"创建应用",填写必填项,勾选额外接口,点击立即创建获取秘钥.在应用列表中查看自己的id 创建自己的项目 1.新建项目 打开 vs2017,点击文件,新建项目,选择 visual C# --> windows 桌面 --> windows

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

    C# windows语音识别与朗读示例,供大家参考,具体内容如下 本示例通过windows语音识别功能进行语音识别和文本朗读. 打开windows麦克风,点击start按键,大声朗读 "中国"."美国"."英国",识别成功将发出"嘟"的提示音并朗读对应结果. 用到的语音识别模块包括: using System.Speech.Recognition; using System.Speech.Synthesis; 动态连接库文件在

  • python打开windows应用程序的实例

    可以加上时间判断,让程序在固定的时间启动. #coding=utf-8 #!/usr/bin/python import os def open_app(app_dir): os.startfile(app_dir) if __name__ == "__main__": app_dir = r'C:\Program Files\Sublime Text 2\sublime_text.exe' open_app(app_dir) 以上这篇python打开windows应用程序的实例就是小

  • 通过python实现windows桌面截图代码实例

    这篇文章主要介绍了python实现windows桌面截图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码实例 import time import win32api import win32con import win32gui import win32ui def get_desk(): # 获取桌面 hdesktop=win32gui.GetDesktopWindow() # 分辨率适配 width=win32api.GetSy

  • windows下Mysql多实例部署的操作方法

    当存在多个项目的时候,需要同时部署时,且只有一台服务器时,哪么就需要部署Mysql多个实例,原理很简单,多个mysql服务运行使用不同的配置及数据管理. 具体操作如下: 1.找到mysql.ini配置并复制为一个新的文件,如mysql_dev.ini 2.修改如下配置 [mysqld] port=3308 basedir=D:/phpstudy_pro/Extensions/MySQL5.7.26/ datadir=D:/phpstudy_pro/Extensions/MySQL5.7.26/d

  • c#创建windows服务入门教程实例

    用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下. 每个服务都需要继承自ServiceBase类,并重写相应的启动.暂停.停止等方法. windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装. 首先,用vs创建一个win

  • java实现仿windows 字体设置选项卡实例

    想用java做一个像windows里一样的txt编辑软件,涉及到字体设置选项卡,在网上找了很久都没找到,就生气啦自己写一个,现在贴这里分享一下,下次再遇到这样的问题就不用自己亲自打代码啦! package 实验; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt

  • C#实现的Windows剪贴板监视器功能实例【附demo源码下载】

    本文实例讲述了C#实现的Windows剪贴板监视器功能.分享给大家供大家参考,具体如下: Windows剪贴板 剪贴板(ClipBoard)是内存中的一块区域,是Windows内置的一个非常有用的工具,通过小小的剪贴板,架起了一座彩桥,使得在各种应用程序之间,传递和共享信息成为可能.然而美中不足的是,剪贴板只能保留一份数据,每当新的数据传入,旧的便会被覆盖. 相关Windows API 最主要的是SetClipboardViewer,每当剪贴板的内容发生变化时,该函数通过WM_DRAWCLIPB

  • 使用Python开发windows GUI程序入门实例

    今天终于可以用wxPython开发GUI程序了,非常高兴.把其中的一些注意点写下来以供参考.在windows XP平台下,首先需要做以下环境的配置: 1. 首先是安装python ,安装完之后将python/bin所在目录添加到path中. 2. 安装wxPython, 此时要注意wxPython的版本要与前面python的版本一致. 3. 安装py2exe, 这是windows平台下一个非常好的python程序发布工具,可以将python程序编译成exe而脱离python环境执行.做完上面的安

  • 用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)

    Node.JS是一个控制台程序,如果想要从Node.JS弹出Windows系统提示框的话,有很多方法可以实现.比如借助 electron 或 node-webkit: 在Electron中弹出消息框 Electron与Windows的接口非常完善,可以调用各种Window原生机制,如创建系统托盘图标.打开文件夹选择框等.这里使用dialog,即可弹出系统消息提示框: const { app , BrowserWindow , Menu , Tray , shell , dialog , ipcM

  • windows、linux下打包Python3程序详细方法

    最近项目中需要Python的打包,看到网上也没有很详细的资料,于是做了一些示例程序.研究了一下,Python如何在Windows和Linux上打包 背景 Python版本:3.6. Windows版本:Windows 10 家庭中文版 64-bit (10.0, Build 18362) (18362.19h1_release.190318-1202) Linux版本:centos7. Python打包工具 今天没时间研究cx_Freeze,先研究了一下PyInstaller. py2exe p

随机推荐