当前位置: 首页 > news >正文

实时采集到的语音进行语音识别

要在.NET Framework 4.8中使用C#实现离线实时语音识别,可以使用开源库Vosk(支持离线ASR)配合音频处理库NAudio。

步骤 1:安装依赖库
1.1.
安装NuGet包:
- Install-Package NAudio(处理音频输入)
- Install-Package Vosk(离线语音识别引擎)
2.2.
下载语音模型:
- 前往 Vosk Models 下载适合的模型(如小型英文模型 vosk-model-small-en-us-0.15)。
- 解压模型到项目目录(如 Models/vosk-model-small-en-us-0.15)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NAudio.Wave;
using Vosk;
using System.Windows.Forms;
namespace 语音识别
{
public class RealTimeSpeechRecognizer
{private readonly VoskRecognizer _recognizer;private readonly WaveInEvent _waveIn;private readonly RichTextBox _rtb;public RealTimeSpeechRecognizer(string modelPath, RichTextBox rtb){_rtb = rtb;// 初始化VoskModel model = new Model(modelPath);_recognizer = new VoskRecognizer(model, 16000.0f);_recognizer.SetWords(true);// 初始化音频输入_waveIn = new WaveInEvent{WaveFormat = new WaveFormat(16000, 16, 1),DeviceNumber = 0};_waveIn.DataAvailable += OnAudioDataAvailable;}public void StartListening() => _waveIn.StartRecording();public void StopListening() => _waveIn.StopRecording();// 解析JSON结果(兼容部分结果)private string ParseJsonResult(string json, bool isPartial = false){dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);return isPartial ? obj.partial : obj.text;}// 线程安全更新RichTextBoxprivate void ShowText(string text){if (_rtb.InvokeRequired){_rtb.BeginInvoke(new Action<string>(ShowText), text);}else{_rtb.AppendText(text);_rtb.ScrollToCaret();}}// 其他字段和构造函数保持不变...private string _lastPartialText = string.Empty;private void OnAudioDataAvailable(object sender, WaveInEventArgs e){if (_recognizer.AcceptWaveform(e.Buffer, e.BytesRecorded)){string result = ParseJsonResult(_recognizer.Result());ClearLastPartial(); // 清理临时部分AppendFinalText(result);}else{string partial = ParseJsonResult(_recognizer.PartialResult(), isPartial: true);UpdatePartialText(partial);}}private void UpdatePartialText(string newPartial){if (newPartial == _lastPartialText) return;// 在主线程更新UI_rtb.BeginInvoke(new Action(() =>{int selectionStart = _rtb.TextLength - _lastPartialText.Length;// 删除旧临时内容if (selectionStart >= 0 && _lastPartialText.Length > 0){_rtb.Select(selectionStart, _lastPartialText.Length);_rtb.SelectedText = "";}// 追加新内容_rtb.AppendText(newPartial);_rtb.ScrollToCaret();// 更新临时记录_lastPartialText = newPartial;}));}private void AppendFinalText(string text){_rtb.BeginInvoke(new Action(() =>{_rtb.AppendText(text + "\n");_lastPartialText = string.Empty; // 重置临时部分}));}private void ClearLastPartial(){if (string.IsNullOrEmpty(_lastPartialText)) return;_rtb.BeginInvoke(new Action(() =>{int start = _rtb.TextLength - _lastPartialText.Length;if (start >= 0){_rtb.Select(start, _lastPartialText.Length);_rtb.SelectedText = "";}}));}
}}
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;
namespace 语音识别
{
public partial class Form1 : Form
{
private RealTimeSpeechRecognizer _recognizer;
public Form1()
{
InitializeComponent();
btnStop.Enabled = false;
}private void button1_Click(object sender, EventArgs e){_recognizer.StopListening();btnStart.Enabled = true;btnStop.Enabled = false;}private void btnStart_Click(object sender, EventArgs e){string modelPath = @"E:\Models\vosk-model-small-cn-0.22"; // 中文模型路径_recognizer = new RealTimeSpeechRecognizer(modelPath, richTextBox1);btnStart.Enabled = false;btnStop.Enabled = true;_recognizer.StartListening();}
}}

相关文章:

实时采集到的语音进行语音识别

要在.NET Framework 4.8中使用C#实现离线实时语音识别&#xff0c;可以使用开源库Vosk&#xff08;支持离线ASR&#xff09;配合音频处理库NAudio。 步骤 1&#xff1a;安装依赖库 1.1. 安装NuGet包&#xff1a; - Install-Package NAudio&#xff08;处理音频输入&#xff09…...

Ollama 本地部署 DeepSeek R1 及 Python 运行 open-webui 界面(windows)

DeepSeek R1 ollama open-webui 本地部署&#xff08;windows&#xff09; DeepSeek-R1本地部署配置要求 Github地址&#xff1a;https://github.com/deepseek-ai/DeepSeek-R1?tabreadme-ov-file 模型规模最低 GPU 显存推荐 GPU 型号纯 CPU 内存需求适用场景1.5B4GBRTX 3…...

牛客周赛:84:C:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 \hspace{15pt}本题为《D.小红的陡峭值&#xff08;三&#xff09;》的简单版本&#xff0c;两题的唯一区别在于本题的数据范围更小。 \hspace{15pt}小红定义一个字符串的陡峭值为&a…...

5. 前后端实现文件上传与解析

1. 说明 在实际开发中&#xff0c;比较常见的一个功能是需要在前端页面中选择系统中的某个文件上传到服务器中进行解析&#xff0c;解析后的文件内容可以用来在服务器中当作参数&#xff0c;或者传递给其它组件使用&#xff0c;或者需要存储到数据库中。所以本文就提供一种方式…...

SpringBoot 接入 豆包 火山方舟大模型

火山方舟控制台 开通模型推理、知识库 应用入口&#xff1b; 文档中心 各类接口说明及SDK 获取&#xff1b; 向量数据库VikingDB 文档 下翻找到有java操作案例&#xff1b; 实现目标功能效果&#xff1a; 通过SDK调用 豆包大模型&#xff0c;在代码内实现问答的效果&#xf…...

IDEA接入阿里云百炼中免费的通义千问[2025版]

安装deepseek 上一篇文章IDEA安装deepseek最新教程2025中说明了怎么用idea安装codeGPT插件&#xff0c;并接入DeepSeek&#xff0c;无奈接入的官方api已经不能使用了&#xff0c;所以我们尝试从其他地方接入 阿里云百炼https://bailian.console.aliyun.com/ 阿里云百炼‌是阿…...

下载kali linux遇到的一些问题

kali官网&#xff1a;kali官网跳转 问题一&#xff1a;未启动VM Service VMware Workstation 未能启动 VMware Authorization Service。您可以尝试手动启动VMware Authorization Service。如果此问题仍然存在&#xff0c;请联系VMware 支持部门。 解决办法&#xff1a; 步骤1…...

常见排序算法深度评测:从原理到10万级数据实战

常见排序算法深度评测&#xff1a;从原理到10万级数据实战 摘要 本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法&#xff0c;通过C语言实现10万随机数排序并统计耗时。测试显示&#xff1a;快速排序综合性能最优&…...

Scaled_dot_product_attention(SDPA)使用详解

在学习huggingFace的Transformer库时&#xff0c;我们不可避免会遇到scaled_dot_product_attention(SDPA)这个函数&#xff0c;它被用来加速大模型的Attention计算&#xff0c;本文就详细介绍一下它的使用方法&#xff0c;核心内容主要参考了torch.nn.functional中该函数的注释…...

Linux练级宝典->Linux进程概念介绍

目录 进程基本概念 PCB概念 task_struct tack_struct内容分类 PID和PPID fork函数创建子进程 进程优先级概念 4个名词 进程地址空间 进程地址空间的意义 内核进程调度队列 优先级 活动队列 过期队列 进程基本概念 一个正在执行的程序。担当分配系统资源的实体&#…...

OpenHarmony 5.0 mpegts封装的H265视频播放失败的解决方案

问题现象 OpenHarmony 5.0版本使用AVPlayer播放mpegts封装格式的H.265(HEVC)编码格式的视频时出现报错导致播放失败 问题原因 OpenHarmony 5.0版本AVPlayer播放器使用histreamer引擎&#xff0c;因为 libav_codec_hevc_parser.z.so 动态库未开源导致H265编码格式视频解析不到…...

Qt从入门到入土(九) -model/view(模型/视图)框架

简介 Qt的模型/视图&#xff08;Model/View&#xff09;架构是一种用于分离数据处理和用户界面展示的设计模式。它允许开发者将数据存储和管理&#xff08;模型&#xff09;与数据的显示和交互&#xff08;视图&#xff09;解耦&#xff0c;从而提高代码的可维护性和可扩展性。…...

缓存之美:Guava Cache 相比于 Caffeine 差在哪里?

大家好&#xff0c;我是 方圆。本文将结合 Guava Cache 的源码来分析它的实现原理&#xff0c;并阐述它相比于 Caffeine Cache 在性能上的劣势。为了让大家对 Guava Cache 理解起来更容易&#xff0c;我们还是在开篇介绍它的原理&#xff1a; Guava Cache 通过分段&#xff08;…...

[漏洞篇]XSS漏洞详解

[漏洞篇]XSS漏洞 一、 介绍 概念 XSS&#xff1a;通过JS达到攻击效果 XSS全称跨站脚本(Cross Site Scripting)&#xff0c;为避免与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故缩写为XSS。这是一种将任意 Javascript 代码插入到其他Web用户页面里执行以…...

【Leetcode 每日一题】2269. 找到一个数字的 K 美丽值

问题背景 一个整数 n u m num num 的 k k k 美丽值定义为 n u m num num 中符合以下条件的 子字符串 数目&#xff1a; 子字符串长度为 k k k。子字符串能整除 n u m num num。 给你整数 n u m num num 和 k k k&#xff0c;请你返回 n u m num num 的 k k k 美丽值…...

IO进程线程(线程)

作业 1.创建两个线程&#xff0c;分支线程1拷贝文件的前一部分&#xff0c;分支线程2拷贝文件的后一部分 2.创建三个线程&#xff0c;实现线程A打印A&#xff0c;线程B打印B&#xff0c;线程C打印C&#xff1b;重复打印顺序ABC。 信号量实现&#xff1a; 条件变量实现&#x…...

1-002:MySQL InnoDB引擎中的聚簇索引和非聚簇索引有什么区别?

在 MySQL InnoDB 存储引擎 中&#xff0c;索引主要分为 聚簇索引&#xff08;Clustered Index&#xff09; 和 非聚簇索引&#xff08;Secondary Index&#xff09;。它们的主要区别如下&#xff1a; 1. 聚簇索引&#xff08;Clustered Index&#xff09; 定义 聚簇索引是表数…...

tomcat单机多实例部署

一、部署方法 多实例可以运行多个不同的应用&#xff0c;也可以运行相同的应用&#xff0c;类似于虚拟主机&#xff0c;但是他可以做负载均衡。 方式一&#xff1a; 把tomcat的主目录挨个复制&#xff0c;然后把每台主机的端口给改掉就行了。 优点是最简单最直接&#xff0c;…...

论文阅读分享——UMDF(AAAI-24)

概述 题目&#xff1a;A Unified Self-Distillation Framework for Multimodal Sentiment Analysis with Uncertain Missing Modalities 发表&#xff1a;The Thirty-Eighth AAAI Conference on Artificial Intelligence (AAAI-24) 年份&#xff1a;2024 Github&#xff1a;暂…...

解决asp.net mvc发布到iis下安全问题

解决asp.net mvc发布到iis下安全问题 环境信息1.The web/application server is leaking version information via the "Server" HTTP response2.确保您的Web服务器、应用程序服务器、负载均衡器等已配置为强制执行Strict-Transport-Security。3.在HTML提交表单中找不…...

【Zynq 进阶一】深度解析 PetaLinux 存储布局:NAND Flash 分区与 DDR 内存分配全攻略

【Zynq 进阶】深度解析 PetaLinux 存储布局&#xff1a;NAND Flash 分区与 DDR 内存分配全攻略 文章目录【Zynq 进阶】深度解析 PetaLinux 存储布局&#xff1a;NAND Flash 分区与 DDR 内存分配全攻略&#x1f4dd; 前言&#x1f4e6; 第一部分&#xff1a;大局观——NAND 与 D…...

Miniconda环境迁移实战:如何将CentOS装好的Python环境打包到其他服务器?

Miniconda环境迁移实战&#xff1a;跨服务器Python环境无缝转移指南 当你在CentOS服务器上精心配置了一个完美的Python数据分析环境&#xff0c;却需要在另一台服务器上复现时&#xff0c;难道要重新经历一遍繁琐的安装过程&#xff1f;本文将揭示两种高效可靠的Miniconda环境迁…...

终极指南:如何在.NET应用中快速集成VLC多媒体播放功能

终极指南&#xff1a;如何在.NET应用中快速集成VLC多媒体播放功能 【免费下载链接】Vlc.DotNet .NET control that hosts the audio/video capabilities of the VLC libraries 项目地址: https://gitcode.com/gh_mirrors/vl/Vlc.DotNet Vlc.DotNet是一个强大的.NET库&am…...

2026必看:八款热门AI编程工具横评

一、AI编程工具榜单综述当下AI技术全面渗透软件开发领域&#xff0c;各类AI编程工具大幅降低了开发门槛、提升了编码效率&#xff0c;成为开发者必备的效率神器。本次横评精选海内外8款主流产品&#xff0c;覆盖AI原生IDE、插件式编程助手等不同形态&#xff0c;全方位盘点各工…...

2026 年直播电商如何进化?内容创作与管理的新模式是什么?

核心要点 问题&#xff1a; 为什么很多直播电商团队在 2025 年后明显感到"内容越来越多&#xff0c;但效果越来越不稳定"&#xff1f; 答案&#xff1a; 进入 2026 年&#xff0c;直播电商从"单场爆发"转向"内容体系竞争"。真正拉开差距的&#…...

AutoGen多智能体框架:从协作价值到企业级实践指南

AutoGen多智能体框架&#xff1a;从协作价值到企业级实践指南 【免费下载链接】autogen 启用下一代大型语言模型应用 项目地址: https://gitcode.com/GitHub_Trending/au/autogen 在人工智能快速发展的今天&#xff0c;如何让AI系统像人类团队一样高效协作完成复杂任务&…...

OpenClaw知识库集成:Qwen3-VL:30B连接飞书文档中心

OpenClaw知识库集成&#xff1a;Qwen3-VL:30B连接飞书文档中心 1. 为什么需要智能文档助手 上个月整理季度技术文档时&#xff0c;我对着飞书里上百个分散的文档链接发愁——每次找资料都要在搜索框反复尝试关键词&#xff0c;遇到表格和图表更要逐页核对。直到发现OpenClaw能…...

GitHub访问加速终极指南:5分钟告别龟速访问的完整解决方案

GitHub访问加速终极指南&#xff1a;5分钟告别龟速访问的完整解决方案 【免费下载链接】fetch-github-hosts &#x1f30f; 同步github的hosts工具&#xff0c;支持多平台的图形化和命令行&#xff0c;内置客户端和服务端两种模式~ | Synchronize GitHub hosts tool, support m…...

如何高效提取网页SVG内容:3步实现可视化数据导出

如何高效提取网页SVG内容&#xff1a;3步实现可视化数据导出 【免费下载链接】svg-crowbar Extracts an SVG node and accompanying styles from an HTML document and allows you to download it all as an SVG file. 项目地址: https://gitcode.com/gh_mirrors/sv/svg-crow…...

别再瞎找了!AI论文软件2026最新测评与推荐

2026年真正好用的AI论文软件&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...