C#添加语音识别

unity 音频和文字转换工具分享 在C#中实现离线语音转文字(Speech to Text),可以使用一些本地库,如Microsoft的`System.Speech`,或集成其他第三方的本地库,如Vosk或CMU Sphinx。- 下载Vosk语言模型(例如vosk-model-small-cn):[Vosk Model](https://alphacephei.com/vosk/models)- 下载Vosk的C#库:[Vosk API C# bindings](https://alphacephei.com/vosk/) 阅读详情

想要在C#中实现语音识别或控制功能,可以通过微软提供的 System.Speech来实现。
下面通过一个例子讲解如何实现语音识别并控制程序执行操作。

一、安装System.Speech包

都做到这个功能了,应该不需要讲如何下载包了吧。
为了加深回忆,这里就简单描述一下下载过程:右键项目选择*“管理NuGet程序包”*,搜索System.Speech点击安装即可。

二、自由识别

好吧,直接上代码

        /// <summary>
        /// 初始化语音输入
        /// </summary>
        private void InitializeSpeech()
        {
            try
            {
                // 指定中文识别
                recognizer = new SpeechRecognitionEngine(new CultureInfo("zh-CN"));

                // 自由说话(听写模式)
                recognizer.LoadGrammar(new DictationGrammar());

                // 设置麦克风
                // 这里是默认麦克风,如果识别不上可以看看系统是否限制了桌面应用使用麦克风
                recognizer.SetInputToDefaultAudioDevice();

                // 注册事件
                recognizer.SpeechRecognized += Recognizer_SpeechRecognized;

                // 开始识别
                // RecognizeMode.Multiple支持连续识别
                recognizer.RecognizeAsync(RecognizeMode.Multiple);

                MessageBox.Show("语音识别已启动!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化失败:" + ex.Message);
            }
            
        }

        private void Recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            string command = e.Result.Text;
            Console.WriteLine("识别到命令: " + command);
            // 这里就可以对识别到的命令进行操作啦
            // 需要多说的一点是如果是进行UI操作,记得上UI线程,比如这样 
            this.Invoke(new Action(() =>
            {
                textBoxVoice.Text = command; // textBoxVoice记得自己定义啊
            }));    
                  
        }

是不是看代码的时候觉得很简单,建议不要直接复制,自己对着敲上去印象会比较深刻。

三、指定命令

指定命令,什么是指定命令呢?就是识别指定内容咯!
二话不说上代码!

        private void InitializeSpeech()
        {
            try
            {
                // 指定中文识别
                recognizer = new SpeechRecognitionEngine(new CultureInfo("zh-CN"));

                // 命令词
                Choices commands = new Choices();
                commands.Add(new string[]
                {
                    "打开窗口",
                    "关闭窗口",
                    "显示消息",
                    "退出程序"
                });

                // 语法构建
                GrammarBuilder gb = new GrammarBuilder();
                gb.Append(commands);

                Grammar grammar = new Grammar(gb);
                recognizer.LoadGrammar(grammar);

                // 设置麦克风
                recognizer.SetInputToDefaultAudioDevice();

                // 注册事件
                recognizer.SpeechRecognized += Recognizer_SpeechRecognized;

                // 开始识别
                recognizer.RecognizeAsync(RecognizeMode.Multiple);

                MessageBox.Show("语音识别已启动!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("初始化失败:" + ex.Message);
            }
            
        }

区别在哪里呢?区别就是语法构建这里不一样,其实也没多大区别。
然后对识别到的内容进行逻辑操作。

private void Recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    string command = e.Result.Text;
    Console.WriteLine("识别到命令: " + command);

    switch (command)
    {
        case "打开窗口":
        //自己写对应逻辑即可
            break;
        case "关闭窗口":
            break;
        case "显示消息":
            break;
        case "退出程序":
            break;
        default:
            break;
    }
}

四、释放资源

为了避免占用和各种乱七八糟的BUG,关闭窗口时要记得释放资源

        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            if (recognizer != null)
            {
                recognizer.RecognizeAsyncStop();
                recognizer.Dispose();
                recognizer = null;
            }
            base.OnFormClosing(e);
        }

OK,感谢看完全文!比心!

