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( ...
随机推荐
- AI年代,谁还用难用的Keil?快快换CLion!!! 破解+环境替换 [上]
安装Clion 由于这个地方碰壁比较多,所以大家严格按照我下面的安装节奏就可以了! 记得CLion的版本等,和我所说的不匹配也会导致破解失败. 包能破解安装上的. 1.下载 链接:https://pa ...
- PHP数据库连接教程 - QSZ
1准备工作 首先,确保你的环境中已安装: PHP 7.0+ MySQL/MariaDB Web服务器(Apache/Nginx) 2数据库连接代码 // config.php setAttribute ...
- Python 在PDF中绘制线条、矩形、椭圆形
在PDF中绘制图形可以增强文档的视觉效果.通过添加不同类型的形状,如实线.虚线.矩形.圆形等,可以使文档更加生动有趣,提高读者的阅读兴趣.这对于制作报告.演示文稿或是教材特别有用.本文将通过以下几个示 ...
- 深入解析 WezTerm 的自定义功能:键绑定和鼠标绑定
WezTerm 是一个高性能的跨平台终端模拟器,它提供了广泛的自定义选项,包括键绑定和鼠标绑定,使得用户可以根据自己的需求优化操作界面.本文将详细介绍几个关键的自定义功能,解释它们的用途,并展示如何配 ...
- 点击Popover外区域自动关闭Popover (popover close when click outside)
$(document).on('click', function (e) { $('[data-toggle="popover"],[data-original-title]'). ...
- SpringMVC-Mybatis-Maven项目整合
上次不知道为什么,把写好的系列文章都搞成一样了.结果,五篇文章,都变成了最后一篇文章. 悲剧,好吧,只好重新写了. 这系列文章写的是SpringMVC-Mybatis-Maven项目整合.说白了,其实 ...
- golang之常用开发工具
汇总平常开发中较为常用的工具 [sql2struct] 将MySQL快速生成struct github: https://github.com/idoubi/sql2struct
- .net core想到哪写道哪之hello world
今天,我们来创建一个helo world,讲一讲.Net 6最新的顶级语句的问题. 在.Net 6中最大的变化应该就是多了个顶级语句. 这玩意是个啥呢,它让C#看起来像个脚本语言了,一个Hello W ...
- JavaScript ES6基础
1.let声明 1.let不像var有变量声明提升,未声明直接使用会报错 console.log(a); //undefined var a; console.log(b); //报错 let b; ...
- .NET 使用 ZXing.Net 生成二维码,并识别
.NET 使用 ZXing.Net 生成二维码,并识别 前言 前面已经分享给很多创建二维码,条形码...等一系列的方式 各有优缺点,暂时不做评价.今天推荐ZXing.Net .也是比较全面的一种方式, ...