如何在矩池云上安装语音识别模型 Whisper
如何在矩池云上安装语音识别模型 Whisper
Whisper 是 OpenAI 近期开源的一个语音识别的模型,研究人员基于 680,000 小时的标记音频数据进行训练,它同时也是一个多任务模型,可以进行多语言语音识别以及语音翻译任务,可以将语音音频转录为所讲语言的文本,以及翻译成英语文本。
查看论文:https://cdn.openai.com/papers/whisper.pdf 开源代码:https://github.com/openai/whisper
Whisper 的训练数据中65%为英语音频和相匹配的转录文本,大约18%为非英语音频和英语转录文本,17% 为非英语音频和相应语言的转录文本。非英语的数据中包含了98种不同的语言,而某一特定语言中的性能与所采用这一语言的训练的数据量直接相关,如在英语语音的识别中,模型已接近人类水平的鲁棒性和准确性。
矩池云安装 Whisper 过程
环境配置&租用机器
在 Whisper 的 Setup 中,我们可以看到所需要的都是Python 3.9.9和PyTorch1.10.1,同时也兼容更新的版本。

打开矩池云-主机市场,在此我们选中 K80 进行尝试,根据 Setup 可以选择Pytorch 1.12系统镜像,点击下单。

运行后,点击 JupyterLab,进而“点击打开”。

下载代码&模型
进入页面后,点击 Terminal

打开 Terminal 后,输入以下代码
pip install git+https://github.com/openai/whisper.git
如下

安装成功后,页面提示 successfully installed...

如果系统中没有安装过 ffmpeg,还需输入以下内容进行安装
sudo apt update && sudo apt install ffmpeg
安装过程中会提示 是否继续,输入 y ,回车即可

安装完成后,状态如下

使用 Whisper 进行转录
准备文件
方法1: 通过矩池云网盘客户端上传文件
打开网盘客户端,可以点击上传,选择文件,或者直接将文件拖拽到客户端界面。

方法2:通过 JupyterLab 上传文件
在页面上点击,进入到/mnt,可以直接将音频文件在此进行上传。(此处我们自建了一个文件夹,大家可以根据需要来进行操作)

进行转录/翻译
Whisper 在默认条件下,输入音频是进行转录的 我们以转录为例子,在左侧文件夹,复制文件路径,

输入 whisper 路径如下
whisper mnt/int/QA2.wav
在不对其他项目进行设定的情况下,系统会自动检测语言,进而进行转录,

以吴恩达 Andrew Ng 和 AI 科学家Christine Payne 的一次访谈 的音频转录为例,系统将自动生成时间轴和文字内容,如下。

同时,在默认文件夹还会生成 srt txt vtt三种格式的文件,以方便使用者在不同情境下调用,指定文件夹也可以通过指令 --output_dir 进行指定。

针对于多个文件,处理方式为直接将多个文件路径放置于 whisper 之后,即可逐个进行处理。

