C# 语音识别

2023-11-17

在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音。

以上,当我说"你好",显示"Darren",我说"age",显示"永远21"。如何做呢?

首先要开启电脑的语音识别功能。

右键电脑右下方的扬声器,选择"录音设备"。

点击默认的"麦克风",再点击左下角的"配置"按钮。
在这里插入图片描述
点击"打开语音识别"。
在这里插入图片描述
一系列简单设置后,屏幕上出现如下:
在这里插入图片描述
在VS中创建一个窗体应用程序,界面上有一个RichTextBox和2个Button。

添加System.Speech的引用。

编写如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech;
using System.Speech.Recognition;

namespace SpeechDemo
{
    public partial class Form1 : Form
    {

        SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            recEngine.RecognizeAsync(RecognizeMode.Multiple);
            button2.Enabled = true;
            button1.Enabled = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            recEngine.RecognizeAsyncStop();
            button2.Enabled = false;
            button1.Enabled = true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Choices preCmd = new Choices();
            preCmd.Add(new string[] { "你好", "你", "age", "啦", "A"});
            GrammarBuilder gb = new GrammarBuilder();
            gb.Append(preCmd);
            Grammar gr = new Grammar(gb);
            recEngine.LoadGrammarAsync(gr);
            recEngine.SetInputToDefaultAudioDevice();
            recEngine.SpeechRecognized += recEngine_SpeechRecognized;
        }

        void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            switch (e.Result.Text)
            {
                case "你":
                    richTextBox1.Text += "\n号";
                    break;
                case "你好":
                    richTextBox1.Text += "\nDarren";
                    break;
                case "age":
                    richTextBox1.Text += "\n永远21";
                    break;
                case "啦":
                    richTextBox1.Text += "\n听见了";
                    break;
                case "A":
                    richTextBox1.Text += "\n听见了";
                    break;
            }
        }
    }
}

