Whisper
[Blog]
[Paper]
[Model card]
[Colab example]
Whisper is a general-purpose speech recognition model. It is trained on a 大 dataset of diverse audio 并且 is also a multitasking model that can perform multilingual speech recognition, speech translation, and language identification.
方法

A Transformer sequence-to-sequence model is trained on various speech processing tasks, including multilingual speech recognition, speech translation, spoken language identification, and voice activity detection. These tasks are jointly represented as a sequence of tokens to be predicted by 的 decoder, allowing a single model to replace many stages of a traditional speech-processing pipeline. 的 multitask training format uses a set of special tokens that serve as task specifiers 或者 classification targets.
设置
我们使用了Python 3.9.9和 PyTorch 1.10.1 to train and test our models, but the code基础 is expected to be compatible with Python 3.8-3.11 and recent PyTorch versions. 的 codebase also depends on a few Python packages, most notably OpenAI’s tiktoken 因为他们的快速分词器实现。 您可以下载并安装(或更新到)最新版本的 Whisper with the following command:
pip install -U openai-whisper
或者,可以使用以下命令拉取并安装此仓库的最新提交及其Python依赖项:
pip install git+https://github.com/openai/whisper.git
到 update the package to the latest version of this repository, please run:
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
它还需要命令行工具 ffmpeg 将被安装到您的系统上,该系统可以从大多数软件包管理器获取:
1234567891011121314 # on Ubuntu or Debiansudo apt update && sudo apt install ffmpeg # on Arch Linuxsudo pacman -S ffmpeg # on MacOS using Homebrew (https://brew.sh/)brew install ffmpeg # on Windows using Chocolatey (https://chocolatey.org/)choco install ffmpeg # on Windows using Scoop (https://scoop.sh/)scoop install ffmpeg
你可能需要 rust 也安装了,以防万一 tiktoken 没有为您的平台提供预构建的轮子。 如果您在安装过程中看到错误信息 pip install 命令以上,请遵循 Getting started page 安装Rust开发环境。 此外,您可能还需要配置 PATH 环境变量,例如 export PATH="$HOME/.cargo/bin:$PATH"如果安装失败时 No module named 'setuptools_rust'你需要安装 setuptools_rust例如,通过运行:
1 pip install setuptools-rust
可用模型和语言
有六种模型尺寸,其中四种仅提供英文版本,提供了速度和准确性的权衡。
以下是可用模型的名称及其近似内存需求和相对于大型模型的推理速度。
以下相对速度是在A100上转录英语语音时测量的,实际速度可能会因许多因素而有很大差异,包括语言、说话速度和可用的硬件。
| 尺寸 | 参数 | 纯译文输出:[“只支持英语的模型”] | 多语言模型 | 所需VRAM | 相对速度 |
|---|---|---|---|---|---|
| 微型 | 39 M | tiny.en |
tiny |
~1GB | ~10x |
| base | 74 M | base.en |
base |
~1 GB | ~7x |
| 小的 | 244 M | small.en |
small |
~2GB | ~4x |
| 中等 | 769 M | medium.en |
medium |
~5GB | ~2x |
| large | 1550 M | 无 | large |
~10 GB | 1x |
| 涡轮 | 809 M | N/A | turbo |
~6GB | ~8x |
The .en 只适用于英语应用的模型通常表现更好,尤其是对于以下内容 tiny.en and base.en 模型。 We observed that the difference becomes less significant for the small.en and medium.en models.
此外,该 turbo 模型是优化后的版本 large-v3 提供更快的转录速度,同时对准确性影响极小。
Whisper’其性能因语言而异,差异很大。 如下图所示是性能分解情况 large-v3 and large-v2 按语言划分模型,使用WER(词错误率)或CER(字符错误率,如所示) 斜体在Common Voice 15和Fleurs数据集上进行评估。 其他模型和数据集对应的额外WER/CER指标可以参见附录D.1、D.2和D.4中的内容 the paper以及附录D.3中翻译的BLEU(双语评估替代)分数。
命令行用法
以下命令将使用语音识别功能将音频文件中的语音转录为文字 turbo 模型:
1 whisper audio.flac audio.mp3 audio.wav --model turbo
默认设置(该设置会选择的 turbo 该模型在转录英语时表现良好。 然而, the turbo 模型未用于翻译任务训练如果你需要 将非英语口语翻译成英语使用其中一个 多语言模型 (tiny, base, small, medium, large而不是 turbo.
例如,要转录包含非英语语音的音频文件,您可以指定语言:
1 whisper japanese.wav --language Japanese
To translate 将语音转为英语,使用:
1 whisper japanese.wav --model medium --language Japanese --task translate
注意: The
turbo模型将返回原始语言即使--task translate已指定。使用mediumorlarge为了获得最佳的翻译效果。
运行以下命令以查看所有可用选项:
1 whisper --help
看见 tokenizer.py 所有可用语言的列表。
Python 使用
转录也可以在Python中进行:
12345 import whisper model = whisper.load_model("turbo")result = model.transcribe("audio.mp3")print(result["text"])
内部,该 transcribe() 该方法读取整个文件,并使用一个30秒的滑动窗口处理音频,在每个窗口上执行自回归的序列到序列预测。
以下是使用示例 whisper.detect_language() and whisper.decode() 提供对模型的底层访问权限。
123456789101112131415161718192021 import whisper model = whisper.load_model("turbo") # load audio and pad/trim it to fit 30 secondsaudio = whisper.load_audio("audio.mp3")audio = whisper.pad_or_trim(audio) # make log-Mel spectrogram and move to the same device as the modelmel = whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels).to(model.device) # detect the spoken language_, probs = model.detect_language(mel)print(f"Detected language: {max(probs, key=probs.get)}") # decode the audiooptions = whisper.DecodingOptions()result = whisper.decode(model, mel, options) # print the recognized textprint(result.text)
更多示例
请使用以下内容 🙌 Show and tell category in Discussions for sharing more example usages of Whisper 以及第三方扩展,如网络演示、与其他工具的集成、不同平台的移植等。
授权许可
Whisper’该代码和模型权重在MIT许可协议下发布。 看见 LICENSE 如需更多详情。
免责声明 © 2025 - 虚宝阁
本站部分源码来源于网络,版权归属原开发者,用户仅获得使用权。依据《计算机软件保护条例》第十六条,禁止:
- 逆向工程破解技术保护措施
- 未经许可的分发行为
- 去除源码中的原始版权标识
※ 本站源码仅用于学习和研究,禁止用于商业用途。如有侵权, 请及时联系我们进行处理。