从零在win10上测试whisper、faster-whisper、whisperx在CPU和GPU的各自表现情况
Anaconda是什么?
Anaconda 是一个开源的 Python 发行版本,主要面向数据科学、机器学习和数据分析等领域。它不仅包含了 Python 解释器本身,更重要的是集成了大量的用于科学计算、数据分析和机器学习相关的第三方库,并且提供了一个强大的包管理和环境管理工具——Conda。
通过Conda可以在一台电脑上,创建多个python的环境,非常自由的进行切换。
以下是 Anaconda 的主要特点和功能:
便捷的环境管理:Anaconda 通过其内置的包管理器 Conda,使得创建、管理和切换不同的 Python 环境变得极为简单。用户可以在不同项目之间轻松配置独立的环境,每个环境中可以安装特定版本的 Python 和其他库,避免了不同项目依赖之间的冲突。
丰富的数据科学工具:安装 Anaconda 时会附带一系列常用的数据科学库,如 NumPy、Pandas、Matplotlib、Scikit-learn 等,以及 Jupyter Notebook 这样的交互式开发环境。还包括其他有用的工具,例如 Spyder IDE(集成开发环境)和 IPython 终端等,这些都为数据科学家提供了开箱即用的一站式解决方案。
高效的包管理:Conda 不仅可以管理 Python 包,还能管理非 Python 软件包,如R语言相关包或 C/C++ 编译器等。Conda 能够智能地解决复杂的软件依赖关系,确保所有库和组件都能正确安装和协同工作,极大地提高了开发效率。
跨平台支持:Anaconda 支持 Windows、Linux 和 MacOS 等多种操作系统,便于在不同的开发平台上统一使用和部署。
下载anaconda并在window上安装
https://www.anaconda.com/download/success
这是anaconda的官网下载地址
这里要注意python的版本,尽量跟它保持一致,点击下载之后,如果网络好的话等待一会儿就下载完毕了。
下载完毕后,打开exe进行安装
这里安装时间可能会久一些,请多耐心等待一会儿吧。
确实等了蛮久的时间的,但具体忘记了,可能大致在15-20分钟左右吧,千等万等终于安装成功了
此时用命令行来查看还是不行的,因为没有配置环境变量
以此点击:我的电脑=> 右键属性=>高级系统设置=>环境变量=> Path =>编辑
将下面的五个路径添加到 Path中去
注意替换成你的安装路径
D:\ProgramData\anaconda3
D:\ProgramData\anaconda3\Scripts
D:\ProgramData\anaconda3\Library\mingw-w64\bin
D:\ProgramData\anaconda3\Library\usr\bin
D:\ProgramData\anaconda3\Library\bin
点击三次确定之后,再在命令行中运行
这样说明真正的安装成功了,下面再来看看如何使用
conda如何来使用呢
- 基础命令
// 查看版本
conda -V
// 查看安装了那些包
conda list
//查看当前存在哪些虚拟环境
conda env list 或 conda info -e
//检查更新当前conda
conda update conda
// 使用conda安装python依赖
conda install xxxx
- 创建一个虚拟环境
因为我之前电脑上安装的就是3.11.2的版本,所以在这里直接继续指定python版本为3.11.2
conda create -n python3112 python=3.11.2
此时可以查看window电脑上拥有那些虚拟环境
conda env list
激活环境
conda activate python3112
首次执行上面的命令可能需要使用conda init
,执行完毕后关闭当前shell脚本命令,再重新打开执行激活环境的命令
退出虚拟环境
conda deactivate
注意:看上面我是直接在CMD下使用的命令,比如如果你想在git bash下运行conda的话
echo ". /d/ProgramData/anaconda3/etc/profile.d/conda.sh" >>~/.profile
上面替换成自己的安装目录,执行完毕之后,关闭命令窗口,重新打开一个新的便可以执行 conda命令了
conda安装成功之后,安装依赖尽量使用conda 来,就不要使用pip了
初始使用了几天的conda,感觉还不错
如何在window上开启GPU
首先使用 cmd 命令行输入 nvidia-smi ,在第一行最右边可以看到CUDA的版本号,我的版本是12.3
https://pytorch.org/get-started/locally/
打开网址选择一个比较靠近的版本
最终选择完生成命令为
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
如果有卡住的可能就是网络有问题了,可以直接到镜像源进行下载安装 https://download.pytorch.org/whl/torch_stable.html
这里也需要你的耐心等待哟,因为Pytorch 的安装包还是不小的。
多等一会儿,出现done则代表安装成功了,然后在命令行中输入pip list则可以看到torch相关的包都安装了
CUDA是什么:CUDA是NVIDIA推出的一种编程技术。它允许开发者使用C语言来编写能在NVIDIA的图形处理器上运行的代码。通过CUDA,开发者可以将GPU用于通用的并行计算,大大提高了计算效率。
CUDA的一个重要特点是,它允许软件开发者直接使用NVIDIA的GPU来执行某些计算密集型的任务。这是因为GPU内部有许多并行处理单元,可以同时执行许多计算任务,从而大大提高了计算速度。
另外,CUDA还提供了一套完整的开发工具链,包括编译器、调试器和性能分析器,使得开发者可以更方便地开发和优化CUDA程序。
接下来直接验证CUDA是否可用,直接继续命令行中输入 python
import torch
torch.cuda.is_available()
如果输出为true则代表可以使用GPU显卡了
准备whisper、faster-whisper、whisperX的测试代码
import whisper
from whisper.utils import get_writer
import os
import time
import torch
import os #引用OS
from faster_whisper import WhisperModel
import whisperx
import gc
def whisperx_test():
device = "cpu"
model_size = "large-v3"
audio_file = "test.mp4"
batch_size = 16
compute_type = "int8"
# widnow CPU
model = whisperx.load_model("large-v3", device, compute_type=compute_type)
# window GPU
# model = whisperx.load_model("large-v3", "cuda", compute_type="float16")
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=batch_size)
print(result["segments"])
def faster_whisper_test():
model_size = "large-v3"
## window cpu
model = WhisperModel(model_size, device="cpu", compute_type="int8", cpu_threads=16)
# window gpu
# model = WhisperModel(model_size, device="cuda", compute_type="float16")
segments, info = model.transcribe("test.mp4", 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))
def whisper_test():
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
filename = "test.mp4"
## window GPU cuda
## window CPU cpu
## mac CPU cpu
## mac GPU
model = whisper.load_model("large-v3",device="cuda")
result = model.transcribe(audio=filename, fp16 =False)
output_directory = "."
word_options = {
"highlight_words": True,
"max_line_count": 50,
"max_line_width": 3
}
srt_writer = get_writer("srt", output_directory)
srt_writer(result, filename, word_options)
if __name__ == "__main__":
# print(torch.cuda.is_available())
start_time = time.time() # 开始时间
print("start time:", start_time)
# whisper_test()
# faster_whisper_test()
whisperx_test()
end_time = time.time() # 结束时间
print("Execution time: ", end_time - start_time, "seconds")
三个开源项目的地址分别是:
- https://github.com/openai/whisper
- https://github.com/AlexxIT/FasterWhisper
- https://github.com/m-bain/whisperX
根据代码要进行安装依赖,也是我从三个开源项目的readme中可以找到安装依赖的命令
// 安装openai-whisper
pip install -U openai-whisper --user
//或者
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
// 安装faster-whisper
pip install faster-whisper
//或者
pip install git+https://github.com/openai/whisper.git
//安装whisperx
pip install git+https://github.com/m-bain/whisperx.git
//如果运行后,看到ffmpeg not found
要记得安装一下ffmpeg
当然上面的pip也可以换成conda
准备了三个方法
- whisper_test 来测试openai官网发布的whisper
- faster_whisper_test来测试改进版的faster_whisper
- whisperx来测试基于faster_whisper再次改进的版本
测试的时候,我是准备了一个30秒的小视频 test.mp4。
然后分为CPU和GPU进行分别测试。
根据测试情况进行注释上述方法即可,运行如下命令即开启测试
python main.py
在这里先附上我的电脑配置,其实是比较一般的
window上测试openai的whisper
- 先来看GPU测试情况
我先打开任务管理器 => 性能 => GPU
没进行测试的时候GPU的占用其实很少的,如果一旦开启了GPU测试就可以看到下图所示的GPU内存占用
最终在GPU运行的情况下,我测试了三次
window-whisper-GPU:大致平均150秒
- 再来测试CPU的情况
运行之后我的CPU直接100%,直接拉满了
同样,再使用CPU的情况下,测试了三次
看来我这个GPU显卡还是非常一般的,竟然没有CPU的快
window-whisper-CPU:大致平均100秒
window上测试faster-whisper
- 先来看GPU测试情况
同样分三次进行测试大致也就是50秒左右,在GPU的情况下,内存占用居然比whisper的少了近一半,难道速度也能提升一半吗?
window-faster-whisper-GPU: 大致平均50秒左右
没想到真的提升了速度,而且不止一半,真不错
- 再来测试CPU的情况
同样的CPU接近100%了,但是内存好像比原来少了差不多一半
window-faster-whisper-CPU: 大致平均50秒左右
window上测试whisperX
GPU 测试三次
window-whisperX-GPU: 大致平均36秒左右
CPU 测试三次
window-faster-whisperX-CPU: 大致平均43秒左右
没想到的是whisperx在faster-whisper的基础上还有提升
mac上运行whisper
本来还想继续在mac上测试,发现除了openai的whisper能在CPU下运行,其他的跑起来都有问题,可能也是我自己的问题吧
mac-openai-whisper-CPU:大致50秒左右
这是自Mac M1 Pro上做的测试
总结一下
我只是进行简单的测试做了一个对比。mac的CPU还是非常强大的,当然了价格也摆在了那里。
我这里测试的时候也没有进行过多的参数调整,有时间的话可以进行比如 int8、float16、float32等等其他的多组测试数据。
接下来看看有机会再来试试另外两个开源模型
从零在win10上测试whisper、faster-whisper、whisperx在CPU和GPU的各自表现情况的更多相关文章
- 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试
目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...
- Win10上部署Apollo配置中心
基于Docker在Win10上部署Apollo配置中心 https://www.jianshu.com/p/a1215056ce75 http://nobodyiam.com/2016/07/09/i ...
- Win10 上 安装Arduino 驱动 和 Arduino IDE 1.6.9
Win10 安装Arduino IDE软件 和 驱动 在Win10 上安装最新的Arduino IDE (1.6.9安装包)很简单,并且不行要手动安装Arduino板子的驱动,整个安装过程都当前的简单 ...
- rsync实现负载均衡集群文件同步,搭建线上测试部署环境
闲来无事,搭建一个负载均衡集群,至于负载均衡集群搭建过程,找时间写下.这次主要写集群之间的文件同步,以及线上测试环境的搭建. 笔者看过很多公司都没有线上测试环境,真是崩溃了,不造怎么确保线上线下环境一 ...
- iOS中远程推送实现—在Apple的生产环境上测试Push Notifications功能
1.在“Provisioning Profiles”中点击“Add”按钮. 2.在“What type of provisioning profile do you need?”页面中选择“Distr ...
- 在PC上测试移动端网站和模拟手机浏览器的5大方法
在PC上测试移动端网站和模拟手机浏览器的5大方法 来源:互联网 作者:佚名 时间:03-19 10:14:54 [大 中 小] 最近公司要开发网站的移动版,让我准备准备知 ...
- Python编写的Linux网络设置脚本,Debian Wheezy上测试通过
hon编写的Linux网络设置脚本,Debian Wheezy上测试通过 阿里百川梦想创业大赛,500万创投寻找最赞的APP 技术细节参见Linux网络设置高级指南 注意事项参见程序注释 ...
- VS 2013 professional版在win10上安装出错的解决方法
VS 2013 professional版在win10上安装出错的解决方法 win10上安装完VS 2012 professional和VS 2017 professional后,由于项目的需要,要在 ...
- 20165221-week2课上测试补做
week2-课上测试补做 测试一: 参考附图代码,编写一个程序 "week0201学号.c",判断一下你的电脑是大端还是小端. 提交运行结果"学号XXXX的笔记本电脑是X ...
- Win10上默认VS 2017以管理员身份运行
Win10上的UAC虽然是个好东西,但是对于使用开发工作的技术人员来说有时候也挺麻烦.这里有一个让VS2017无论如何都以管理员身份运行的方法. 1.进入VS2017的安装目录:..\Microsof ...
随机推荐
- C++设计模式 - 职责链模式(Chain of Resposibility)
数据结构模式 常常有一-些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用.这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无 ...
- 01 jQuery初使用
01 jQuery初使用 jQuery是一个曾经火遍大江南北的一个Javascript的第三方库. jQuery的理念: write less do more. 其含义就是让前端程序员从繁琐的js代码 ...
- #第一类斯特林数,NTT#CF960G Bandit Blues
题目 给你三个正整数 \(n\),\(a\),\(b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数, 定义 \(B\) 为一个排列中是后缀最大值的数的个数,求长度为 \(n\) 的排列中满 ...
- #差分约束系统,最长路,线段树优化建边#洛谷 3588 [POI2015] PUS
题目 给定一个长度为\(n\)的正整数序列 \(a\) ,每个数都在 \(1\) 到 \(10^9\) 范围内, 告诉你其中 \(s\) 个数,并给出 \(m\) 条信息,每条信息包含三个数 \(l, ...
- Qt线程简单使用三:QRunnable~线程池
需求: 点击QPushButton按钮,QLabel中的数字,不断累加,一直到999. 做法: 创建任务类,点击QPushButton后,将任务类放入线程池中运行,通过任务类while循环,不断发 ...
- HarmonyOS:Neural Network Runtime对接AI推理框架开发指导
场景介绍 Neural Network Runtime作为AI推理引擎和加速芯片的桥梁,为AI推理引擎提供精简的Native接口,满足推理引擎通过加速芯片执行端到端推理的需求. 本文以图1展示的A ...
- centos-stream-9 centos9 配置国内yum源 阿里云源
源配置 tips: yum配置文件路径 /etc/yum.repos.d/centos.repo 1.备份源配置 [Very Important!] mv /etc/yum.repos.d/cento ...
- 中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结
简介: 中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现.Kubernetes 原生服务部署.服务治理等核心能力.来自中仑网络的技术负 ...
- 云效DevOps实践-如何基于云效实现测试自动化集成和分析
简介: 对于现代软件研发来说,持续.快速.高质量.低风险地交付需求特性,是业务对研发的主要诉求.而要做到这一点,除了要有良好的架构设计.卓越的工程能力,快速可靠的测试反馈也是其非常重要的一环,达到这一 ...
- 工商银行分布式服务C10K场景的解决方案
简介: 未来,中国工商银行将持续致力于 Dubbo 的金融级规模化应用. 作者:颜高飞,微服务领域架构师,主要从事服务发现.高性能网络通信等研发工作,擅长 ZooKeeper.Dubbo.RPC 协议 ...