具体验证效果如下图所示
在这里插入图片描述
源码下载地址
参考下载地址:SpeechDemo.rar: https://url98.ctfile.com/f/19054198-584153167-a01935?p=1746 (访问密码: 1746)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 语音识别 的相关文章

  • 在 C# 中转换 VbScript 函数(Right、Len、IsNumeric、CInt)

    同样 我在 VbScript 中得到了以下代码 您能建议一下 C 中的等效代码吗 Function GetNavID Title getNavID UCase Left Title InStr Title 1 End Function 我已
  • 如何从更高级别启动用户级别的 Exe

    我希望一个进程始终在用户级别运行 当它由以管理员级别运行的安装程序 自定义 而不是 msi 启动时 或者当用户登录时 环顾四周 我不确定这是否可能 最简单的方法是有 2 个进程 一种是普通用户 它启动提升 管理进程 然后管理进程可以使用 I
  • 在单个 C# 泛型方法中返回可为 null 和 null?

    C 泛型方法是否可以返回对象类型或 Nullable 类型 例如 如果我有一个安全的索引访问器List我想返回一个值 稍后我可以使用以下任一方法检查该值 null or HasValue 目前我有以下两种方法 static T SafeGe
  • MigraDoc 项目符号列表(漏洞)

    在我的解决方案中 我在 PDF 文件中使用项目符号列表 它看起来像这样 Solcellepaneler kr ver hverken autoriseret service eller tidskr vende vedligehold So
  • 确保 unsigned int/long 始终在 C# 中的检查上下文中执行

    有没有人觉得奇怪 uint 和 ulong 的默认上下文是未检查的 而不是检查的 因为它们旨在表示永远不能为负的值 因此 如果某些代码试图违反该约束 在我看来 自然且首选的行为是抛出异常 而不是返回最大值 这很容易使重要数据处于无效状态并且
  • 如何正确实现带有 close 方法的处置模式(CA1063)

    框架设计指南 第二版 第 327 页 说 考虑提供方法Close 除了Dispose 如果接近 是该领域的标准术语 这样做时 重要的是使 Close 实现与Dispose并考虑实施IDisposable Dispose方法明确 因此 按照提
  • 如何有效地左填充字节数组

    假设我有一个数组 LogoDataBy byte 0x00000008 0x00000000 0x41 0x00000001 0x42 0x00000002 0x43 0x00000003 0x44 0x00000004 0x31 0x00
  • MouseDoubleClick 事件不会冒泡

    我的场景经过简化 我有一个包含员工行的 ListView 在每个员工行中 都有 增加 和 减少 按钮来调整他的工资 假设在我的程序中 双击 员工 行意味着 解雇此人 The problem是当我快速单击 增加 时 这会触发 ListView
  • 等于方法实现助手 (C#)

    每次我编写一些数据类时 我通常都会花很多时间编写 IEquatable 实现 我写的最后一堂课是这样的 public class Polygon public Point Vertices get set 实施 IEquatable 是一项
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • Apple IOS 上的 C# 应用程序 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有基于 C Net 的应用程序 有什么方法可以在 Apple IOS 上运行这些应用程序吗 我没有资
  • 获取进程的所有 DLL

    我想获取为给定进程加载的所有 dll 的列表 我目前正在使用 NET框架4 0 我知道有一个bug https connect microsoft com VisualStudio feedback details 546430 syste
  • 使用 OpenSSL 库在 C++ 中生成 SHA 哈希值

    如何使用以下命令生成 SHA1 或 SHA2 哈希值OpenSSL https openssl org图书馆 我搜索了谷歌 找不到任何函数或示例代码 从命令行来看 很简单 printf compute sha1 openssl sha1 您
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • 扩展一个类

    编辑回答 虽然我最初的问题并没有完全按照康拉德 鲁道夫提供的答案所解决的方式解释我的需求 但他 无意或有意 基本上为我写了我想写的内容 类本身不会被扩展 但通过使类了解新函数来扩展其功能 这些新函数允许它 类 处理更广泛的问题 我非常感谢您
  • 如何在PropertyGrid中自定义绘制GridItem?

    我想以与所有者在 ListView 详细信息 和其他控件中绘制项目类似的方式在 PropertyGrid 中绘制属性值 如果将属性声明为 Color 类型 则其值将使用字符串描述旁边的颜色样本来绘制 如果属性是图像类型 则在字符串描述旁边绘
  • 为什么 g++ 在编译的二进制文件中存储类名?

    我注意到如果我跑strings在我编译的程序上g 输出包含它使用的各种类的名称 该程序是用 O3并且没有 g or p 并且当我剥离二进制文件时 类名仍然存在 我想知道为什么有必要g 将此信息存储在二进制文件中 出现的类名似乎都是使用虚函数
  • 有没有办法将复选框列表绑定到 asp.net mvc 中的模型

    我在这里寻找一种快速简便的方法来在模型中发生回发时绑定复选框列表项的列表 显然现在常见的做法似乎是这样的form GetValues checkboxList 0 Contains true 这看起来很痛苦而且不太安全 有没有一种方法可以绑
  • 在 C# 中设置风扇速度

    我知道以前有人问过这个问题 但我似乎无法让它发挥作用 我已调用以下内容 using System Management using System Management Instrumentation using System Runtime
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6

随机推荐

  • Windows 使用nvm安装多个版本的node.js

    在 Windows 上 首先你需要安装 Node Version Manager 请访问 nvm windows GitHub 页面并下载最新版本的 nvm setup zip 文件 解压并运行里面的安装程序 安装完成后 你可以按照以下步骤
  • 《算法图解》读书笔记(二)

    第六章 图 广度优先搜索 1 解决最短路径问题 shortest path problem 的算法被称为广度优先搜索 breadth first search 2 图由节点 node 和边 edge 组成 一个节点可能与众多节点直接相连 这
  • conda 常用命令

    一 虚拟环境创建 删除 查看 创建 创建一个名为env name的虚拟环境 并指定python版本为3 8 且不需要询问 yes or no 直接创建 conda create n env name python 3 8 y 例如 cond
  • 深度学习怎么学?

    推荐这本小白看的 深度学习 从基础到实践 上下册 深度学习 从基础到实践 上下册 深入浅出的讲述了深度学习的基本概念与理论知识 不涉及复杂的数学内容 零基础小白也能轻松掌握 本书从基本概念和理论入手 通过近千张图和简单的例子由浅入深地讲解深
  • 微信小程序 wx:for 点击事件

    为列表的每个小项都添加点击事件 并获得每个项的一些数据 wxml中 lt view wx for array gt lt view bindtap click data name item name gt item name click是点
  • react引入Ant Design

    需要先安装 zeit next css 不然不能识别css文件 然后根目录下创建next config js进行配置 const withCss require zeit next css if typeof require undefin
  • 几种ajax传参数到后台获取的方法

    传参 ajax type post dataType json url DataSourceCheck refreshDataSource data dataSourceId dsId success function data 你的逻辑
  • 10、组合模式

    文章目录 概念 demo 概念 用于树形结构 这种类型的设计模式属于结构型模式 组合模式使得用户对单个对象和组合对象的使用具有一致性 demo import java util ArrayList 1 Component抽象构件角色 定义参
  • 情感分析中的深度学习

    一 情感分析中的基本模型 1 前馈神经网络 FNN 不考虑输入数据具备的任何特定结构常与正则化结合使用 主要解决问题 神经网络有大量隐藏层 隐藏层非常难以训练 梯度消失和过拟合问题 FNN 由一个输入层 一个 浅层网络 或多个 深层网络 因
  • 商品销售管理系统设计论文--毕业设计

    内容摘要 在科学技术日新月异的今天 计算机已逐步渗入各个领域 无论是学习 工作 还是娱乐都普及了计算机的使用 而随着网络的开通 并与Internet连接更让我们社会成为信息化的时代 人们不再需要浪费太多的时间去手工的获得信息 只要做在家中轻
  • 【Mac】电脑维修 换电池之被坑记

    文章目录 1 概述 1 概述 今天遇到一个糟心的事情 我的mac电脑 电池坏了 想换电池 然后以前查了一下 发现要1000块 因为电池没坏透彻 就没去换 这次想去换了 然后当时脑子蒙了 直接去店里 然后问了一下换电池400块 但是要订购电池
  • Hadoop在Windows10下的安装及简单操作

    Hadoop环境搭建 准备工作 首先从网站https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html下载匹配Windows x64的J
  • java游戏主角叶开,逸之老板的天机城与叶开大神女魃墓,决赛场上谁更抢眼?...

    精锐组 逸之老板的天机城与叶开大神女魃墓 决赛场上谁更抢眼 逸之老板150级无级别刀 出场效果到底是不是很一般 吃货分队 逸之的天机城在精锐组也算是佼佼者 扛上150级无级别刀 如虎添翼 在决赛中 变身机甲 对方宝宝根本招架不住 摸一下就飞
  • 微信小程序上线后无法调用后端接口

    我们要在小程序设置里把request请求域名加上保存就可以了
  • 生信入门(二)——使用limma、Glimma和edgeR,RNA-seq数据分析

    生信入门 二 使用limma Glimma和edgeR RNA seq数据分析 文章目录 生信入门 二 使用limma Glimma和edgeR RNA seq数据分析 一 简介 二 数据背景 三 初始配置 四 数据整合 1 数据下载 2
  • Vue使用axios实现跨域请求

    在前后端分离的项目中 关键的一步就是能够进行跨域请求 可以通过前端发送请求访问不同端口的服务器获取数据 为了解决这一问题使用的是axios来实现跨域请求 一 安装axios 使用npm安装 npm install axios save 首先
  • less 命令详解

    less 命令详解 less 与more命令类似 但可以通过翻页键查看上下页的内容 b lt 缓冲区大小 gt 设置缓冲区的大小 e 当文件显示结束后 自动离开 f 强迫打开特殊文件 例如外围设备代号 目录和二进制文件 g 只标志最后搜索的
  • 通过域策略登录脚本收集域用户的登录/注销信息

    1 我们需要在域控制器上新建一个隐藏的共享文件夹 shoujifile 专门用于存放收集到的资料 如下图所示 登录和注销脚本代码如下 收集域用户注销计算机信息 On Error Resume Next strComputer Set lia
  • IDEA中部署git

    IDEA中使用 git 1 在Idea中配置 git 安装好 IntelliJ IDEA后 如果Git 安装在默认路径下 那么 idea 会自动找到 git 的位置 如果更改了 Git 的安装位置则需要手动配置下Git 的路径 选择 Fil
  • C# 语音识别

    在 NET4 0中 我可以借助System Speech组件让电脑来识别我们的声音 以上 当我说 你好 显示 Darren 我说 age 显示 永远21 如何做呢 首先要开启电脑的语音识别功能 右键电脑右下方的扬声器 选择 录音设备 点击默