C# 语音识别 C#桌面程序希望使用语音识别 将语音转成文字有很多方法 使用讯飞变得比较麻烦,主要是因为所有平台都需要用sdk,不知道是不是不能用web调用(没有研究,按道理应该有。。。) 下面在使用百度的语音识别来完成这个工作,主要代码来自网友,我写成了类(具体从哪里来的我忘了,在此感谢) 下面是我改写的音频转文字的类,由于返回json,所以用了json.net来解析返回结果,类前面的token和 阅读详情

相关推荐

c# 实现初级的语音识别

目前支持中文的Speech SDK最高版本为Windows平台下的SAPI 5.1(),本文介绍如何在.net平台下利用SAPI5.1开发中文语音应用程序。 1. SAPI.51 SDK浅析以及安装 SAPI SDK是微软公司免费提供的语音应用开发工具包,这个SDK中包含了语音应用设计接口(SAPI)、微软的连续语音识别引擎(MCSR)以及微软的语音合成(TTS)引擎等等。目前的5.1版本一共可以

心清如水 择木而栖 1万+

C#实现语音播报

1、首先要安装语音包Microsoft Speech SDK 5.1。2、引用 Interop.SpeechLib.dll。3、然后以下代码即可。

weixin_40029679的博客 2393

Hololens Unity 开发中的语音识别

通过导入Microsoft.MixedReality.Toolkit.Unity插件并编写相应的逻辑,我们可以实现基本的语音识别功能。在Hololens Unity开发中,语音识别是一项重要的功能,它使用户能够通过语音指令与Hololens设备进行交互。在Unity中创建一个C#脚本,命名为SpeechRecognition.cs(或您喜欢的任何名称),并将其附加到包含SpeechInputHandler组件的对象上。请注意,以上只是一个简单的示例,您可以根据您的应用程序需求进行扩展和修改。

WmqApps的博客 495

C# 实现语音聊天

c#教程https://www.xin3721.com/eschool/CSharpxin3721/ 一、语音聊天说专业点就是即时语音,是一种基于网络的快速传递语音信息的技术,普遍应用于各类社交软件中,优势主要有以下几点: (1)时效性:视频直播会因为带宽问题有时出现延迟高的问题,而语音直播相对来说会好很多,延迟低,并且能够第·一时间与听众互动,时效性强。 (2)隐私性:这一点体现在何处,如主播不想暴露自己的长相,或者进行问题回答是,没有视频的话会让主播感到更安心,所以语音直播隐私性更强。 (3

chinaherolts2008的博客 1932

Unity VR开发中实现语音识别功能

接下来,编写C#脚本实现语音识别功能,并将其添加到VR场景中的游戏对象上。目前,市场上有许多可选择的语音识别服务,例如Google Cloud Speech-to-Text、Microsoft Azure Speech Services和IBM Watson Speech to Text等。在DictationResult事件中,我们可以获得语音识别的结果,并在这里处理识别结果。首先,您需要在Google Cloud平台上创建一个项目,并启用Speech-to-Text API。步骤4:编写语音识别代码。

WmqApps的博客 468

C# 与人工智能:如何为物联网设备添加智能语音控制功能

通过 C# 和人工智能技术,我们可以为物联网设备添加智能语音控制功能,从而提升用户的互动体验。语音识别、语音合成和自然语言处理技术使得用户可以通过自然的语音命令来控制设备。结合物联网的能力,我们可以实现远程控制、自动化管理等多种功能。在构建语音控制系统时,Azure Cognitive Services 提供了强大的语音识别和语音合成功能,而 C# 的灵活性使得设备控制和集成变得更加简便。通过不断优化和调整,我们可以为物联网设备带来更智能的语音控制体验。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 824

C#中进行语音播报的方式

在C#中进行语音播报的两种方式,其一调用文件夹下的”.wav“后缀音频文件,其二直接用读取输入文本。

PXLYC的博客 1380

从0到1,只需7步!C# 使用Vosk离线语音转文字全解析:比云端更安全、更快捷?

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀嘿,大家好!今天我们要一起探索一个非常酷炫的技术——如何在C#环境中利用Vosk库实现离线语音转文字。想象一下,如果你的应用程序可以在没有任何互联网连接的情况下准确地将用户的语音转换成文本,是不是听起来特别厉害呢?而且,这不仅能保护用户隐私,还能大大提高响应速度。那么问题来了:你知道怎么做吗?

java专栏 1559

使用sherpa-onnx给文字添加标点符号

