超快的 AI 实时语音转文字,比 OpenAI 的 Whisper 快4倍 -- 开源项目 Faster Whisper

faster-whisper 这个项目是基于 OpenAI whisper 的模型,在上面的一个重写。

使用的是 CTranslate2 的这样的一个库,CTranslate2 是用于 Transformer 模型的一个快速推理引擎。

在相同精度的情况下,faster-whisper 的速度比 OpenAI whisper 快 4 倍,并且使用更少的内存。

这是 faster-whisper 与 OpenAI whisper 的测试对比结果,使用了一个13分钟的音频做的测试。

OpenAI whisper 用了4分30秒,faster-whisper 只用了54秒。

并且,faster-whisper 使用的 CPU 和 GPU 都只有 OpenAI whisper 的三分之一左右。

性能大幅提升,资源占用大幅降低,就是马跑的更快了,吃的更少了。

感紧跑起来试试。

本地安装运行

faster-whisper 需要 Python 3.8 之后的版本,可以创建Python虚拟环境来实现。

安装 faster-whisper :

pip install faster-whisper

Python代码:

from faster_whisper import WhisperModel# 指定模型
model_size = "large-v3"# or run on CPU with INT8
model = WhisperModel(model_size, device="cpu", compute_type="int8")# 加载音频,执行语音识别
segments, info = model.transcribe("Haul.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))

第一次执行时,会自动加载模型。

然后开始识别,输出识别结果。

以上是在 CPU 上的运行过程,如果想要更好的运行效率,自然是在 GPU 上跑。

使用 GPU,需要安装一些辅助。

以 N 卡为例,先安装 NVIDIA 相关的东西。

打开网页:

developer.nvidia.com/cudnn

下载安装。

打开网页:

developer.nvidia.com/cuda-downloads

下载安装。

安装完成后,打开安装目录,例如我的是:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin

找到其中的文件 cublas64_12.dll,复制一份,改名为 cublas64_11.dll

打开网页:

github.com/Purfview/whisper-standalone-win/releases/tag/libs

下载解压,根据提示放入相应位置。

安装依赖库:

pip install nvidia-cublas-cu11 nvidia-cudnn-cu11

然后就可以使用 GPU 运行了。

Python 代码:

from faster_whisper import WhisperModelmodel_size = "large-v3"# 使用 GPU 运行,指定精度 INT8
model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")# 加载音频并执行识别
segments, info = model.transcribe("Haul.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))

怎么样,感觉不错吧,有兴趣的话,快试试吧。

项目地址:

github.com/SYSTRAN/faster-whisper

#AI 人工智能,#OpenAI whisper, #fast-whisper,#ChatGPT,#语音转文字,#gpt890

信息来源 gpt890.com/article/35

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

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

相关文章

【模板】AcWing873. 《欧拉函数》(C++)

【题目描述】 给定 n 个正整数 ,请你求出每个数的欧拉函数。 欧拉函数的定义 【输入格式】 第一行包含整数 n。 接下来 n 行,每行包含一个正整数 。 【输出格式】 输出共 n 行,每行输出一个正整数 的欧拉函数。 【数据范围】 1≤n≤1…

从零开始学习在VUE3中使用canvas(六):lineCap(线条端点样式)

一、简介 lineCap能够让我们设置线条的端点样式,例如 1. butt const ctx canvas.getContext("2d");ctx.lineCap "butt"; // 默认样式,也可以显式指定 2.round const ctx canvas.getContext("2d");//圆头ctx.lineCap …

信号量(semaphore):解决并发问题的有力工具

信号量(semaphore):解决并发问题的有力工具 记得操作系统课程中,导师曾提出一个引人深思的观点:“信号量几乎可以应对所有的并发问题。”虽然这句话的真实度有待商榷,但不可否认的是,信号量为我…

VUE3.0(一):vue3.0简介

Vue 3 入门指南 什么是vue Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界…

iOS应用审核问题解决方案及优化方法 ✨

摘要 本文将针对iOS应用提交审核时可能遇到的问题,如“你必须在Xcode中添加com.apple.developer.game-center密钥”,以及突然间提交送审报错情况进行探讨。通过大量查询资料和尝试,结合案例分析,提供了解决方案和优化方法&#x…

【leetcode热题】 位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 1 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言(如 Java)中…

深入理解MySQL中的JOIN算法

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 目录 一、引言二、嵌套循环连接(Nested-Loop Join)2.1 工作原理2.2 性能考虑2.3 优化策略 三、块嵌套循环…

paddlepaddle框架构建数据集进行分类问题的时候,会发现数据集在构建的过程中不会构建标签(花分类)

问题描述 在做一个paddlepaddle项目的时候,需要使用神经网络对他进行分类,数据集的结构如下图,这时候我们可以使用常用dataset方法对数据集进行构建。 这时候我们就会发现一个问题,就是这个矿建不是构建标签,也就是说…

深入浅出Reactor和Proactor模式

Reactor模式和Proactor模式是两种常见的设计模式,用于处理事件驱动的并发编程。它们在处理IO操作时有着不同的工作方式和特点。 对于到来的IO事件(或是其他的信号/定时事件),又有两种事件处理模式: Reactor模式&…

基于springboot+vue的教学改革项目管理系统(源码+论文)

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

【Android】【Bluetooth Stack】蓝牙音乐协议分析之A2DP和AVRCP连接流程(超详细)

1. 精讲蓝牙协议栈(Bluetooth Stack):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅,【蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待! 1. 协议架构 上面描述的就是整体的协议架构,我们针…

注解总结,Java中的注解,springboot中的注解

注解总结 1、Junit 开始执行的方法:初始化资源,执行完之后的方法:释放资源 测试方法,必须是:公有、非静态、无参无返回值的 在一个类中,可以定义多个测试方法,每个测试方法可以单独运行&#…