参数解析
Whisper 指定运行参数方式为:whisper 音频路径 --具体任务。 在 whisper 中,更多可运行参数如下:
| 参数名 | 描述 | 默认值 |
|---|---|---|
| [--model {tiny.en,tiny,base.en,base,small.en,small,medium.en,medium,large}] | --model 模型类型 从小到大的不同模型,分别为tiny.en,tiny,base.en,base,small.en,small,medium.en,medium,large | |
| [--model_dir MODEL_DIR] | 存储模型文件的路径 | ~/.cache/whisper |
| [--device DEVICE] | 使用Pytorch的设备(CPU or GPU) | CUDA |
| [--output_dir OUTPUT_DIR] | -- output_dir 保存输出的路径 | None |
| [--verbose VERBOSE] | 是否打印过程和debug信息 | True |
| [--task {transcribe,translate}] | [--task {transcribe,translate}] --task 任务:是否执行 X->X 语音识别 ('transcribe') 或 X->英文翻译 ('translate') | transcribe |
|
[--language {af,am,ar,as,az,ba,be,bg,bn,bo,br,bs,ca,cs,cy,da,de,el,en,es,et,eu,fa,fi,fo,fr,gl,gu,ha,haw,hi,hr,ht,hu,hy,id,is,it,iw,ja,jw,ka,kk,km,kn,ko,la,lb,ln,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,nn,no,oc,pa,pl,ps,pt,ro,ru,sa,sd,si,sk,sl,sn,so,sq,sr,su,sv,sw,ta,te,tg,th,tk,tl,tr,tt,uk,ur,uz,vi,yi,yo,zh,Afrikaans,Albanian,Amharic,Arabic,Armenian,Assamese,Azerbaijani,Bashkir,Basque,Belarusian,Bengali,Bosnian,Breton,Bulgarian,Burmese,Castilian,Catalan,Chinese,Croatian,Czech,Danish,Dutch,English,Estonian,Faroese,Finnish,Flemish,French,Galician,Georgian,German,Greek,Gujarati,Haitian,Haitian Creole,Hausa,Hawaiian,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Italian,Japanese,Javanese,Kannada,Kazakh,Khmer,Korean,Lao,Latin,Latvian,Letzeburgesch,Lingala,Lithuanian,Luxembourgish,Macedonian,Malagasy,Malay,Malayalam,Maltese,Maori,Marathi,Moldavian,Moldovan,Mongolian,Myanmar,Nepali,Norwegian,Nynorsk,Occitan,Panjabi,Pashto,Persian,Polish,Portuguese,Punjabi,Pushto,Romanian,Russian,Sanskrit,Serbian,Shona,Sindhi,Sinhala,Sinhalese,Slovak,Slovenian,Somali,Spanish,Sundanese,Swahili,Swedish,Tagalog,Tajik,Tamil,Tatar,Telugu,Thai,Tibetan,Turkish,Turkmen,Ukrainian,Urdu,Uzbek,Valencian,Vietnamese,Welsh,Yiddish,Yoruba}]
|
--language 语言:原音频中使用的语言 | |
| [--temperature TEMPERATURE] | --temperature 温度参数:文章使用的是基于温度系数的采样,这个参数就是采样的温度系数 | |
| [--best_of BEST_OF] | 在温度非0时的抽样使用的候选词数 | 5 |
| [--beam_size BEAM_SIZE] | beam搜索中的beam数据的数目,仅在温度为0时可用 | 5 |
| [--patience PATIENCE] | beam解码是使用的可选耐性系数 optional patience value to use in beam decoding, as in https://arxiv.org/abs/2204.05424, the default (1.0) is equivalent to conventional beam search (default: None) |
None |
| [--length_penalty LENGTH_PENALTY] | -- length_penalty 惩罚系数:用于正则化的 optional token length penalty coefficient (alpha) as in https://arxiv.org/abs/1609.08144, uses simple length normalization by default (default: None) 可选的惩罚系数$\alpha$ |
None |
| [--suppress_tokens SUPPRESS_TOKENS] | 采样期间要抑制的token ID的逗号分隔列表;“-1”时将抑制大多数特殊字符(常用标点符号除外) | -1 |
| [--initial_prompt INITIAL_PROMPT] | 可选文本,作为第一个窗口的提示。 | None |
| [--condition_on_previous_text CONDITION_ON_PREVIOUS_TEXT] | --condition_on_previous_text 先前文本使用状况:如果为 True,则提供模型的先前输出作为下一个窗口的提示; 禁用可能会使文本跨窗口不一致,但模型变得不太容易陷入故障 | |
| [--fp16 FP16] | 在fp16中进行推理 | True |
| [--temperature_increment_on_fallback TEMPERATURE_INCREMENT_ON_FALLBACK] | --temperature_increment_on_fallback 回退温度系数:当解码未能满足以下任一阈值时的回退增加的温度 | 0.2 |
| [--compression_ratio_threshold COMPRESSION_RATIO_THRESHOLD] | compression_ratio_threshold 压缩率阈值:如果gzip压缩比高于这个值,则认为解码失败 | 2.4 |
| [--logprob_threshold LOGPROB_THRESHOLD] | 如果平均对数概率低于此值,则将解码视为失败 | -1.0 |
| [--no_speech_threshold NO_SPEECH_THRESHOLD] | --no_speech_threshold 静音阈值:如果 < | nospeech |
| [--threads THREADS] | 使用Pytorch CPU做推理时,使用的CPU线程数 | 0 |
保存环境,下次直接调用镜像
如果使用比较顺利,希望下次可以直接启动已经安装好的 Whisper 的镜像,可以在此处“保存到个人环境”,如果是团队共享,则可以“保存到团队环境”