本文介绍了在C#中实现ONNX标点符号添加功能的过程。作者发现ncnn框架不支持标点添加功能,于是参考ONNX示例实现了C#版本。通过创建OfflinePunctuation类,配置模型参数,并调用外部DLL接口,成功实现了文本标点添加功能。调试过程中遇到编码问题,经指点后通过设置系统UTF-8编码解决。该模型支持中英文混合文本,但默认输出中文标点。完整代码已开源在GitHub仓库中。

不忘初心 方得始终 1548

C#中的语音识别技术实现指南

本文还有配套的精品资源,点击获取 简介:语音识别技术是AI领域的重要分支,旨在将口语转化为文字或命令,以自然化人机交互。在C#项目中,可以通过微软Speech Platform SDK集成语音识别功能。该SDK支持多语言处理实时语音流和预录制音频,涉及初始化识别引擎、定义语法规则、事件处理、结果处理等关键步骤。在智能家居、智能助手等应用中广泛应用,并可通过语音合成技术实现完...

weixin_42577243的博客 2646

C#语音识别功能实现与示例

语音识别技术涉及了模式识别、声音处理、机器学习等多个学科领域,其核心目标是将语音信号准确地转换为文本或指令。这些转换能够被计算机系统所识别、处理并执行相应的任务。语音识别在智能家居、客服系统、语音助手等众多应用中扮演着关键角色。在语音识别应用中,Grammar是定义语音输入可能性的规则集合。它是一种模型,指导语音识别引擎如何从一系列可能的语音命令中解析出有效的命令。理解Grammar的概念对于构建一个高效、准确的语音识别系统至关重要,因为它直接影响到系统对用户的语音输入进行正确解读的能力。

weixin_42173218的博客 800

c#加入json库引用_C#语音对话控制PLC太香

大家都知道手机、车机、小爱同学、人机对话渗入大家的生活。那么工控领域C#上位机#和 #PLC#是不是也可以人机对话呢?今天我们用WPF实现一下。硬件:S7-1200软件:C#库文件:System.Speech.dllSystem.Speech.dll属性1.System.Speech.dll这个文件是windows系统自带的,我们添加引用即可2.开始撸代码 引用两个命名空间using System...

weixin_40008135的博客 345

椭圆 —— 从理论推导到最小二乘法拟合

前言 椭圆在高中数学里就开始提到,都是从标准方程开始如: x2a2+y2b2=1(a>b>0) \frac{x^2}{a^2}+\frac{y^2}{b^2}=1(a>b>0) a2x2​+b2y2​=1(a>b>0) 其中 aaa 为椭圆的长轴,bbb 为椭圆短轴。如长轴为 111 ,短轴为 0.50.50.5 的椭圆可以这样画出 ezplot('x^2/1^2 + y^2/0.5^2 = 1',[-1.5 1.5 -1 1]) grid on; 标准方程可以很方便

学徒浩子 2万+

unity编辑器使用-配套oculus创建全景视频-全景图片-手柄控制-调用外部接口-对接百度语音

这里写自定义目录标题官网地址说明unity编辑器使用创建项目制作全景视频添加图片添加文字C#控制手柄操作添加按钮(目前还存在问题,全景视频内缺少手柄对应的射线)调用外部接口对接百度语音识别某些名词/单词解释说明 官网地址 oculus官网:https://developer.oculus.com/ unity官网:https://docs.unity3d.com/cn/2018.4/Manual/VideoPanoramic.html 说明 Unity 是实时3D互动内容创作和运营平台 。包括游戏开发、

weixin_42845571的博客 1229

使用Label Studio标注车牌数据:YOLOv26模型训练指南

在计算机视觉领域,数据标注是模型训练的基础环节,直接影响最终模型的识别精度。Label Studio作为专业的标注工具,支持多种标注类型和格式导出,特别适合目标检测任务的数据准备。通过多边形标注技术,可以精确捕捉车牌的四个角点,生成旋转矩形框(OBB)标注数据,这种标注方式相比传统水平框能更好地处理倾斜车牌场景。标注完成后,数据可导出为YOLO格式,直接用于YOLOv26等先进目标检测模型的训练。在实际工程中,合理的标注策略和严格的质量控制能显著提升车牌识别模型在复杂场景下的鲁棒性,适用于智能交通、停车场管

chuozhi7142的博客 904

