## 项目概述

Whisper 是 OpenAI 开源的通用语音识别模型，基于大规模弱监督数据训练。它能够处理多语言语音识别、语音翻译和语言识别，并采用 Transformer 序列到序列架构，将多种语音任务统一为 token 预测过程。

## 核心功能

- 多语言语音识别
- 语音翻译（将非英语语音翻译成英语）
- 口语语言识别
- 语音活动检测（VAD）
- 提供 `tiny`、`base`、`small`、`medium`、`large`、`turbo` 等模型尺寸，其中部分有英文专用版本
- 支持通过 CLI 输出 JSON、文本、字幕等多种格式（含词级时间戳）

## 适用与不适用场景

- 适用：语音转写、字幕生成、非英语语音的英语翻译、语言识别等。
- 不适用：`turbo` 模型未针对翻译任务训练，不适合用于语音翻译。
- 仓库资料未提供流式低延迟识别、生产级并发部署等场景的详细说明，需要自行验证。

## 技术架构与依赖

- 模型：Transformer sequence-to-sequence
- 训练框架：PyTorch
- 依赖：OpenAI tiktoken（快速 tokenizer）、ffmpeg（音频解码）、可选 Rust（用于 tiktoken 编译）
- Python 兼容性：3.8-3.11（开发环境使用 Python 3.9.9 / PyTorch 1.10.1）

## 安装与快速开始

安装命令：

```bash
pip install -U openai-whisper
```

需要安装 ffmpeg，例如 Ubuntu/Debian：

```bash
sudo apt update && sudo apt install ffmpeg
```

如果 tiktoken 没有预编译 wheel，需要安装 Rust。若提示缺少 `setuptools_rust`，可执行：

```bash
pip install setuptools-rust
```

CLI 快速开始：

```bash
whisper audio.flac audio.mp3 audio.wav --model turbo
```

## 典型使用方法

CLI 示例：

```bash
# 指定语言转录
whisper japanese.wav --language Japanese

# 翻译成英语（使用 multilingual 模型，而非 turbo）
whisper japanese.wav --model medium --language Japanese --task translate
```

Python 示例：

```python
import whisper

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

低级 API 示例（语言检测与 decode）：

```python
import whisper

model = whisper.load_model("turbo")
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)
mel = whisper.log_mel_spectrogram(audio, n_mels=model.dims.n_mels).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)
```

## 配置与部署要点

- 模型选择需考虑 VRAM 和速度：`tiny`/`base` 约 1GB VRAM，`large` 约 10GB VRAM，`turbo` 约 6GB VRAM 且速度约为 `large` 的 8 倍（基于 A100 英语转写测试）。
- `turbo` 不适用于翻译任务；翻译请使用 `tiny`、`base`、`small`、`medium`、`large` 等多语言模型。
- `transcribe()` 使用 30 秒滑动窗口进行自回归解码。
- 可通过 `--output_format` 选择输出格式，支持带词级时间戳的字幕生成。
- CHANGELOG 提到新增 `initial_prompt` 随滑动窗口传递、支持 Python 3.13、迁移到 pyproject.toml、`torch.load` 使用 `weights_only=True` 等配置与安全更新。

## 限制、风险与许可证

- 许可证：MIT License（代码和模型权重）。
- `turbo` 模型不能用于翻译任务。
- Whisper 在不同语言上的表现差异较大，具体 WER/CER 数据见论文和模型卡。
- 已知的重复/幻觉问题在更新中持续修复；加载模型时也需注意安全更新（如 `weights_only=True`）。
- 仓库资料未提供关于偏见、隐私或伦理评估的详细说明。

## 官方链接

- GitHub 仓库：https://github.com/openai/whisper
- 博客：https://openai.com/blog/whisper
- 论文：https://arxiv.org/abs/2212.04356
- Model card：https://github.com/openai/whisper/blob/main/model-card.md
- Colab 示例：https://colab.research.google.com/github/openai/whisper/blob/master/notebooks/LibriSpeech.ipynb

## 信息来源和分析时间

- 来源：GitHub README、CHANGELOG.md、最新 Release v20250625。
- 分析时间：基于最新发布 v20250625（2025-06-26 发布）进行整理。