探秘Whisper:开放AI的通用语音识别模型

在数字化时代,语音识别技术越来越受到重视。开放AI的Whisper模型是一种通用语音识别模型,它经过大规模的多样化音频数据训练,不仅可以执行多语言语音识别,还能进行语音翻译和语言识别等多项任务。

探索Whisper的技术

Whisper采用了Transformer序列到序列模型,它经过多项语音处理任务的训练,包括多语言语音识别、语音翻译、口语语言识别和语音活动检测。这些任务被联合表示为要由解码器预测的令牌序列,使得单一模型可以替代传统语音处理流程中的许多阶段。多任务训练格式使用一组特殊的令牌,这些令牌充当任务指示符或分类目标。

设置与使用

Whisper的训练和测试使用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/)
brew install ffmpeg

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

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

如果需要,你还需要安装rust,以便在tiktoken未为你的平台提供预构建的安装包时使用。如果在上述pip install命令期间看到安装错误,请按照Getting started页面的指导安装Rust开发环境。此外,你可能需要配置PATH环境变量,例如export PATH="$HOME/.cargo/bin:$PATH"。如果安装失败并出现No module named 'setuptools_rust'的错误,你需要安装setuptools_rust,例如通过运行:

pip install setuptools-rust

可用模型和语言

Whisper提供五种模型大小,其中四种具有仅英语版本,提供速度和准确性的权衡。以下是可用模型的名称、近似内存需求和相对速度。

大小 参数数量 仅英语模型 多语言模型 需要VRAM 相对速度
微小 39 M tiny.en tiny ~1 GB ~32x
基础 74 M base.en base ~1 GB ~16x
小型 244 M small.en small ~2 GB ~6x
中型 769 M medium.en medium ~5 GB ~2x
大型 1550 M N/A large ~10 GB 1x

对于仅用于英语应用的.en模型,特别是对于tiny.enbase.en模型,性能更好。我们观察到,对于small.enmedium.en模型,差异变得不那么显著。

Whisper的性能因语言而异。下图显示了Fleurs数据集在large-v2模型下的语言单词错误率(WER)分布(数字越小,性能越好)。有关其他模型和数据集对应的WER分数,可以在附录D.1、D.2和D.4中找到。此外,更多的BLEU(双语评估助手)分数可以在附录D.3中找到。这些都可以在论文中找到。

命令行使用

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

whisper audio.flac audio.mp3 audio.wav --model medium

默认设置(选择small模型)在英语转录方面表现良好。如果要转录包含非英语语音的音频文件,可以使用--language选项指定语言:

whisper japanese.wav --

language Japanese

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

whisper japanese.wav --language Japanese --task translate

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

whisper --help

请查看tokenzier.py以获取所有可用语言的列表。

Python使用

在Python中也可以进行转录:

import whisper

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

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

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

import whisper

model = whisper.load_model("base")

# 加载音频并填充/修整以适应30秒
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)

# 制作对数梅尔频谱图并将其移到与模型相同的设备上
mel = whisper.log_mel_spectrogram(audio).to(model.device)

# 检测口音
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")

# 解码音频
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)

# 打印识别文本
print(result.text)

更多示例

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

许可协议

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

关键词:

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

如何充分利用大型语言模型

2023-9-9 23:42:22

指数词

开放AI Node API库:无缝接入OpenAI的利器

2023-9-9 23:47:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索