基于C#实现语音识别功能详解
作者:CoolDog 发布时间:2023-07-12 18:55:24
标签:C#,语音,识别
在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音。
以上,当我说"name",显示"Darren",我说"age",显示"永远21"。如何做呢?
首先要开启电脑的语音识别功能。
右键电脑右下方的扬声器,选择"录音设备"。
点击默认的"麦克风",再点击左下角的"配置"按钮。
在VS中创建一个窗体应用程序,界面上有一个RichTextBox和2个Button。
添加System.Speech的引用。
(PS:强调一下如果不打开语音识别功能,启动程序会报错:在此系统上语音识别不可用。找不到 SAPI 和语音识别引擎。)
编写如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Speech.Recognition;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsForms
{
public partial class Form1 : Form
{
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
public Form1()
{
InitializeComponent();
}
private void btnEnable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsync(RecognizeMode.Multiple);
btnDisable.Enabled = true;
}
private void Form1_Load(object sender, EventArgs e)
{
Choices preCmd = new Choices();
preCmd.Add(new string[] { "name", "age" });
GrammarBuilder gb = new GrammarBuilder();
gb.Append(preCmd);
Grammar gr = new Grammar(gb);
recEngine.LoadGrammarAsync(gr);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechHypothesized += RecEngine_SpeechHypothesized;
}
private void RecEngine_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e)
{
switch (e.Result.Text)
{
case "name":
txtList.Text += "\nDarren";
break;
case "age":
txtList.Text += "\n永远21";
break;
default:
break;
}
}
private void btnDisable_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsyncStop();
btnDisable.Enabled = false;
}
}
}
当然中文也是可以识别的,项目很有意思,大家可以调用语音播放进行播放回复内容。
来源:https://www.cnblogs.com/BFMC/p/16145587.html


猜你喜欢
- Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindServ
- 我们经常用简单数据类型,比如int作为泛型Dictionary<TKey,TValue>的key,但有时候我们希望自定义数据类型
- Springboot内部提供的事务管理器是根据autoconfigure来进行决定的。比如当使用jpa的时候,也就是pom中加入了sprin
- Android作为一个伟大的系统,自然提供了设置默认打开程序的实现.在这篇文章中,我会介绍如何在Android系统中设置默认的程序. 在设置
- 本文实例为大家分享了Android实现随手指移动小球的具体代码,供大家参考,具体内容如下这个随手指移动小球,首先要使用paint画笔在can
- 在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。
- 最近开发过程中遇到了一个问题,之前没有太注意,这里记录一下。我用的SpringBoot版本是2.0.5,在跟前端联调的时候,有个请求因为用户
- 一. SpringBoot中实现Session共享1. 创建web项目我们按照之前的经验,创建一个web程序,并将之改造成Spring Bo
- 本文实例讲述了C#实现绑定Combobox的方法。分享给大家供大家参考。具体实现方法如下:public class StaticVariab
- 1、引言在SpringMVC的使用中,后端与前端的交互一般是使用Json格式进行数据传输,SpringMVC的@Response
- 本文实例为大家分享了Java实现多任务执行助手的具体代码,供大家参考,具体内容如下1.多线程执行任务类package com.visy.th
- 本文实例讲述了Java使用自定义注解实现为事件源绑定事件 * 操作。分享给大家供大家参考,具体如下:一 定义注解import java.la
- 前言所谓的字符串其实就是一串连续的字符,它是由许多单个字符连接而成的。如多个英文字母所组成的一个英文单词。字符串中可以包含任意字符,这些字符
- 介绍非常简单的一个计时器,没有太多原理,我们直接上代码。先看课程目标课程目标就是一个简单的计时器,我们直接上使用示例吧界面里有一个计时器,4
- 需要用到的知识:注解、AOP、ExpiringMap(带有有效期的映射)我们可以自定义注解,把注解添加到我们的接口上。定义一个切面,执行方法
- 首先项目A,也就是SpringBOOT项目中使用redisTemplate 来做REDIS的缓存时,你会发现存到REDIS里边的KEY和VA
- 首先写布局文件activity_main.xml:<LinearLayout xmlns:android="http://s
- SchedulingConfigurer实现动态定时,导致ApplicationRunner无效问题描述当通过SchedulingConfi
- FeignClient重试机制造成的接口幂等性Feign源码分析,其实现类在 SynchronousMethodHandler,实现方法是p
- 在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。通常对象之间的比较可以从两个方面去看:第一个方面:对象的地址是否