《AI大模型开发笔记》Faster-Whisper 免费开源的高性能语音识别模型
1 Whisper模型,免费开源的语音识别模型
Whisper模型是OpenAI公开的语音识别模型。这是一个免费可商用的模型。
Whisper模型根据参数量来区分,有多个不同的版本,分别是tiny,base,small medium,large, large-v2, large-v3。
目前性能最好的是2023年11月7日发布的参数量为1550M的large-v3。
与large-v2相比,large-v3主要有以下改进:
- 使用了更多的训练数据进行训练,100万小时标注数据和400万小时无标注数据。
- 输入特征使用了128维的fbank(v2使用了80维fbank)。
- token增加了对粤语的支持。
- 误识率(Error rate)比large-v2降低了10%至20%。
图1. Whisper模型各种版本的比较
参考资料:https://huggingface.co/openai/whisper-large-v3
2 Faster-whisper:Whisper模型的高速推理版
Whisper large模型由于参数量比较大,推理的速度比较慢。
为了提高推理的速度,faster-whisper通过使用 CTranslate2 工具进行优化,大幅度改善了推理的速度。
从下图可以看出,faster-whisper 推理时间只有原模型的1/5, GPU显存的使用也不到原来的二分之一。
图2. Whisper与Faster Whisper的推理对比(语音文件长度为13分钟)
相关链接:
Falster-whisper: GitHub - SYSTRAN/faster-whisper: Faster Whisper transcription with CTranslate2
CTranslate2: GitHub - OpenNMT/CTranslate2: Fast inference engine for Transformer models
3 环境安装,语音识别代码
我的运行环境:Windows10,Anaconda,NVIDIA Quadro RTX 3000 GPU
第一步:通过下面的命令来安装faster-whisper:
pip install faster-whisper
pip install nvidia-cublas-cu11 nvidia-cudnn-cu11 #使用GPU时需要
第二步: 准备一个语音文件,比如 sample_3m.wav
第三步: 拷贝并运行下面的代码
import os
import timeos.environ['KMP_DUPLICATE_LIB_OK']='True'# 针对使用GPU时出现的问题(请参考文档中的常见问题)
os.environ["PATH"] += os.environ["PATH"] \+ ";" + r"C:\Users\user01\anaconda3\Lib\site-packages\nvidia\cudnn\bin" \+ ";" + r"C:\Users\user01\anaconda3\Lib\site-packages\nvidia\cublas\bin"start_time = time.time()from faster_whisper import WhisperModel
model_size = "large-v3"# Run on GPU with FP16
#model = WhisperModel(model_size, device="cuda", compute_type="float16")# or run on GPU with INT8
#model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# or run on CPU with INT8
model = WhisperModel(model_size, device="cpu", compute_type="int8")
print(f"Model load: {time.time()-start_time} s")start_time = time.time()
segments, info = model.transcribe("tmp1/sample_3m.wav", beam_size=5)
print(f"Recognition: {time.time()-start_time} s")print("Detected language '%s' with probability %f" % (info.language, info.language_probability))for segment in segments:print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
几个参数说明:
- word_timestamps:默认值为true,Word-level timestamps,关闭后识别会更快
- vad_filter:默认值为true,自动删除长度为2秒以上的无音部分
更多参数,请参考:faster-whisper/faster_whisper/transcribe.py at master · SYSTRAN/faster-whisper · GitHub
4 常见问题
下面是,我在代码执行过程中碰到的问题。如果,您有其他问题,欢迎在视频下面留言。
-
Q1:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
程序中加入以下代码后解决。import os os.environ['KMP_DUPLICATE_LIB_OK']='True'参考资料:
https://stackoverflow.com/questions/64209238/error-15-initializing-libiomp5md-dll-but-found-libiomp5md-dll-already-initial -
Q2: 使用GPU过程中出现的错误 Could not load library cudnn_ops_infer64_8.dll. Error code 126
解决方法如下:
第一步:安装以下开发库pip install nvidia-cublas-cu11 nvidia-cudnn-cu11第二步:将对应的开发库的文件位置加入到PATH中。
然后找到响应的开发库的位置os.environ["PATH"] += os.environ["PATH"] \+ ";" + r"C:\Users\YourUserName\anaconda3\Lib\site-packages\nvidia\cudnn\bin" \+ ";" + r"C:\Users\YourUserName\anaconda3\Lib\site-packages\nvidia\cublas\bin"
相关文章:
《AI大模型开发笔记》Faster-Whisper 免费开源的高性能语音识别模型
1 Whisper模型,免费开源的语音识别模型 Whisper模型是OpenAI公开的语音识别模型。这是一个免费可商用的模型。 Whisper模型根据参数量来区分,有多个不同的版本,分别是tiny,base,small medium,large&#x…...
蓝队基础,网络七杀伤链详解
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...
golang开发一个海盗王的登录更新器
前段时间,用golang配合界面库govcl开发一个海盗王的登陆更新器,实现多区注册和文件更新分离不同服务器等新功能。 由于govcl没有更换皮肤的功能,界面都是默认,不好看。 找了很多go语言的gui库,都没有符合要求的。 后来…...
李宏毅机器学习课程知识点摘要(6-13集)
pytorch简单的语法和结构 dataset就是数据集,dataloader就是分装好一堆一堆的 他们都是torch.utils.data里面常用的函数,已经封装好了 下面的步骤是把数据集读进来 这里是读进来之后,进行处理 声音信号,黑白照片,红…...
003 STM32基础、架构以及资料介绍——常识
注: 本笔记参考学习B站官方视频教程,免费公开交流,切莫商用。内容可能有误,具体以官方为准,也欢迎大家指出问题所在。 01什么是STM32(宏观) STM32属于一个微控制器,自带了各种常用通…...
【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化
【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化 目录 文章目录 【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数:★★★★☆ …...
开源可视化工具对比:JimuReport VS DataEase
在当今数据驱动的时代,高效的数据可视化工具成为企业洞察业务、做出决策的关键利器。那对于企业来讲如何选择BI产品呢? 在开源可视化工具的领域中,JimuReport和DataEase 以其独特的优势脱颖而出,究竟谁更胜一筹呢?让我…...
2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究
复杂场景下水下图像增强技术的研究 对于海洋勘探来说,清晰、高质量的水下图像是深海地形测量和海底资源调查的关键。然而,在复杂的水下环境中,由于光在水中传播过程中的吸收、散射等现象,导致图像质量下降,导致模糊、…...
shell与QQ邮箱的连接
1.下载软件:yum install s-nail 2.配置文件:vim /etc/s-nail.rc 末尾添加此三行,加入QQ邮箱和验证码 3.验证码位于QQ邮箱安全管理内,进行复制粘贴 4.测试发消息给本地邮箱:echo "要发送的内容" | mail …...
11.21 深度学习-tensor常见操作
import torch from PIL import Image from torchvision import transforms # 获取元素值 tensor.item() 返回一个数值 只能是tensor里面有一个数字的 # 我们可以把单个元素tensor转换为Python数值,这是非常常用的操作 # tensor 里面超过了1个数字就不行 def g…...
【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置
🎁个人主页:我们的五年 🔍系列专栏:MySQL课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 MySQL在Centos 7环境下的安装: 卸载…...
基于官网的Vue-router安装(2024/11)
!!!首先声明,官网很重要。其次,不知道为啥,我不会安装时看不懂官网,会了之后就能看懂了。 官网地址:https://router.vuejs.org/zh/guide/ 1.npm安装 npm install vue-router4 官方貌…...
未来已来:少儿编程竞赛聚焦物联网,激发创新潜力
随着人工智能与物联网技术(IoT)的快速发展,少儿编程教育正在迎来新的变革浪潮。近年来,各类少儿编程竞赛纷纷增加了物联网相关主题,要求学生结合编程知识和硬件设备设计智能家居、智慧城市等创新项目。这一趋势不仅丰富…...
archlinux安装waydroid
目录 参考资料 注意 第一步切换wayland 第二步安装binder核心模组 注意 开始安装 AUR安裝Waydroid 启动waydroid 设置网络(正常的可以不看) 注册谷歌设备 安装Arm转译器 重启即可 其他 参考资料 https://ivonblog.com/posts/archlinux-way…...
Oralce数据库巡检SQL脚本
文章目录 Oralce数据库巡检SQL脚本1 检查表空间使用情况2 检查是否有 offline 状态的表空间3 在线日志是否存在小于 50M 的及状态不正常4 检查锁阻塞5 查看是否有僵死进程6 检查是否有失效索引7 检查不起作用的约束8 缓冲区命中率9 数据字典命中率10 库缓存命中率11 内存中的排…...
CentOS使用中遇到的问题及解决方法
一、CentOS 7网络配置(安装后无法联网问题) 现象说明 在安装CentOS系统后,有可能出现无法联网的问题,虚拟机中的网络配置并没有问题,而系统却无法联网,也ping不通。 原因描述 CentOS默认开机不启动网络,因…...
ThinkPad t61p 作SMB服务器,打印服务器,pc ,android ,ipad利用此服务器互传文件
1.在t61p上安装win7 2,配置好smb 服务 3.再安装好打印驱动程序 4.pc与win7利用系统的网络互相发现,映射为硬盘使用。 5.android,ipad安装ES文件浏览器访问win7 共享文件夹,互传文件。 6.android手机安装FE文件浏览器,可以利用花生壳外网…...
php:使用Ratchet类实现分布式websocket服务
一、前言 最近需要做一个有关聊天的小程序,逻辑很简单,所以不打算用Swoole和workerman之类的,最后选择了Ratchet,因为简单易用,适合小型websocket服务。 二、问题 但是目前我的项目是分布式环境,统一通过Ng…...
储能场站安全风险挑战
电化学储能目前最大的痛点问题就是安全问题,制约了储能行业的发展。 首先:锂作为最活泼的金属加上有机溶剂的电解液,安全性天生就差。基因不行。 其次储能系统的BMS对电池管理相对粗放,不足以保证锂电池的安全运行。 当前储能产业…...
Ubuntu系统为同一逻辑网口配置不同网段的IP
近期遇到一个问题:机载计算机的载版上有两个网口,但是这两个网口本质上是一个独立网口一个交换机,即对于机载计算机而言这两个物理网口是同一个逻辑网口。但是我需要将这两个网口分别连接到两个设备,并配置不同网段的IP࿰…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
Linux-进程间的通信
1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...
stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...
职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...
【大厂机试题+算法可视化】最长的指定瑕疵度的元音子串
题目 开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如: “a” 、 “aa”是元音字符串,其瑕疵度都为0 “aiur”不是元音字符串(结尾不是元音字符) “…...
