什么是 Whisper?

Whisper 是 OpenAI 开源的一个通用的自动语音识别(ASR)模型。它在大量的多语言和多任务监督数据上进行了训练,能够以极高的准确率将音频转换为文本。

Whisper Concept

核心特性

Whisper 不仅仅是一个简单的听写工具,它具备多种强大的能力:

  1. 多语言识别:支持包括中文、英文、日文等在内的多种语言识别。
  2. 语音翻译:能够将任意支持的非英语语音直接翻译并转录为英语文本。
  3. 鲁棒性强:在嘈杂环境、不同口音和背景音乐下依然表现出色。
  4. 时间戳对齐:可以输出词级别的时间戳,方便制作字幕。

模型架构深度解析

Whisper 采用了标准的 Transformer 架构(类似于 seq2seq 模型)。

  1. 输入处理:音频被重采样为 16,000 Hz,然后分割成 30 秒的片段,并转换为对数梅尔声谱图(log-Mel spectrogram)。
  2. 编码器(Encoder):由两个卷积层开始,随后是正弦位置嵌入和一系列 Transformer 编码器层。
  3. 解码器(Decoder):根据编码器的输出和之前的 token,预测下一个文本 token。它使用特殊的 token 来指示任务(如 <|transcribe|><|translate|>)、语言(如 <|zh|>)以及是否需要时间戳。

这种多任务训练方式使得 Whisper 能够在一个模型中同时处理各种语音识别任务。

模型规格

OpenAI 提供了多种不同大小的模型,以适应不同的需求场景:

模型 参数量 显存需求 (约为) 速度 (相对)
tiny 39 M ~1 GB ~32x
base 74 M ~1 GB ~16x
small 244 M ~2 GB ~6x
medium 769 M ~5 GB ~2x
large 1550 M ~10 GB 1x

注:中文识别建议使用 small 或更大的模型以获得较好的准确率。

进阶使用指南

除了基本的转录,你还可以指定语言和任务。

命令行工具

安装 Whisper 后,你可以直接在命令行使用:

# 自动检测语言并转录
whisper audio.mp3

# 指定为中文
whisper audio.mp3 --language Chinese

# 将中文语音翻译成英文文本
whisper audio.mp3 --language Chinese --task translate

Python 高级调用

import whisper

model = whisper.load_model("medium")

# 配置解码选项
options = {
    "language": "zh", # 强制指定中文
    "task": "transcribe",
    "beam_size": 5,
    "best_of": 5
}

result = model.transcribe("audio.mp3", **options)

print(f"识别结果: {result['text']}")

# 打印分段带时间戳的结果
for segment in result['segments']:
    print(f"[{segment['start']:.2f}s -> {segment['end']:.2f}s] {segment['text']}")

总结

Whisper 的出现极大地降低了高精度语音识别的使用门槛。它不仅开源免费,而且在准确率上能够媲美甚至超越商业收费的 API。无论是为视频生成字幕、会议记录转写,还是构建实时的语音交互应用,Whisper 都是一个极佳的选择。