C#利用Vosk开源模型语音识别
#C#利用Vosk开源模型语音识别
#by wgscd
模型下载:VOSK Models (alphacephei.com) 找到chinese
| Chinese | ||||
| vosk-model-small-cn-0.22 | 42M | 23.54 (SpeechIO-02) 38.29 (SpeechIO-06) 17.15 (THCHS) | Lightweight model for Android and RPi | Apache 2.0 |
| vosk-model-cn-0.22 | 1.3G | 13.98 (SpeechIO-02) 27.30 (SpeechIO-06) 7.43 (THCHS) |
测试效果用麦克风+大模型(不是small模型包)还是挺不错,
如果识别系统电脑声音(系统音频卡输出语音,我们使用外部输入语音)就基本是无法准确识别!可惜!
using NAudio.Wave;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Vosk; namespace DYLive
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent(); } private Model model; //= new Model("modelcn");//程序根目录下 // modelsmall-cn-0.22 小模型
private WasapiLoopbackCapture waveIn;//WasapiLoopbackCapture 系统音频卡输出语音,我们使用外部输入语音
//new WaveIn() 如果是录制麦克风用WaveIn
private VoskRecognizer rec; private void InitRec()
{
waveIn = new WasapiLoopbackCapture(); //new WaveIn()、如果是录制麦克风用WaveIn
waveIn.WaveFormat = new WaveFormat(16000, 16, 1);//44100 采样率16K就可以,太高会导致识别率下降,百度也使用16K
waveIn.DataAvailable += WaveIn_DataAvailable;
rec = new VoskRecognizer(model, waveIn.WaveFormat.SampleRate);//加载模型
rec.SetMaxAlternatives(0);//设置备选项
rec.SetWords(false);//设置是否显示时间
} private void btnStart_Click(object sender, RoutedEventArgs e)
{
try
{
if (waveIn != null)
{
waveIn.StartRecording();
}
else
{
InitRec();
}
}
catch
{
}
} string result = "";
private void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
//int recLen = e.BytesRecorded;
//byte[] data = new byte[recLen];
//Array.Copy(e.Buffer, data, recLen);
if (rec.AcceptWaveform(e.Buffer, e.BytesRecorded))
{
result = rec.Result()+ rec.PartialResult();
if (result.Trim() != "")
{
Debug.Print(result);
Dispatcher.Invoke(() => { txt.Text = result; });
}
}
else
{
//Console.WriteLine(rec.FinalResult());//不要片段去分析,不然因为语义太少分析不出来
//Console.WriteLine("---------");
// Debug.Print(rec.PartialResult());
Dispatcher.Invoke(() => { Title = rec.PartialResult(); }); }
} private void btnStop_Click(object sender, RoutedEventArgs e)
{
try
{
if (waveIn != null)
{
waveIn.StopRecording();
}
}
catch
{
}
} private void Window_Loaded(object sender, RoutedEventArgs e)
{
App.CloseSlashWindow();
model= new Model("modelcn");//程序根目录下 new Model("modelsmall-cn-0.22");//程序根目录下
// model = new Model("modelsmall-cn-0.22");//程序根目录下
InitRec();
} }
}
C#利用Vosk开源模型语音识别的更多相关文章
- 利用谷歌开源工具cAdvisor 结合influxdb存储+Grafana前端展示进行Docker容器的监控
一.Docker 监控方式 1.利用docker 的 docker stats API 命令: docker stats [容器ID/容器名称] [root@docker ~]# docker sta ...
- R语言利用ROCR评测模型的预测能力
R语言利用ROCR评测模型的预测能力 说明 受试者工作特征曲线(ROC),这是一种常用的二元分类系统性能展示图形,在曲线上分别标注了不同切点的真正率与假正率.我们通常会基于ROC曲线计算处于曲线下方的 ...
- Journal of Proteomics Research | 利用混合蛋白质组模型对MBR算法中错误转移鉴定率的评估
题目:Evaluating False Transfer Rates from the Match-between-Runs Algorithm with a Two-Proteome Model 期 ...
- 从开源模型、框架到自研,声网 Web 端虚拟背景算法正式发布
根据研究发现,在平均 38 分钟的视频会议里面,大概会有 13 分钟左右的时间用于处理和干扰相关的事情.同时研究也表明在参加在线会议的时候,人们更加倾向于语音会议,其中一个关键原因就是大家不希望个人隐 ...
- python使用vosk进行中文语音识别
操作系统:Windows10 Python版本:3.9.2 vosk是一个离线开源语音识别工具,它可以识别16种语言,包括中文. 这里记录下使用vosk进行中文识别的过程,以便后续查阅. vosk地址 ...
- NLP(十八)利用ALBERT提升模型预测速度的一次尝试
前沿 在文章NLP(十七)利用tensorflow-serving部署kashgari模型中,笔者介绍了如何利用tensorflow-serving部署来部署深度模型模型,在那篇文章中,笔者利用k ...
- 小随笔:利用Shader实现模型爆炸和沙粒化的效果
0x00 前言 上一篇小随笔<小随笔:利用Shader给斯坦福兔子长毛和实现雪地效果>中,我和大家聊了聊著名的斯坦福兔子和利用geometry shader实现的一些效果.这篇文章继续沿用 ...
- 利用Google开源Java容器化工具Jib构建镜像
转载:https://blog.csdn.net/u012562943/article/details/80995373 一.前言 容器的出现让Java开发人员比以往任何时候都更接近“编写一次,到处运 ...
- 如何灵活利用免费开源图标字体-IcoMoon篇——张鑫旭
一.温故知新 之前有专门介绍过如何使用类似fontforge软件制作自定义字符字体以及如何在web中实际应用. 不过,文中提到的是利用系统自带的一些特殊字体,如WINGDNG3.ttf字体. 显然,系 ...
- 生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能。
方法一:利用excellibrary,http://code.google.com/p/excellibrary/ excellibrary是国人写的开源组件,很容易使用,可惜貌似还不支持.xlsx( ...
随机推荐
- 今日一学,5道大厂的Java基础面试题
前言 各种框架眼花缭乱,各种逻辑需求,CRUD.久而久之,写的1000行代码中都是if else,@autowired等等,等出去面试的时候,基础题不断,而且还是不常用,或者说不在意的,往往这些就容易 ...
- 推荐7款程序员常用的API管理工具
前言 现如今API接口的编写与调试已成为开发人员不可或缺的技能,工欲善其事,必先利其器,选择一款优秀的API管理工具显得尤为重要.本文大姚给大家推荐7款程序员常用的API管理工具,大家可以根据自身和团 ...
- ARC151C 01 Game
ARC151C 01 Game 题目链接:ARC151C 01 Game \(SG\) 函数好题. 思路 考虑把原问题分成多个区间的不同问题,求 \(SG\) 在异或起来. 设: 1.\(SG_1(l ...
- apisix 转发 路由自动encode导致带中括号的文件下载404
问题:apisix 转发 路由自动encode导致带中括号的文件下载404 原因:因为apisix 解码后tomcat处理会有问题,下载不了 解决方案:请求改写---协议,选择保持原样
- Golang之常用方法[总结]
1. 有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字? nums := []int{1, 5, 1, 6, 5, 3, 6} i := 0 for _, v := ...
- Django+SimpleUI
1.安装 pip install django-simpleui -i https://pypi.tuna.tsinghua.edu.cn/simple 2.修改配置文件 # 修改project的se ...
- Nuxt.js 应用中的 webpack:progress 事件钩子
title: Nuxt.js 应用中的 webpack:progress 事件钩子 date: 2024/11/27 updated: 2024/11/27 author: cmdragon exce ...
- Mybatis【17】-- Mybatis自关联查询一对多查询
注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-13-oneself-one2many,需要自取, ...
- elementui半年选择组件
1.基于elementui开发的半年选择组件 2.调用 <el-halfyear-picker v-model="date" :size="size"&g ...
- 试了下Cursor,感觉程序员工种危险了
大家好,我是汤师爷~ 今年8月份,AI 编程工具 Cursor 在开发者社区彻底火了.在 Twitter 平台上,Cloudflare 副总裁分享了一段视频,展示了一个令人震惊的案例.他年仅 8 岁的 ...