使用 CTranslate2 实现 Faster Whisper 的加速转录

使用 CTranslate2 实现 Faster Whisper 的加速转录

近年来,语音识别技术得到了快速发展。OpenAI 的 Whisper 模型作为其中的佼佼者,以其高精度和强大的性能广受欢迎。然而,其较长的推理时间和高内存消耗也成为了限制其应用的一大因素。为了解决这些问题,社区开发了 Faster Whisper,这是一个基于 CTranslate2 的 Whisper 模型重实现,旨在提供更快的转录速度和更低的内存消耗。

什么是 Faster Whisper?

Faster Whisper 是对 OpenAI Whisper 模型的重新实现,使用 CTranslate2 这一高效的 Transformer 模型推理引擎。与原版模型相比,Faster Whisper 在同等精度下,推理速度提高了最多四倍,同时内存消耗显著减少。通过在 CPU 和 GPU 上进行 8 位量化,其效率可以进一步提升。

基准测试对比

为了更直观地了解 Faster Whisper 的性能优势,我们来看一组基准测试数据。这些数据对比了不同实现方式在处理 13 分钟音频时的时间和内存使用情况。

Large-v2 模型在 GPU 上的性能对比
实现方式精度Beam size时间最大 GPU 内存最大 CPU 内存
openai/whisperfp1654m30s11325MB9439MB
faster-whisperfp16554s4755MB3244MB
faster-whisperint8559s3091MB3117MB
Small 模型在 CPU 上的性能对比
实现方式精度Beam size时间最大内存
openai/whisperfp32510m31s3101MB
whisper.cppfp32517m42s1581MB
whisper.cppfp16512m39s873MB
faster-whisperfp3252m44s1675MB
faster-whisperint852m04s995MB

安装和使用

安装步骤

Faster Whisper 可以通过 PyPI 直接安装:

pip install faster-whisper

注意:与 openai-whisper 不同,Faster Whisper 不需要在系统上安装 FFmpeg。音频解码使用的是 PyAV,这个库将 FFmpeg 库打包在其内。

GPU 环境配置

如果希望在 GPU 上运行,需要安装以下 NVIDIA 库:

  • cuBLAS for CUDA 12
  • cuDNN 8 for CUDA 12

最新版本的 CTranslate2 仅支持 CUDA 12。如果需要在 CUDA 11 上运行,可以降级到 CTranslate2 的 3.24.0 版本:

pip install --force-reinstall ctranslate2==3.24.0

使用示例

下面是一个使用 Faster Whisper 进行音频转录的示例代码:

from faster_whisper import WhisperModelmodel_size = "large-v3"# 在 GPU 上运行,使用 FP16 精度
model = WhisperModel(model_size, device="cuda", compute_type="float16")# 或在 GPU 上运行,使用 INT8 精度
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")# 或在 CPU 上运行,使用 INT8 精度
# model = WhisperModel(model_size, device="cpu", compute_type="int8")segments, info = model.transcribe("audio.mp3", beam_size=5)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))

扩展功能

支持 Distil-Whisper

Distil-Whisper 是 Faster Whisper 包兼容的简化版 Whisper 模型。以下示例展示了如何使用 distil-large-v3 模型进行推理:

from faster_whisper import WhisperModelmodel_size = "distil-large-v3"model = WhisperModel(model_size, device="cuda", compute_type="float16")
segments, info = model.transcribe("audio.mp3", beam_size=5, language="en", condition_on_previous_text=False)for segment in segments:print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
词级时间戳

可以启用词级时间戳以获取更精确的转录结果:

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)for segment in segments:for word in segment.words:print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))
VAD 过滤

通过集成 Silero VAD 模型,可以过滤掉音频中无语音的部分:

segments, _ = model.transcribe("audio.mp3", vad_filter=True)

结论

Faster Whisper 提供了一种高效的解决方案,使得 Whisper 模型在保证精度的前提下,显著提升了推理速度并降低了内存消耗。无论是在学术研究还是工业应用中,这一改进都具有重要的实际意义。

通过安装和配置 Faster Whisper,研究人员和开发者可以更加灵活和高效地处理大量音频数据,从而推动语音识别技术的进一步发展。

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

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

相关文章

个人职业规划(含前端职业线路、前端技术线路、前端核心竞争力、大龄程序员的出路)

1. 了解自己的兴趣与长处 喜欢擅长的事 职业方向 2. 设定长期目标(5年) 目标内容 建立自己的品牌建立自己的社交网络 适量参加社交活动,认识更多志同道合的小伙伴寻求导师指导 建立自己的作品集 注意事项 每年元旦进行审视和调整永葆积极…

哪个充电宝牌子好?性价比高与质量好并存!热门充电宝推荐!

随着科技的不断进步,我们的日常生活越来越依赖于便携式电子设备。然而,电池续航问题始终是这些设备的一大软肋。为了确保我们的智能手机、平板电脑、甚至是智能手表在忙碌的日子里始终有电,一个可靠的充电宝成为了我们的必备之选。面对市场上…

