《Whisper :说明书 》

[论文] [模型卡] [Colab 示例]

Whisper 是一种通用的语音识别模型。它基于各种音频的大型数据集进行训练,也是一种多任务模型,可以执行多语言语音识别、语音翻译和语言识别。

方法

Transformer 序列到序列模型针对各种语音处理任务进行训练,包括多语言语音识别、语音翻译、口语识别和语音活动检测。这些任务共同表示为解码器要预测的令牌序列,从而允许单个模型替换传统语音处理管道的许多阶段。多任务训练格式使用一组特殊标记,用作任务说明符或分类目标。

设置

我们使用 Python 3.9.9 和 PyTorch 1.10.1 来训练和测试我们的模型,但代码库预计与 Python 3.8-3.11 和最新的 PyTorch 版本兼容。代码库还依赖于一些 Python 包,最值得注意的是 OpenAI 的 tiktoken 用于其快速分词器实现。您可以使用以下命令下载并安装(或更新到)最新版本的 Whisper:

notranslate 复制代码
pip install -U openai-whisper

或者,以下命令将从此存储库中提取并安装最新提交及其 Python 依赖项:

notranslate 复制代码
pip install git+https://github.com/openai/whisper.git 

要将包更新到此存储库的最新版本,请运行:

notranslate 复制代码
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

它还需要在系统上安装命令行工具 ffmpeg,大多数包管理器都可以使用该工具:

复制代码
# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo 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 没有为您的平台提供预构建的轮子。如果您在执行上述命令时看到安装错误,请按照 入门 页面安装 Rust 开发环境。此外,您可能需要配置环境变量,例如 .如果安装失败并显示 ,则需要安装 ,例如通过运行:pip install``PATH``export PATH="$HOME/.cargo/bin:$PATH"``No module named 'setuptools_rust'``setuptools_rust

复制代码
pip install setuptools-rust

可用的模型和语言

有六种型号尺寸,其中四种为仅英文版本,提供速度和精度的权衡。 以下是可用模型的名称及其相对于大型模型的近似内存需求和推理速度。 以下相对速度是通过在 A100 上转录英语语音来测量的,实际速度可能会因许多因素(包括语言、语速和可用硬件)而有很大差异。

大小 参数 纯英文模型 多语言模型 必需的 VRAM 相对速度
39 M tiny.en tiny ~1 GB ~10 倍
基础 74 M base.en base ~1 GB ~7 倍
244 M small.en small ~2 GB ~4 倍
中等 769 M medium.en medium ~5 吉字节 ~2 倍
1550 M 不适用 large ~10 GB 1 倍
809 M 不适用 turbo ~6 GB ~8 倍

纯英语应用程序的模型往往性能更好,尤其是 和 模型。我们观察到 和 模型的差异变得不那么显著。 此外,该模型是其优化版本,可提供更快的转录速度,同时将准确性的下降降至最低。.en``tiny.en``base.en``small.en``medium.en``turbo``large-v3

Whisper 的性能因语言而异。下图显示了在 Common Voice 15 和 Fleurs 数据集上评估的 WER(单词错误率)或 CER(字符错误率,以 体显示)按语言划分的性能细分。与其他模型和数据集对应的其他 WER/CER 指标可在论文的附录 D.1、D.2 和 D.4 中找到,以及附录 D.3 中用于翻译的 BLEU(双语评估研究)分数。large-v3``large-v2

命令行用法

以下命令将使用模型转录音频文件中的语音:turbo

notranslate 复制代码
whisper audio.flac audio.mp3 audio.wav --model turbo

默认设置(选择模型)适用于转录英语。要转录包含非英语语音的音频文件,您可以使用以下选项指定语言:turbo``--language

notranslate 复制代码
whisper japanese.wav --language Japanese

添加会将语音翻译成英文:--task translate

notranslate 复制代码
whisper japanese.wav --language Japanese --task translate

运行以下命令以查看所有可用选项:

notranslate 复制代码
whisper --help

有关所有可用语言的列表,请参阅 tokenizer.py

Python 用法

转录也可以在 Python 中执行:

复制代码
import whisper

model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])

在内部,该方法读取整个文件并使用 30 秒的滑动窗口处理音频,在每个窗口上执行自回归序列到序列预测。transcribe()

下面是 和 的示例用法,它提供对模型的较低级别访问。whisper.detect_language()``whisper.decode()

复制代码
import whisper

model = whisper.load_model("turbo")

# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)

# make log-Mel spectrogram and move to the same device as the model
mel = 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 audio
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)

# print the recognized text
print(result.text)

更多示例

请使用 讨论区 中的 Show and tell 类别来分享 Whisper 和第三方扩展的更多示例用法,例如 Web 演示、与其他工具的集成、不同平台的端口等。 🙌

许可证

Whisper 的代码和模型权重在 MIT 许可证下发布。有关更多详细信息,请参阅 LICENSE

相关推荐
格林威1 天前
工业相机如何通过光度立体成像技术实现高效精准的2.5D缺陷检测
人工智能·深度学习·数码相机·yolo·计算机视觉
MarkHD1 天前
大语言模型入门指南:从原理到实践应用
人工智能·语言模型·自然语言处理
A尘埃1 天前
NLP(自然语言处理, Natural Language Processing)
人工智能·自然语言处理·nlp
dlraba8021 天前
机器学习实战(二):Pandas 特征工程与模型协同进阶
人工智能·机器学习·pandas
一碗白开水一1 天前
【第19话:定位建图】SLAM点云配准之3D-3D ICP(Iterative Closest Point)方法详解
人工智能·算法
mit6.8241 天前
[rStar] 策略与奖励大语言模型
人工智能·语言模型
CV-杨帆1 天前
论文阅读:arxiv 2023 Large Language Models are Not Stable Recommender Systems
论文阅读·人工智能·语言模型
羊羊小栈1 天前
基于「YOLO目标检测 + 多模态AI分析」的植物病害检测分析系统(vue+flask+数据集+模型训练)
人工智能·yolo·目标检测·毕业设计·创业创新·大作业
虚拟现实旅人1 天前
【机器学习】通过tensorflow实现猫狗识别的深度学习进阶之路
深度学习·机器学习·tensorflow
胡耀超1 天前
5、Python-NumPy科学计算基础
开发语言·人工智能·python·深度学习·numpy