Whisper
更新于
定义
Whisper是OpenAI于2022年发布的一系列开源语音识别模型,用68万小时的音频训练,支持约99种语言。由于权重可以免费获取,Whisper成了许多本地转写和听写工具内部的引擎。
Whisper有从tiny到large的多种规格;模型越大越准确,也越慢。它以批处理方式转写,而不是流式,所以能实时显示文字的工具通常会把它和一个流式模型搭配使用,用Whisper处理流式模型不支持的语言。
在Apple芯片上,经过优化的运行时让即使较大的Whisper模型也能在设备上流畅运行,这才有了当前这一代私密的本地Mac听写工具。
规格大小,以及你该选哪一个
tiny和base速度快但比较粗糙,适合语音备忘录。small是听写可用的最低档。medium和large的准确度足以胜任专业工作,在新款Mac上速度也依然很快。large-v3-turbo是目前最均衡的选择:它是一个精简了解码器的large模型,保留了大部分准确度,速度却快好几倍。大多数提供模型选择的Mac工具,提供的就是这些。对听写来说,正确答案是在你失去耐心之前就能返回文字的最大模型。
批量处理,而非流式
Whisper会读取一段音频,然后为它写出转写文本。这让它很准确,因为它在做决定前能看到整个短语;也让它成为批量处理:在你停下之前,什么都不会出现。只基于Whisper构建的工具,用起来就像每句话之后都要停顿一下。支持流式的工具会把它与一个transducer模型搭配,用于实时出字,并把Whisper留给那个模型无法处理的语言。
已知弱点
Whisper在静音和非常短的片段上会产生幻觉,生成没人说过却看似合理的短语;在长音频上,它也可能重复自己。这两点都有充分的记录,也都有成熟的缓解办法:在模型运行前裁掉静音,让分段保持简短,并把非语音音频上的任何输出都视为可疑。数字和专有名词遵循ASR的一贯规律:写出的是最可能的拼写,而不是你的拼写。
如何在Mac上从“终端”运行Whisper
OpenAI将Whisper作为带命令行工具的Python软件包发布。该项目表示代码预计可在Python 3.8到3.11上运行,并且需要ffmpeg工具来读取音频文件。以下步骤假设你已经安装了Python和Homebrew。
- 打开“终端”,用以下命令安装ffmpeg:brew install ffmpeg
- 用以下命令安装Whisper:pip install -U openai-whisper
- 用以下命令转写文件:whisper audio.mp3 --model turbo
- 首次运行时,等待模型下载完成。模型保存在你的个人文件夹中的.cache/whisper文件夹里,之后会重复使用。
- 在当前文件夹中找到转写文本。默认情况下,Whisper会写出txt、vtt、srt、tsv和json文件。
- 如果你想跳过自动检测,请添加--language加上语言名称,例如--language Japanese。
- 运行whisper --help查看所有选项。
Whisper turbo与large:公布的数据
OpenAI的表格列出large模型有15.5亿参数,约需10 GB显存,相对速度为1倍。turbo模型有8.09亿参数,约6 GB,速度约为8倍。OpenAI将turbo描述为large-v3的优化版本,准确率下降很小,它也是命令行工具中的默认模型。
这些数据有两点需要注意。速度是在NVIDIA A100显卡上转写英语时测得的,OpenAI表示实际速度可能因语言、语速和硬件而有很大差异。另外,turbo没有针对翻译进行训练,所以即使你要求它翻译,它返回的仍是原语言。
- tiny:3900万参数,约1 GB,约10倍。
- base:7400万参数,约1 GB,约7倍。
- small:2.44亿参数,约2 GB,约4倍。
- medium:7.69亿参数,约5 GB,约2倍。
- large:15.5亿参数,约10 GB,1倍。
- turbo:8.09亿参数,约6 GB,约8倍。
Whisper能翻译吗?它如何处理其他语言
Whisper训练时有两项任务:用语音本身的语言转写语音,以及把其他语言的语音翻译成英语。在其68万小时的训练数据中,约43.8万小时是英语音频配英语转写文本,约12.6万小时是非英语音频配英语转写文本,约11.7万小时是非英语音频配同一语言的转写文本,涵盖98种语言。
这就是翻译只能单向进行的原因。添加--task translate可以从非英语语音得到英文文本,并按OpenAI的建议使用medium或large模型。Whisper不会把英语语音翻译成其他语言。
tiny、base、small和medium这几种尺寸还有仅限英语的版本,名称以.en结尾。OpenAI表示,这些版本在英语上往往表现更好,尤其是tiny.en和base.en,而small.en和medium.en的差异就没那么明显了。
大家常问的问题。
Whisper可以免费使用吗?
可以。这些模型以MIT许可证开源,在你自己的硬件上运行。真正的工作是围绕它们打造一个好用的听写工具,这也是大多数Mac本地听写App收费的原因。
Whisper能在Mac上脱离云端运行吗?
能,而且效果很好。针对Apple芯片优化的运行时,能以可用的速度在本地运行大型模型。市面上每一款Mac本地听写和转写工具,都以这种方式使用Whisper或类似的模型。
Whisper会在我说话时流式输出文字吗?
原生不会。它会在一段音频结束后再转写这一段。能显示实时文字的工具会同时使用一个流式模型,并把Whisper留给流式模型不支持的语言。
Whisper需要多少内存?
OpenAI列出的显存需求为:tiny和base约1 GB,small约2 GB,medium约5 GB,turbo约6 GB,large约10 GB。
Whisper base和base.en有什么区别?
base.en仅针对英语训练,base是多语言的。OpenAI表示,.en模型在英语上往往表现更好,尤其是tiny和base尺寸。
Whisper能把英语翻译成其他语言吗?
不能。Whisper的翻译任务是把其他语言的语音转成英文文本。turbo模型完全没有针对翻译进行训练,所以这项任务请使用medium或large。