H2O到OmniH2O细节解读,人形机器人遥操作的技术演进与哲学

摘要:CMU何泰然团队相继发表的H2O和OmniH2O论文为人形机器人遥操作领域带来突破。H2O首创Sim-to-Data方法,通过形态/动作重定向和特权筛选处理人类动作数据,PPO算法实现基础控制。OmniH2O改进为教师-学生蒸馏框架,采用DAgger算法增强泛化能力,并消除对线速度输入的依赖。这两项工作从概念验证到工程落地,建立了一套完整的动作学习范式,为具身智能研究提供了重要参考。

CyanNoah的博客 1392

将sherpa-onnx嵌入unity中进行语音识别(ASR)

是一个开源项目,旨在提供离线的语音识别、文本转语音、说话人识别和语音活动检测(VAD)功能。该项目支持很多语言,其中包括C#,在原项目文件中有C#示例,因此可以移植到unity中,本文参考了sherpa-onnx的TTS实现和原项目C#示例代码。首先该项目进行语音识别需要语音识别大模型,我这边以模型作为测试,要下载该模型请自行去该项目的官方网址去下载。​然后需要导入相关dll库和lib库,我在原项目文件中找了很久都没找到,最后在他的示例项目中找到。现在万事俱备,接下来可以开始了。

fasd385sd的博客 4055

32位ALU设计(verilog实现)

32位ALU设计 ​ 算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。算术逻辑单元是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。 设计思路 设计实现 仿真测试 文章目录32位ALU设计一、设计

Destiny的博客 4万+

Kinnect开发——Visual Studio下开发流程

配置好环境,就可以在V

gaixm的专栏 1184

基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置

ProxmoxVE是一款套开源的虚拟化管理软件,用户可通过网页的方式来管理服务器上使用kvm以及lxc技术运行的虚拟机。同时提供了一些先进功能的支持,如集群、HA等。PVE虽然是开源,却是由一个商业公司在运营、更新以及维护。...

隔壁老瓦的专栏 6321

Ubutntu下使用realsense d435i(二):获取某二维像素点的三维坐标

00 准备工作 准备工作包括安装驱动以及pyrealsense2,具体可参考上一篇: Ubutntu下使用realsense d435i(一):准备工作以及安装pyrealsense2 https://blog.youkuaiyun.com/gyxx1998/article/details/121461293 01 通过二维像素点获得物体三维坐标 这个在上一篇已经介绍了代码: realsense d435i获取某像素点三维坐标(计算深度和点云两种方法) https://blog.youkuaiyun.com/gyxx1998/

gyxx1998的博客 9944

Using MSAgent

 In this piece of writing let us see some intriguing characters which speak to us using synthesized speech, recorded audio, or text in a cartoon word balloon. It even support for speech recognition.

sfz_roger的专栏 1068

在Ubuntu 20.04上,用EtherCAT Igh 1.6.2驱动高创BD3E伺服电机(附完整C代码)

本文详细介绍了在Ubuntu 20.04实时内核环境下,使用EtherCAT Igh 1.6.2主站驱动高创BD3E伺服电机的完整实现方案。从实时系统配置、伺服电机PDO映射到精确控制线程设计,提供了完整的C代码样例和实际项目中的调试技巧,帮助开发者实现工业自动化中的高精度运动控制。

weixin_30772105的博客 111

C#使用System.Speech制作语音提示功能

c#实现语音阅读以及文本转语音文件是基于c#的一个类库(SpeechSynthesizer )实现的 1.添加引用: 使用该类必须要添加引用using System.Speech.Synthesis 直接是无法添加引用的,先对项目进行添加引用 2.语音朗读 SpeechSynthesizer synth = new SpeechSynthesizer(); 美式发音,但只能读英文:sy...

cchoop的博客 6813

MATLAB R2023a下载链接及软件安装教程

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。a是上半年,b是下半年版本,但是有些小弱们总是觉得只要是b一定功能多,这不一定的,同年版本b比a可能稍微全点,不同年的,比如21b,22a,肯定22a要比21b版本高功能多了。10、选择目标文件夹,默认的是C盘,想修改的话可以单击【浏览】,然后单击【下一步】

qq_53545309的博客 5161

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: C#项目添加媒体资源
下一篇: C#中使用Whisper进行语音识别——识别本地wav音频文件
HQL_seven
博客等级 码龄6年 64粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQL_seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值