如果已经矩池云微信公众号上绑定过账户,则在手机上同时会收到保存环境成功的提醒。

保存环境后,下次使用该环境,可以直接在“我的环境”中迅速打开,无需再重复进行上一次的设置

优势和局限性
我们针对一段在 CVPR 2022 会议上一段技术音频同时使用 Youtube 生成的字幕与 Whisper 生成的字幕进行了比对。
句子完整性更好
Whisper 能按照speaker语气停顿断句,断句后有的甚至影响了精准性 vs 不破坏句子完整性,保持原话轮、原语义群;

精准度更高
Whisper 在精准度上确实比较高,比如如下这个例子。

这种精准度,同时体现在弱语气/低语调的插入语/状语的处理结果更优,如下。

在数字方面,精准度似乎也更胜一筹。

更重要的是,我们发现一些专业术语的转录方面,Whisper 也呈现出更精准的状态。

当然,以上并具有统计学意义,只是我们在做尝试的时候发现的一些 Whisper 优秀之处。
局限性
当然,Whisper 也有其局限性,我们也汇集了一些如下情形。
1、目前 Whisper 模型只能对语音识别后,转换为对应语言的文本,或将其翻译为英语,则意味着在翻译这一层面,最终无法实现由英语转换为其他语言,在这一方面,其他模型在多语言方面可能去的了更多的进展;
2、在实时性方面,Whisper 模型本身不支持即使转录的功能,但是官方认为其速度和规模可以支持实时转译,但仍需在此基础上进行二次开发; 3、如输入的音频中为多语言混合,Whisper 对于这种情景也暂无解决方案; 4、此外,对于环境音比较嘈杂的情况(比如有噪音,或者有背景音乐),如不设定具体的 temperature ,有一定可能转录结果会有所不同,所以如有这种情况可以进行设置,关于 Temperature 的一些信息可以参考https://algowriting.medium.com/gpt-3-temperature-setting-101-41200ff0d0be。
如何在矩池云上安装语音识别模型 Whisper的更多相关文章
- 矩池云上安装ikatago及远程链接教程
https://github.com/kinfkong/ikatago-resources/tree/master/dockerfiles 从作者的库中可以看到,该程序支持cuda9.2.cuda10 ...
- 矩池云上安装yolov4 darknet教程
这里我是用PyTorch 1.8.1来安装的 拉取仓库 官方仓库 git clone https://github.com/AlexeyAB/darknet 镜像仓库 git clone https: ...
- 矩池云上安装yolov5并测试教程
官方仓库:https://github.com/ultralytics/yolov5 官方文档:https://docs.ultralytics.com/quick-start/ 此案例我是租用了k8 ...
- 矩池云上安装及使用Milvus教程
选择cuda10.1的镜像 更新源及拷贝文件到本地 apt-get update cp -r /public/database/milvus/ / cd /milvus/ cp ./lib/* /us ...
- 矩池云上安装 NVCaffe教程
使用的是P100,cuda11.1base镜像 创建虚拟环境 conda create -n py36 python=3.6 conda deactivate conda activate py36 ...
- 矩池云上安装caffe gpu教程
选用CUDA10.0镜像 添加nvidia-cuda和修改apt源 curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_6 ...
- 矩池云上编译安装dlib库
方法一(简单) 矩池云上的k80因为内存问题,请用其他版本的GPU去进行编译,保存环境后再在k80上用. 准备工作 下载dlib的源文件 进入python的官网,点击PyPi选项,搜索dilb,再点击 ...
- 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境
这是 CVPR 2018 的一篇少样本学习论文:Learning to Compare: Relation Network for Few-Shot Learning 源码地址:https://git ...
- 矩池云上使用nvidia-smi命令教程
简介 nvidia-smi全称是NVIDIA System Management Interface ,它是一个基于NVIDIA Management Library(NVML)构建的命令行实用工具, ...
- 矩池云上TensorBoard/TensorBoardX配置说明
Tensorflow用户使用TensorBoard 矩池云现在为带有Tensorflow的镜像默认开启了6006端口,那么只需要在租用后使用命令启动即可 tensorboard --logdir lo ...
随机推荐
- Vue3中ref和toRef的区别
1. ref是复制,视图会更新 如果利用ref将某一个对象中的某一个属性值变成响应式数据 我们修改响应式数据是不会影响原始数据的; 同时视图会跟新. ref就是复制 复制是不会影响原始数据的 < ...
- 在web中,用户输入的文字过多 和页面排版一行显示不下 怎么办
在写管理系统中, 如果用户在input中,表单输入过多,应该如何去处理 常用的解决办法是: 1==>用户只能够输入一定范围内的字数 2==>超出几个字后(宽度)使用省略号显示. 3==&g ...
- 当爬虫工程师遇到 CTF丨B 站 1024 安全攻防题解
答案参考 第一题:a1cd5f84-27966146-3776f301-64031bb9 第二题:36c7a7b4-cda04af0-8db0368d-b5166480 第三题:9d3c3014-6c ...
- 基于密码学的身份混淆系统 -- idmix
简介 Hyperledger Fabric的Idemix是一个基于密码学的身份混淆系统,它提供了一种在区块链网络中实现用户隐私的方法.Idemix的主要特性是它的零知识证明系统,这是一种允许用户证明他 ...
- openim支持十万超级大群
钉钉:根据相关监管要求,新建普通群人数上限调整为500人,不支持群人数扩容. 企业微信:内部群聊人数最多支持2000人,群个数无上限.全员群人数最多支持10000人.企业微信用户创建的外部群人数最多支 ...
- Go语言的原子操作atomic
atomic 原子操作 Go中原子操作的支持 CompareAndSwap(CAS) Swap(交换) Add(增加或减少) Load(原子读取) Store(原子写入) 原子操作与互斥锁的区别 at ...
- 7.1 Windows驱动开发:内核监控进程与线程回调
在前面的文章中LyShark一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以监控进程线程创建为例,在Win10系统中监控进程与线程可以使用微软提供给我们的两个新函数来 ...
- Primo Ramdisk SCSI虚拟硬盘和Direct-IO虚拟硬盘
Primo Ramdisk 使用不同的虚拟技术可创建两种类型的虚拟硬盘:SCSI 虚拟硬盘和 Direct-IO 虚拟硬盘. 本篇主要比较两者之间的差异. SCSI 虚拟硬盘遵循SCSI规范,行为上几 ...
- Leetcode刷题第五天-二分法-回溯
215:第k个最大元素 链接:215. 数组中的第K个最大元素 - 力扣(LeetCode) em~~怎么说呢,快速选择,随机定一个目标值,开始找,左边比目标小,右边比目标大,左右同时不满足时,交换左 ...
- JuiceFS v1.0 正式发布,首个面向生产环境的 LTS 版本
今天,JuiceFS v1.0 发布了 经过了 18 个月的持续迭代和大量生产环境的广泛验证,此版本将成为第一个被长期维护的稳定版(LTS).同时,该版本提供完整的向前兼容,所有用户可以直接升级. J ...