Nginx + Tomcat 负载均衡、动静分离

前言 Tomcat简介 最初是由Sun的软件构架师詹姆斯邓肯戴维森开发 安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件 Nginx 应用 Nginx是一款非常优秀的HTTP服务器软件 (1)支持高达50 000个并发连接数的响应…

Java中的CQRS和事件溯源模式解析

Java中的CQRS和事件溯源模式解析 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在软件开发领域,有许多设计模式和架构思想可以帮助开发人员构建高…

MR混合现实模拟陪同口译课堂情景

MR混合现实情景实训教学系统在陪同口译课堂上的应用: 首先,它能够提供逼真的模拟环境,使学生能够身临其境地体验陪同口译的实际情况,从而更好地理解和掌握口译技巧。此外,该系统还可以提供丰富的实景翻译素材&#xff…

scrapy模块的基础使用

scrapy模块是爬虫工作者最常用的一个模块之一,因它有许多好用的模板,和丰富的中间件,深受欢迎。 一,scrapy的安装 可以通过pypi的指引进行安装 在终端内输入以下代码: pip install scrapy 二,项目的建…

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但…

springboot知识点大全

文章目录 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面…

联邦学习——学习笔记1:FedAvg算法

文章目录 本笔记参考自b站up主:丸一口 原视频链接 如上图,现有6个医院:眼科、儿科、妇科、骨科、综合医院1、综合医院2。中间节点为政府。 现政府要求用各个医院的数据训练某个模型,希望对某些疾病进行一些预测,数据…

微信小程序canvas拖动卡顿问题解决方法

微信小程序canvas拖动卡顿解决handleTouchMove 问题:滑动严重卡顿。 分析: 可能是**handleTouchMove执行太快**,使用计时器控制执行速度,明显变流畅,上滑很流畅,但是下滑依旧卡顿。 handleTouchMove(e) …

JavaScript-环境对象

环境对象 指的是函数内部特殊的变量this,它代表了函数运行时所处的环境 作用:弄清this指向谁,可以使代码更整洁 直接调用函数的话,this指向的就是window函数 随调用this就指向谁 function fn(){console.log(this);}fn(); 直接调用…

详解|什么样的SSL证书能助力企业通过等保与密评?

企业在过等级保护(简称“等保”)与密码评测(简称“密评”)的时候,SSL证书作为网络安全的基础组件之一,其选择与部署对于企业顺利通过等保测评与密评至关重要。那什么样的SSL证书能够有效助力企业达成这一目…

展厅设计关键因素有哪些

1、选择一站式服务公司 企业不论参加展会还是做展厅设计装修,其目的都是为了更好的展示公司的产品,从而促进与客户的合作。那么展厅设计首先是要找展厅设计公司来做的,不过现在市面上有很多公司都可以设计制作展厅,这就需要客户去…

【系统架构设计师】四、嵌入式基础知识(体系结构|嵌入式系统|多核处理器)

目录 一、嵌入式微处理体系结构 1.1 冯诺依曼结构 1.2 哈佛结构 二、嵌入式系统 2.1 定义 2.2 嵌入式系统特性 三、嵌入式系统的分类 四、嵌入式系统 4.1 嵌入式数据库系统EDBMS 4.1.1.使用环境的特点 4.1.2 系统组成 4.2 嵌入式操作系统EOS 4.3 嵌入式实时操作系…

如何选择适合的LabVIEW版本进行开发

选择适合的LabVIEW版本对开发项目的成功至关重要。LabVIEW版本众多,每个版本都有其独特的功能和适用场景。以下从多个角度详细介绍如何选择LabVIEW版本。 1. 功能需求 基础功能 LabVIEW Base:适用于基本数据采集和简单仪器控制。包括大部分常见的功能&…

如何通过自定义模块DIY出专属个性化的CSDN主页?一招教你搞定!

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 💯如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…

速盾:cdn测试工具

CDN(Content Delivery Network,内容分发网络)是一种在互联网中广泛使用的技术,它能够将网站的静态资源分发到全球各地的节点服务器,以提高用户访问网站时的加载速度和稳定性。而CDN测试工具则是用来评估和监测CDN性能的…

Git回滚和撤销---吃上后悔药、坐上时光机

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 提交分3步:add、commit、push,回滚和撤销也分3种情况: 撤销add撤销commit回滚push,也就是回滚远…

Python机器学习分类算法(五)-- 最近邻算法(k-Nearest Neighbors,KNN)

最近邻算法原理 k-最近邻(k-Nearest Neighbors,KNN)算法是一种基本的机器学习分类和回归算法。在分类问题中,KNN通过测量不同特征值之间的距离来进行分类。它的工作原理是:存在一个样本数据集合,也称作训练…

哈尔滨等保的定级备案

哈尔滨等保的定级备案是确保信息安全,保障国家和人民利益的重要措施。在当前信息化社会,信息安全已成为国家发展的重要支撑,哈尔滨等保的定级备案工作显得尤为关键。本文将从哈尔滨等保定级备案的背景、定级标准、备案流程、实施意义等方面进…