openai-whisper

whisper

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

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

方法

openai-whisper_第1张图片

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

## 设置

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

 pip install -U openai-whisper

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

 pip install git+https://github.com/openai/whisper.git

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

 pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

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

# 在 Ubuntu 或 Debian 上
sudo apt update && sudo apt install ffmpeg

# 在 Arch Linux 上
sudo pacman -S ffmpeg

# 在 MacOS 上使用 Homebrew (https://brew.sh/)
酿造安装 ffmpeg

# 在 Windows 上使用 Chocolatey (https://chocolatey.org/)
choco安装ffmpeg

# 在 Windows 上使用 Scoop (https://scoop.sh/)
舀安装 ffmpeg

您可能还需要安装 rust,以防 tiktoken 没有提供预构建的轮子 你的平台。 如果您在上面的pip install命令中看到安装错误,请按照入门页面安装Rust开发环境。 此外,您可能需要配置“PATH”环境变量,例如 导出 PATH="$HOME/.cargo/bin:$PATH"。 如果安装失败并显示“没有名为’setuptools_rust’的模块”,则需要安装“setuptools_rust”,例如 通过运行:

pip 安装 setuptools-rust

可用型号和语言

有五种模型尺寸,其中四种只有英文版本,提供速度和准确性的权衡。 以下是可用型号的名称及其大致内存要求和相对速度。

| 尺寸| 参数| 纯英文版 | 多语言模型 | 所需显存 | 相对速度|
|:------:----------:------------------:----- --------------:-------------:----------------
| 微小| 39 米 | tiny.en | 微小 | 〜1 GB | 〜32x |
| 基地| 74 M | base.en | 基地 | 〜1 GB | 〜16x |
| 小| 244 米 | small.en | | 〜2 GB | 〜6x |
| 中等| 769 米 | medium.en | | 〜5 GB | 〜2x |
| 大| 1550米| 不适用 | | 〜10 GB | 1x |

仅英语应用程序的“.en”模型往往表现更好,尤其是“tiny.en”和“base.en”模型。 我们观察到,“small.en”和“medium.en”模型的差异变得不那么显着。

Whisper 的性能因语言而异。 下图显示了使用“large-v2”模型的 Fleurs 数据集按语言划分的 WER(单词错误率)细分(数字越小,性能越好)。 与其他模型和数据集对应的其他 WER 分数可以在附录 D.1、D.2 和 D.4 中找到。 同时,更多BLEU(双语评估替补)分数可以在附录D.3中找到。 两者都可以在论文中找到。

openai-whisper_第2张图片

命令行使用

以下命令将转录音频文件中的语音s,使用“medium”模型:

 耳语音频.flac 音频.mp3 音频.wav --模型媒体

默认设置(选择“小”模型)非常适合转录英语。 要转录包含非英语语音的音频文件,您可以使用“–language”选项指定语言:

 耳语日语.wav --语言 日语

添加“–tasktranslate”会将演讲翻译成英语:

 耳语日语.wav --语言日语 --任务翻译

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

 耳语——帮助

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

Python 用法

也可以在 Python 中执行转录:

进口耳语

模型 = 耳语.load_model("基础")
结果 = model.transcribe("audio.mp3")
打印(结果[“文本”])

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

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

进口耳语

模型 = 耳语.load_model("基础")

# 加载音频并填充/修剪它以适合 30 秒
音频 = 耳语.load_audio("音频.mp3")
音频 = 耳语.pad_or_trim(音频)

# 制作 log-Mel 谱图并移动到与模型相同的设备
mel = 耳语.log_mel_spectrogram(音频).to(model.device)

# 检测口语
_, probs = model.detect_language(mel)
print(f"检测到的语言:{max(probs, key=probs.get)}")

# 解码音频
选项 = 耳语.DecodingOptions()
结果 = 耳语.解码(模型,梅尔,选项)

# 打印识别出的文本
打印(结果.文本)

更多示例

请使用讨论中的 显示和讲述 类别来分享 Whisper 和第三方扩展(例如 web)的更多示例用法 演示、与其他工具的集成、不同平台的端口等。

执照

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

你可能感兴趣的:(经验分享,whisper)