摘要
Whisper 由 OpenAI 在2022年9月21日开源,号称其英文语音辨识能力已达到人类水准。Whisper 是一种通用的语音识别模型,它是在不同音频的大型数据集上训练的,也是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。
1 whisper
简介
Whisper
由 OpenAI 在2022年9月21日开源,号称其英文语音辨识能力已达到人类水准。Whisper
是一种通用的语音识别模型,它是在不同音频的大型数据集上训练的,也是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。
2 whisper
环境配置
2.1 安装 whisper
首先需要安装 python
环境。这里需要特别注意版本问题,Whisper
当前支持的版本范围为 python 3.8~3.10
,版本过高会导致版本检测失败,过低则安装脚本执行过程各种报错。官方当前使用的是 3.9.9
版本。
# 指定通过 whisper 源安装 pip install -U whisper -i https://pypi.douban.com/simple --trusted-host=pypi.douban.com
2.2 安装 ffmpeg
whisper
在视频和语音处理上依赖于 ffmpeg
,所以需要安装 ffmpeg
并设置到环境变量中。
ffmpeg
作为一款开源基础工具,官方的 release 文件都在 github releases
上自动构建和发布,国内下载很容易失败。可以通过使用包管理工具等方式进行安装。示例:
# windows 使用 scoop scoop install ffmpeg # macbook 使用 brew brew install ffmpeg # Deban Linux 使用 apt sudo apt install ffmpeg # on Arch Linux sudo pacman -S ffmpeg
2.3 安装 rust
(按需可选)
如果是非常见的机型和操作系统(如信创类机型),可能官方没有直接提供基于 rust
开发分词器的预构建文件,此时就需要实时编译了,那么则安装 rust
编译环境,具体步骤请参考 rust
文档:
https://www.rust-lang.org/learn/get-started
# 使用 pip 安装 setuptools_rust pip install setuptools-rust
3 Whisper
的使用
3.1 语言模型
Size | Parameters | English-only model | Multilingual model | Required VRAM | Relative speed |
---|---|---|---|---|---|
tiny | 39 M | tiny.en |
tiny |
~1 GB | ~32x |
base | 74 M | base.en |
base |
~1 GB | ~16x |
small | 244 M | small.en |
small |
~2 GB | ~6x |
medium | 769 M | medium.en |
medium |
~5 GB | ~2x |
large | 1550 M | N/A | large |
~10 GB | 1x |
默认会使用 small
模型,可使用 --model [size]
指定。若模型数据不存在,则会先自动下载并保存在缓存目录下。缓存目录的默认位置为 ~/.cache/whisper
,也可以通过参数 --model_dir
指定。
3.2 命令行中使用 whisper
示例
# 1. 首次执行会下载默认的语言模型(small) # 2. 自动检测音频语言类型 # 3. 默认为将语音转录为文本和字幕,输出5种类型的文件:`txt`、`json`、`srt`、`tsv`、`vtt`。可通过 --output_format 参数指定输出格式 whisper test.mp3 # --model: 指定 模型类型。默认为 small whisper test.mp3 --model tiny # --language: 指定语言为中文 whisper test.mp3 --language Chinese # --task: 指定音频语言为中文,输出翻译为英文 (默认为 transcribe 模式,仅将语音转录为对应的语言字幕) whisper test.mp3 --language Chinese --task translate
对于英文类音视频输出的结果会是英文,可以借助在线工具或开源库、商业 API 等方式,将英文字幕翻译为中文,从而实现为无字幕视频自动生成字幕。一些相关参考:
- https://www.nikse.dk/subtitleedit/online
- https://github.com/argosopentech/argos-translate
- https://github.com/Helsinki-NLP/Opus-MT
对于中文资源可能会包含繁体字,这是没有参数可以支持调整的。我们可以借助第三方简繁体转换工具做一些转换。一些参考:
3.3 在 python
程序中使用 whisper
import whisper model = whisper.load_model("base") result = model.transcribe("test.mp3") print(result["text"])
3.4 在 Node.js 等其他语言中使用 whisper
由于 whisper
安装配置完成后在全局环境变量中可用,可以直接以 shell
程序调用的方式在所有编程语言中使用。以 Node.js
为例:
import { execSync } from 'node:child_process'; execSync(`whisper test.mp3 --language Chinese --task translate`);
4 总结与参考
由于 whisper
能够提供比较准确的音视频语言识别与提取支持,它给音视频资源提供了程序化处理的支持。在此基础上,可以实现一些音视频资源处理的上层应用。
例如实现各种语言类型音视频资源的字幕生成。基于 whisper
翻译输出其原始语言或英文的字幕,再使用其他三方工具翻译为目标语言即可。
再例如实现对音频和视频的程序化检索。对于一些历史保存的没有文本介绍、文本介绍较少或错误的语音资料,都可以对其做程序化处理提取文本信息并归档入库,进而实现实时检索功能。
扩展参考:
- https://github.com/openai/whisper
- https://github.com/chidiwilliams/buzz
- https://www.npmjs.com/package/whisper-node
- python@3.9.9下载(阿里云镜像)
- Macbook 安装和配置 Python3
- https://www.nikse.dk/subtitleedit/online
- https://github.com/argosopentech/argos-translate
- https://github.com/Helsinki-NLP/Opus-MT
- https://blog.csdn.net/nikolay/article/details/128951413
- https://techpro.ninja/whisper-openai-tutorial-with-python-nodejs/
- https://zhuanlan.zhihu.com/p/617770448