草庐IT

如何在你的电脑上完成whisper的简单部署

Wayne_WX 2023-04-15 原文

如何在你的电脑上完成whisper的简单部署(超详细教程)

前言

这几天正在做whisper相关的工作,github上的whisper源码,whisper相当容易安装,但当我在自己的电脑上安装使用时出现了各种各样的bug,正好需要写篇技术文档,顺便记录下安装环境中遇到的各种坑。(文章是基于windows10介绍的,不同的系统可能会有一些差异)

一、显卡驱动、CUDA ToolKit、cuDNN的下载

1. 显卡驱动

显卡驱动是最基础的,当然前提是你有一块GPU,并想用这个GPU完成一些工作,首先查看自己的显卡驱动是否符合自己的需求,在桌面空白处右击打开NVIDIA控制面板或者点击开始菜单右侧的搜索栏输入NVIDIA Control Panel,点击左下角的系统信息

可以看到自己的驱动程序版本为522.30,该版本已经满足我的需求,故没有进行更新。(可能有人会问怎么判断满足需求呢,其实这里的显卡驱动程序对于CUDA来说是向下兼容的,保持较新的版本即可)
如果你的显卡驱动不能满足你的需求,打开英伟达显卡驱动官网,选择自己电脑上对应的显卡驱动,比如我的显卡是Geforce GTX 1050Ti(Notebooks对应笔记本系列),点击搜索
可以看到当前最新的显卡驱动为528.49,点击下载–>同意并开始下载

按照提示完成驱动更新即可,这一步不会有坑。

2. CUDA ToolKit

CUDA和cuDNN的安装可以参考文章,这里做一下搬运。
进入CUDA官网,点击Download Now,此时进入的页面是最新版本的cuda12.0下载页面

下拉点击Resources中的Archive of Previous CUDA Releases.

可以找到之前的cuda版本,这里选择cuda11.7,选择相应的电脑配置

点击下载

运行安装程序,这里是一个临时目录,安装完成后会自动删除里边的文件,默认即可

点击ok—>同意并继续,

如果你是第一次安装点击精简即可(会默认安装在系统盘下),如果你是多次安装,点击自定义安装,不要选择下面三项

不要选CUDA中的Visual Studio Integration

点击下一步

记住这里的安装位置
安装完成后,查看系统变量中是否添加了路径,如果没有,需要自己添加

测试环境是否安装成功
运行cmd,输入nvcc --version即可查看版本号;
set cuda,可以查看 CUDA 设置的环境变量。

nvcc --version
set cuda

3. cuDNN的安装

点击cuDNN的下载地址,这里需要注册一个帐号,才能进入下载界面。

点击复选框

点击Archived cuDNN Releases选择对应版本

根据前面的CUDA版本下载

下载好的压缩包

解压,可以看到有三个文件夹
将这三个文件夹复制到cuda安装目录中,在安装cuda中提到的路径

拷贝时看到,CUDA 的安装目录中,有和 cuDNN 解压缩后的同名文件夹,这里不需要担心,直接复制即可。cuDNN 解压缩后的同名文件夹中的配置文件会添加到 CUDA安装目录中的同名文件夹中。

现在大家应该可以理解,cuDNN 其实就是 CUDA 的一个补丁而已,专为深度学习运算进行优化的,然后再添加环境变量。
添加至系统变量
往系统环境变量中的 path 添加如下路径(根据自己的路径进行修改)

验证是否安装成功
配置完成后,我们可以验证是否配置成功,主要使用CUDA内置的deviceQuery.exe 和 bandwidthTest.exe:
首先win+R启动cmd,cd到安装目录下的 …\extras\demo_suite,然后分别执行bandwidthTest.exe和deviceQuery.exe,应该得到下图结果:


参考博客:
【CUDA】cuda安装 (windows版)
至此显卡驱动、CUDA ToolKit、cuDNN安装完成。

二、windows下安装conda

可以参考文章conda的安装,Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 Conda 是为 Python 程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软件。
首先进入conda官网,选择适合自己版本的,本文以Windows为例,点击Download即可开始下载最新conda版本,conda的版本在这里无所谓的一般不会有影响。

下载完成后得到一个exe文件,双击即可开始安装:

点击Next:

点击I Agree:

这里可以选择用户,我选择的Just Me:

选择安装路径(路径名不要有中文),建议放在C盘(默认的安装位置),我的C盘资源紧张,放在了F盘上:

把这两项都勾选上,第一项是自动添加环境变量,无需手动添加,非常方便,接下来一直点击Next即可完成安装:

测试是否配置成功,WIN+R键输入cmd:

输入conda命令,出现如下界面,完成安装:

conda

三、使用scoop包管理工具完成ffmpeg安装

参考文章
Scoop是Windows的命令行安装程序,是一个强大的包管理工具。可以在github上找到其项目的相关信息。
ffmpeg堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器。
因为ffmpeg的安装比较复杂,可以借助scoop完成安装。
由于我的C盘空间有限,使用如下命令更改安装位置
首先在终端输入powershell:

输入以下命令:

#将Scoop安装到自定义目录(命令行方式),默认为C:\Users<user>\scoop
$env:SCOOP='E:\Applications\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
#将Scoop配置为将全局程序安装到自定义目录 SCOOP_GLOBAL(命令行方式),默认为C:\ProgramData\scoop
$env:SCOOP_GLOBAL='E:\Applications\GlobalScoopApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')

不会科学上网的可能无法使用 iwr -useb get.scoop.sh | iex 安装,可使用下面的脚本将链接替换

#可能需要通过下面的命令设置权限之后再安装
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
#iwr -useb get.scoop.sh | iex
#网络慢可以使用下面替换为cnpm和fastgit的链接
 iwr -useb https://raw.fastgit.org/ScoopInstaller/Scoop/master/bin/install.ps1 | %{$_.Content.replace("github.com","ghproxy.com/https://github.com").replace("raw.githubusercontent.com","ghproxy.com/https://raw.githubusercontent.com")} | iex

scoop安装完成,使用scoop安装ffmpeg

scoop install ffmpeg

如果下载速度慢,可以更改下载设置,参考文章,这里不再做过多介绍。

四、whisper安装使用

在终端执行命令

conda create -n whisper python=3.9
conda activate whisper
pip install git+https://github.com/openai/whisper.git

注意:从github下载好的whisper自带的依赖中torch是cpu版本,所以在clone完成后需要自行修改torch依赖,进入anaconda环境中比如我的路径如下:

F:\anaconda3\envs\whisper\Lib\site-packages

找到你自己的路径,将torch相关文件夹删除,在回到终端输入:

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia 

安装完成后,输入:

whisper FilePath --model_dir YourModelDir --model medium --language Chinese

Ok!接下来便可以体验whisper模型。

有关如何在你的电脑上完成whisper的简单部署的更多相关文章

  1. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  5. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  6. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  7. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  8. ruby-on-rails - 如何在 ruby​​ 交互式 shell 中有多行? - 2

    这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式ruby​​shell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f

  9. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  10. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

随机推荐