当前位置: 首页 > news >正文

《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"
http://www.lryc.cn/news/490680.html

相关文章:

  • 蓝队基础,网络七杀伤链详解
  • golang开发一个海盗王的登录更新器
  • 李宏毅机器学习课程知识点摘要(6-13集)
  • 003 STM32基础、架构以及资料介绍——常识
  • 【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化
  • 开源可视化工具对比:JimuReport VS DataEase
  • 2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究
  • shell与QQ邮箱的连接
  • 11.21 深度学习-tensor常见操作
  • 【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置
  • 基于官网的Vue-router安装(2024/11)
  • 未来已来:少儿编程竞赛聚焦物联网,激发创新潜力
  • archlinux安装waydroid
  • Oralce数据库巡检SQL脚本
  • CentOS使用中遇到的问题及解决方法
  • ThinkPad t61p 作SMB服务器,打印服务器,pc ,android ,ipad利用此服务器互传文件
  • php:使用Ratchet类实现分布式websocket服务
  • 储能场站安全风险挑战
  • Ubuntu系统为同一逻辑网口配置不同网段的IP
  • MySQL出现Waiting for table metadata lock的原因以及解决方法(已亲测)
  • 学会Lambda,让程序Pythonic一点
  • GDPU 信息安全 期末复习
  • Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程
  • 【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究
  • Mysql的UPDATE(更新数据)详解
  • 基于Java Springboot高校奖助学金系统
  • 如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
  • Python爬虫:深入探索1688关键词接口获取之道
  • Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
  • JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路