实时语音转文字(基于NAudio+Whisper+VOSP+Websocket)

今天花了大半天时间研究一个实时语音转文字的程序,目的还包括能够唤醒服务,并把命令提供给第三方。

由于这方面的材料已经很多,我就只把过程中遇到的和解决方案简单说下。源代码开源在AudioWhisper: 实时语音转文字(基于NAudio+Whisper+VOSP+Websocket) (gitee.com)

1、声音录制

这里有三点需要注意的:

1)sampleRate(采样频率)要选择16000,不要选别的,不然Whisper不兼容。

2)声音录制得到的数据是一个个块(block),每次block大概1500byte左右。

3)WAV文件由文件头(共计45个字节)+ 长度标志+Block组+文件尾(大概6个字节)组成,可以直接看NAudio获得相关信息。

2、Whisper使用

也有几点需要注意:

1)不翻墙很难从huggingface.co下载语音模型,可以从Index of / (ggerganov.com)下载

2)需要Net8 的环境,低版本包括NetFramework会卡在ProcessAsync方法上,当然可以换成Process方法

3)处理100个声音块(Block),大概需要3~5秒时间,并不能做到给一段语音就解释这段语音,存在明显的处理性能要求,建议选择好电脑去跑。当然我这边没有从GPU等因素去眼睛了。

4)Whisper的语言包有点怪,感觉是从外国电影翻译学习的,会出现大莫名其妙的的结果,但好在不多,可以根据关键字过滤,比如它会误判存在笑,返回结果为“(笑)”。

5)存在繁体中文的情况,可以采用ChineseConverter方法进行处理。

3、VOSP

Whisper可以的系统初始化时间相对还是可以接受的,在5~10秒左右。而VOSP初始化加载模型需要30~50秒,而且初步测试准确率很低,文字中存在空格。

4、实时语音流程

需要分配多个线程,1一个线程听声音,1个线程解释翻译声音。不能把这两个线程合在一起,原因是翻译声音需要高的计算量。

648ca21c818a4b3082780fa9a6f5e692.png

最后,代码已经上传到git,大家可以直接看,也可以参与编写,AudioWhisper: 实时语音转文字(基于NAudio+Whisper+VOSP+Websocket) (gitee.com)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/448754.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.几何算法-凸包

1.凸包的例子 1.1.简单求解 当着手设计一个计算凸包的算法时,此前所给出的凸包定义对我们没有多少帮助。按照定义,需要计算出“包含 P 的所有凸集的交”,可是这种集合有无限多个。而我们所观察到的“CH是一个凸多边形”这一事实&#xff0c…

libaom 源码分析:aomdec.c 文件

aomdec.c 功能:libaom 项目完成视频解码过程的 demo文件位置:libaom/apps/aomdec.c函数关系 命令行说明 终端输入 ./aomdec --help,输出如下,展示如何使用方法。Usage: ./aomdec <options> filenameOptions:--help Show usage options and exit…

pico+Unity交互开发——触碰抓取

一、VR交互的类型 Hover&#xff08;悬停&#xff09; 定义&#xff1a;发起交互的对象停留在可交互对象的交互区域。例如&#xff0c;当手触摸到物品表面&#xff08;可交互区域&#xff09;时&#xff0c;视为触发了Hover。 Grab&#xff08;抓取&#xff09; 概念&#xff…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO

基于Arduino的简易收音机

DIY FM收音机&#xff1a;使用Arduino和Si4703模块打造 引言 在本项目中&#xff0c;我们将使用Arduino Nano和Si4703 FM调谐模块来构建一个功能完备的FM收音机接收器。这个易于跟随的指南非常适合想要深入无线电频率和无线通信世界的业余爱好者和电子爱好者。 Si4703模块是…

cuda编程模型

host和device&#xff1a; host&#xff1a;即CPU&#xff0c;CPU所关联的内存就叫host memorydevice&#xff1a;即GPU&#xff0c;GPU内的内存就叫device memory运行CUDA程序主要有三步&#xff1a;1&#xff09;host-to-device transfer&#xff1a;将数据从host memory拷到…

python基于大数据的电影市场预测分析

一、摘要 智慧是改变生活和生产的一种来源&#xff0c;那么智慧的体现更大程度上是对于软件技术的改变。当今社会&#xff0c;好的思路&#xff0c;好的创新方式往往是改变人们生活的一种来源。最常见最直接的形式就是各种软件的创始思路&#xff0c;京东因为非典的流行才能够…

【Java知识】java进阶-反射的原理以及实现

