C#使用whisper.net实现语音识别(语音转文本)
目录
介绍
效果
输出信息
项目
代码
下载
介绍
github地址:https://github.com/sandrohanea/whisper.net
Whisper.net. Speech to text made simple using Whisper Models
模型下载地址:https://huggingface.co/sandrohanea/whisper.net/tree/main/classic
效果

输出信息
whisper_init_from_file_no_state: loading model from 'ggml-small.bin'
whisper_model_load: loading model
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 768
whisper_model_load: n_audio_head = 12
whisper_model_load: n_audio_layer = 12
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 768
whisper_model_load: n_text_head = 12
whisper_model_load: n_text_layer = 12
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 3
whisper_model_load: mem required = 743.00 MB (+ 16.00 MB per decoder)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: model ctx = 464.68 MB
whisper_model_load: model size = 464.44 MB
whisper_init_state: kv self size = 15.75 MB
whisper_init_state: kv cross size = 52.73 MB
00:00:00->00:00:20: 皇鶴楼,崔昊,西人已成皇鶴去,此地空于皇鶴楼,皇鶴一去不复返,白云千载空悠悠。
00:00:20->00:00:39: 青川莉莉汉阳树,方草七七英五周,日暮相关何处事,燕泊江上世人愁。
项目

代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Whisper.net;
using static System.Net.Mime.MediaTypeNames;
namespace C_使用whisper.net实现语音转文本
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string fileFilter = "*.wav|*.wav";
string wavFileName = "";
WhisperFactory whisperFactory;
WhisperProcessor processor;
private async void button2_Click(object sender, EventArgs e)
{
if (wavFileName == "")
{
return;
}
try
{
button2.Enabled = false;
using var fileStream = File.OpenRead(wavFileName);
await foreach (var result in processor.ProcessAsync(fileStream))
{
Console.WriteLine($"{result.Start}->{result.End}: {result.Text}\r\n");
txtResult.Text += $"{result.Start}->{result.End}: {result.Text}\r\n";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
button2.Enabled = true;
}
}
private void Form1_Load(object sender, EventArgs e)
{
whisperFactory = WhisperFactory.FromPath("ggml-small.bin");
processor = whisperFactory.CreateBuilder()
.WithLanguage("zh")//.WithLanguage("auto")
.Build();
wavFileName = "085黄鹤楼.wav";
txtFileName.Text = wavFileName;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = fileFilter;
if (ofd.ShowDialog() != DialogResult.OK) return;
txtResult.Text = "";
wavFileName = ofd.FileName;
txtFileName.Text = wavFileName;
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Whisper.net;
using static System.Net.Mime.MediaTypeNames;namespace C_使用whisper.net实现语音转文本
{public partial class Form1 : Form{public Form1(){InitializeComponent();}string fileFilter = "*.wav|*.wav";string wavFileName = "";WhisperFactory whisperFactory;WhisperProcessor processor;private async void button2_Click(object sender, EventArgs e){if (wavFileName == ""){return;}try{button2.Enabled = false;using var fileStream = File.OpenRead(wavFileName);await foreach (var result in processor.ProcessAsync(fileStream)){Console.WriteLine($"{result.Start}->{result.End}: {result.Text}\r\n");txtResult.Text += $"{result.Start}->{result.End}: {result.Text}\r\n";}}catch (Exception ex){MessageBox.Show(ex.Message);}finally{button2.Enabled = true;}}private void Form1_Load(object sender, EventArgs e){whisperFactory = WhisperFactory.FromPath("ggml-small.bin");processor = whisperFactory.CreateBuilder().WithLanguage("zh")//.WithLanguage("auto").Build();wavFileName = "085黄鹤楼.wav";txtFileName.Text = wavFileName;}private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;txtResult.Text = "";wavFileName = ofd.FileName;txtFileName.Text = wavFileName;}}
}
下载
源码下载
相关文章:
C#使用whisper.net实现语音识别(语音转文本)
目录 介绍 效果 输出信息 项目 代码 下载 介绍 github地址:https://github.com/sandrohanea/whisper.net Whisper.net. Speech to text made simple using Whisper Models 模型下载地址:https://huggingface.co/sandrohanea/whisper.net/tree…...
从零开始学习typescript——运算符(算术运算符、赋值运算符、比较运算符)
算术运算符 算术运算符主要是针对数值类型和长整型;包括有加法、减法、乘法、除法、自增、自减等运算 加法() let x:number1let y:number 2console.log(xy)减法(-) let x:number1let y:number 2console.log(y-x)乘法…...
likeshop单商户商城系统 任意文件上传漏洞复现
0x01 产品简介 likeshop单商户标准商城系统适用于B2C、单商户、自营商城场景。完美契合私域流量变现闭环交易使用。 系统拥有丰富的营销玩法,强大的分销能力,支持电子面单和小程序直播等功能。无论运营还是二开都是性价比极高的100%开源商城系统。 0x02…...
CentOS 7 使用pugixml 库
安装 pugixml Git下载地址:https://github.com/zeux/pugixml 步骤1:首先,你需要下载pugixml 的源代码。你可以从Github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2:下载完成后,需要将源代码解压…...
深度学习 loss 是nan的可能原因
1 loss 损失值非常大,超过了浮点数的范围,所以表示为overflow 状态下的男。 解决办法: 减小学习率,观察loss值是不是还是nan 在将数据输入模型前,进行恰当的归一化 缩放 2 loss 的计算中存在除以0, log(0…...
[ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。 本文同步于个人公众号:【云计算洞察】 更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文: [ 云计算 | …...
第二十章:多线程
进程 线程的特点 1.进程是资源分配的最小单位,线程是最小的执行单位 2.一个进程可以有多个线程 3.线程共享进程资源 package twentyth; public class ThreadTest extends Thread { public void run() { for (int i 1; i < 10; i) {//继承重…...
CentOS 7启动时报“Started Crash recovery kernel arming.....shutdown....”问题处理过程
有台虚拟机由于CPU负载过高而宕机,宕机重启后停在“Started Crash recovery kernel arming…shutdown…”阶段,如下所示: 重置虚拟机,进入grub菜单,按e编辑启动选项,在linux16 行末,加上&…...
Android 13 - Media框架(14)- OpenMax(二)
这一节我们将来解析 media.codec 这个 HIDL service 究竟提供了什么服务,服务是如何启动的。 1、main 函数 我们先来看 frameworks/av/services/mediacodec/main_codecservice.cpp: int main(int argc __unused, char** argv) {strcpy(argv[0], "…...
【Python大数据笔记_day11_Hadoop进阶之MR和YARNZooKeeper】
MR 单词统计流程 已知文件内容: hadoop hive hadoop spark hive flink hive linux hive mysql input结果: k1(行偏移量) v1(每行文本内容)0 hadoop hive hadoop spark hive 30 flink hive linux hive mysql map结果:k2(split切割后的单词) v2(拼接…...
飞桨——总结PPOCRLabel中遇到的坑
操作系统:win10 python环境:python3.9 paddleocr项目版本:2.7 1.报错:ModuleNotFoundError: No module named Polygon(已解决) 已解决所以没有复现报错内容 尝试方法一:直接使用pip命令安装&…...
LeetCode(30)长度最小的子数组【滑动窗口】【中等】
目录 1.题目2.答案3.提交结果截图 链接: 长度最小的子数组 1.题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果…...
Niushop 开源商城 v5.1.7:支持PC、手机、小程序和APP多端电商的源码
Niushop 系统是一款基于 ThinkPHP6 开发的电商系统,提供了丰富的功能和完善的商品机制。该系统支持普通商品和虚拟商品,并且针对虚拟商品还提供了完善的核销机制。同时,它也支持新时代的商业模式,如拼团、分销和多门店砍价等营销活…...
Navmesh 寻路
用cocos2dx引擎简单实现了一下navmesh的多边形划分,然后基于划分多边形的a*寻路。以及路径拐点优化算法 用cocos主要是方便使用一些渲染接口和定时器。重点是实现的原理。 首先画了一个带有孔洞的多边形 //多边形的顶点数据Vec2(100, 100),Vec2(300, 200),Vec2(50…...
YOLOv5 分类模型 数据集加载 3
YOLOv5 分类模型 数据集加载 3 自定义类别 flyfish YOLOv5 分类模型 数据集加载 1 样本处理 YOLOv5 分类模型 数据集加载 2 切片处理 YOLOv5 分类模型的预处理(1) Resize 和 CenterCrop YOLOv5 分类模型的预处理(2)ToTensor 和 …...
『亚马逊云科技产品测评』活动征文|AWS 存储产品类别及其适用场景详细说明
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 目录 前言、AWS 存储产品类别 1、Amazon Elastic Block Store (EBS) …...
Mac | Vmware Fusion | 分辨率自动还原问题解决
1. 问题 Mac的Vmware Fusion在使用Windows10虚拟机时,默认显示器配置如下: 开机进入系统并变更默认分辨率后,只要被 ⌘Tab 切换分辨率就会还原到默认,非常影响体验。 2. 解决方式 调整 设置 -> 显示器 -> 虚拟机分辨率…...
SQL知多少?这篇文章让你从小白到入门
个人网站 本文首发公众号小肖学数据分析 SQL(Structured Query Language)是一种用于管理和处理关系型数据库的编程语言。 对于想要成为数据分析师、数据库管理员或者Web开发人员的小白来说,学习SQL是一个很好的起点。 本文将为你提供一个…...
centos7安装MySQL—以MySQL5.7.30为例
centos7安装MySQL—以MySQL5.7.30为例 本文以MySQL5.7.30为例。 官网下载 进入MySQL官网:https://www.mysql.com/ 点击DOWNLOADS 点击链接; 点击如上链接: 选择对应版本: 点击下载。 安装 将下载后的安装包上传到/usr/local下…...
3.计算机网络补充
2.5 HTTPS 数字签名:发送端将消息使⽤ hash 函数⽣成摘要,并使⽤私钥加密后得到“数字签名”,并将其附在消息之后。接收端使⽤公钥对“数字签名”解密,确认发送端身份,之后对消息使⽤ hash 函数处理并与接收到的摘要对…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
