本页面全面介绍OpenAI开发的自动语音识别(ASR)系统Whisper。Whisper是一款基于Transformer的模型,旨在提供强大的多语言语音识别和翻译功能。本文概述了该系统的目的、架构、功能和主要组成部分。
有关具体的用法说明,请参阅入门指南。
Whisper是一个通用语音识别系统,在包含68万小时多样化、大规模音频样本的数据集上进行了训练。该系统设计为一个多任务模型,能够执行多项语音处理任务:
该模型在口音、背景噪声和技术性语言方面表现出鲁棒性,适合广泛的实际应用。
来源: README.md8-14 model-card.md1-19
Whisper采用基于Transformer的序列到序列架构,围绕多个关键组件组织,这些组件协同工作以将语音音频转换为文本。
主要组件包括:
whisper/audio.py):将音频输入转换为对数梅尔谱图,作为模型输入。whisper/model.py):定义了Transformer的编码器-解码器架构。whisper/tokenizer.py):处理文本和词元ID之间的转换。whisper/decoding.py):实现了从模型logits生成文本的各种策略。whisper/timing.py):提供单词级时间戳。whisper/transcribe.py):提供转录任务的高级接口。该系统使用特殊词元作为任务指定符或分类目标,使单个模型能够处理多项语音处理任务。
来源: README.md11-15 model-card.md9-11
Whisper提供多种模型尺寸,具有不同的性能和资源权衡。
| 大小 | 参数 | 仅限英语模型 | 多语言模型 | 所需显存 | 相对速度 |
|---|---|---|---|---|---|
| tiny | 39M | tiny.en | tiny | ~1 GB | ~10x |
| base | 74M | base.en | base | ~1 GB | ~7x |
| small | 244M | small.en | small | ~2 GB | ~4x |
| medium | 769M | medium.en | medium | ~5 GB | ~2x |
| large | 1550M | 不适用 | large | ~10 GB | 1x |
| turbo | 809M | 不适用 | turbo | ~6 GB | ~8x |
带有.en后缀的模型针对仅限英语的应用程序进行了优化,并且往往表现更好,尤其是在较小的模型上。而turbo模型是large-v3的优化版本,可在精度损失最小的情况下提供更快的转录速度。
这些模型可以通过API中的load_model()函数加载。
来源: README.md58-74 model-card.md10-22
使用Whisper的典型工作流程包括以下关键步骤:
第一步是使用load_model()函数加载预训练的Whisper模型。
使用whisper/audio.py中的函数处理音频。
load_audio():加载音频并重采样至16 kHz。pad_or_trim():确保音频长度正确。log_mel_spectrogram():将音频转换为对数梅尔谱图格式。主要的转录工作流程使用以下任一方法:
transcribe()方法,负责整个流程。detect_language()和decode()。高级API以30秒为窗口处理音频,对每个窗口进行自回归序列到序列预测。
可以使用whisper/utils.py中的ResultWriter类,以各种格式(VTT、SRT、TXT、TSV、JSON)格式化转录结果。
来源: README.md104-141
虽然Whisper在许多任务上表现出强大的性能,但它也有一些已知的局限性:
有关Whisper在不同语言和任务上性能的详细评估,请参阅研究论文。
本概述为理解Whisper系统提供了基础。有关详细的使用说明,请参阅入门指南以及后续的架构和实现页面。