文章目录 反射的原理类对象继承图反射的使用注意事项 Java反射机制是Java语言的一个特性&#xff0c;它允许程序在运行时动态地加载、探查、使用编译期间完全未知的类。反射机制使得Java程序可以处理一些在编译时并不确定的类&#xff0c;增加了程序的灵活性。 反射的原理 类的…

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要&#xff0c;尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧&#xff0c;从代码结构、工具使用到团队协作的多个角度进行详细分析&#xff1a; 1. 模块化设计 模块化设计 是提高代码可维护性和…

pdf怎么删除多余不想要的页面?删除pdf多余页面的多个方法

pdf怎么删除多余不想要的页面&#xff1f;在日常办公或学习中&#xff0c;我们经常会遇到需要处理PDF文件的情况。PDF文件因其格式稳定、不易被篡改的特点而广受青睐&#xff0c;但在编辑方面却相对不如Word等文档灵活。有时&#xff0c;在接收或创建的PDF文件中&#xff0c;可…

简单介绍$listeners

$listeners 它可以获取父组件传递过来的所有自定义函数&#xff0c;如下&#xff1a; // 父组件 <template><div class"a"><Child abab"handleAbab" acac"handleAcac"/></div> </template><script> impor…

(38)MATLAB分析带噪信号的频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图总结 前言 本文给出带噪信号的时域和频域分析&#xff0c;指出频域分析在处理带噪信号时的优势。 首先使用MATLAB生成一段信号&#xff0c;并在信号上叠加高斯白噪声得到带噪信号&#xff0c;然后对带噪信号对其进行FFT变换&…

C语言_字符串+内存函数的介绍

字符函数和字符串函数 本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 字符串查找 strstr strtok 错误信息报告 strerror 字符操作内存操作函数 memcpy memmove memset memcmp 1. 字…

Linux:线程

我恨死大物实验、模电实验、嵌入式实验、概率论和满实验室飞的蚊子了&#xff01;&#xff01;&#xff01; 前言&#xff1a; OS进行内存管理&#xff0c;是以内存块为单位管理的&#xff0c;一个块默认是4kb,一个块里有八个扇区 查看当前系统下的块的大小&#xff1a; ge…

MOE论文详解(3)-Switch Transformers

Switch Transformers也是google在2022年发表的一篇论文, 该论文简化了MoE的路由算法, 减少了计算量和通信量; 第一次支持bfloat16精度进行训练. 基于T5-Base和T5-Large设计的模型在相同的算力下训练速度提升了7x倍; 同时发布了1.6万亿(1.6 trillion)参数的MoE模型&#xff0c;相…

【Next.js 项目实战系列】03-查看 Issue

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c;给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 项目实战系列】02-创建 Issue 查看 Issue 展示 Issue​ 本节代码链接 首先使用 prisma 获取所有…

【QT】常用控件(二)

个人主页~ 常用控件&#xff08;一&#xff09;~ 常用控件 三、按钮类控件1、Push Buttonwidget.hwidget.cpp 2、Radio Button3、Check Box 四、显示类控件1、label 三、按钮类控件 1、Push Button QPushButton继承自QAbstractButton&#xff0c;它是所有按钮的父类 我们从…

线下陪玩导游系统软件源码,家政预约服务源码(h5+小程序+app)

游戏陪玩系统源码陪玩小程序源码搭建基于PHP&#xff0b;MySQL陪玩系统app源码陪玩系统定制开发服务、成品陪玩系统源码 系统基于Nginx或者Apache PHP7.3 数据库mysql5.6 前端为uniapp-vue2.0 后端为thinkphp6 有域名授权加密&#xff0c;其他开源可二开 演示源码下载 开…

Zookeeper快速入门:部署服务、基本概念与操作

文章目录 一、部署服务1.下载与安装2.查看并修改配置文件3.启动 二、基本概念与操作1.节点类型特性总结使用场景示例查看节点查看节点数据 2.文件系统层次结构3.watcher 一、部署服务 1.下载与安装 下载&#xff1a; 一定要下载编译后的文件&#xff0c;后缀为bin.tar.gz w…

如何匿名浏览网站,保护在线隐私?

在现如今的网络世界&#xff0c;在线隐私已不复存在。你总是被跟踪&#xff0c;即使你使用隐身模式也无济于事。隐身模式会阻止浏览器保存你的浏览历史记录。但它并不能阻止你的互联网服务提供商 (ISP)、雇主、学校、图书馆或你访问的网站看到你在网上做什么。 更有不法分子在未…