本文档全面概述了 Whisper 存储库的结构、组织和关键组件。它充当了帮助开发者导航代码库并理解系统各部分之间关系的地图。有关组件特定实现细节的信息,请参阅 Architecture 部分中的相应 wiki 页面。
Whisper 存储库采用模块化结构,将核心功能、用户界面和支持性基础设施分开。主要组件包括模型架构、音频处理、分词、解码管道和面向用户的转录 API。
来源:README.md
Whisper 的核心功能包含在几个 Python 模块中,每个模块负责系统的特定方面
model.py)模型架构定义在 model.py 中,其中包含主 Whisper 类及其组件
| 类/模块 | 描述 |
|---|---|
Whisper | 主模型类,结合了编码器和解码器 |
AudioEncoder | 将音频输入编码为潜在表示 |
TextDecoder | 从编码的音频特征生成文本 |
ResidualAttentionBlock | Transformer 架构的构建块 |
MultiHeadAttention | 注意力机制实现 |
audio.py)音频处理管道实现在 audio.py 中,该文件负责将音频输入转换为模型所需的格式
| 功能 | 描述 |
|---|---|
load_audio() | 从各种来源加载音频 |
pad_or_trim() | 调整音频长度以适应模型输入要求 |
log_mel_spectrogram() | 将音频波形转换为梅尔谱图 |
mel_filters() | 创建梅尔滤波器组 |
该模块还包含重要的音频常量
SAMPLE_RATE:16000 Hz(音频采样率)N_FFT:400(FFT 窗口大小)HOP_LENGTH:160(窗口之间的步长)CHUNK_LENGTH:30 秒(默认处理块)N_SAMPLES:480000(30 秒内的样本数)tokenizer.py)分词由 tokenizer.py 模块处理,其中包含
| 组件 | 描述 |
|---|---|
Tokenizer | 用于分词的主要类 |
get_tokenizer() | 创建分词器的工厂函数 |
multilingual_tokenizer() | 为不同语言创建分词器 |
gpt2_tokenizer | 基础英语分词器(来自 tiktoken) |
该分词器处理用于任务规范、语言识别、时间戳等的特殊标记。
decoding.py)位于 decoding.py 中的解码系统提供了从模型输出生成文本的各种策略
| 组件 | 描述 |
|---|---|
DecodingTask | 管理解码过程 |
DecodingOptions | 解码的配置选项 |
GreedyDecoder | 简单的贪婪解码策略 |
BeamSearchDecoder | 束搜索以获得更好的结果 |
decode() | 主解码函数 |
detect_language() | 识别音频中的语言 |
timing.py)单词时间戳功能实现在 timing.py 中
| 功能 | 描述 |
|---|---|
add_word_timestamps() | 为转录中的单词添加时间戳 |
find_alignment() | 使用对齐算法将单词与音频对齐 |
merge_punctuations() | 处理时间戳对齐中的标点符号 |
word_level_timestamps() | 生成词级时间信息 |
__init__.py)__init__.py 文件作为包的入口点,负责模型加载
| 功能 | 描述 |
|---|---|
load_model() | 按名称加载 Whisper 模型 |
_download() | 如果模型权重不可用,则下载它们 |
available_models() | 列出所有可用的预训练模型 |
transcribe.py)主要用户界面通过 transcribe.py 模块提供
transcribe() 函数是用户的主要入口点,负责
utils.py)utils.py 模块为不同的输出格式提供了结果写入器
| Writer 类 | 输出格式 |
|---|---|
WriteTXT | 纯文本 |
WriteVTT | WebVTT 字幕 |
WriteSRT | SRT 字幕 |
WriteJSON | JSON 格式 |
WriteTSV | 制表符分隔值 |
存储库包含示例 Notebooks 来演示用法
| Notebook | 描述 |
|---|---|
LibriSpeech.ipynb | 使用 LibriSpeech 数据集的示例 |
Multilingual_ASR.ipynb | 多语言转录示例 |
来源:notebooks/Multilingual_ASR.ipynb
data/ 目录包含有关评估数据集的信息
版本管理通过以下方式进行
| 文件 | 描述 |
|---|---|
whisper/version.py | 包含版本字符串 |
.github/workflows/python-publish.yml | 处理发布到 PyPI 的事宜 |
存储库包含测试和持续集成配置
测试验证了核心功能,包括
存储库使用标准的 Python 打包方式
| 文件 | 描述 |
|---|---|
setup.py | 包安装配置 |
requirements.txt | 核心依赖项 |
主要依赖项包括
以下是存储库的完整文件结构,包含关键文件
whisper/
├── README.md # Main documentation
├── setup.py # Package setup
├── requirements.txt # Dependencies
├── approach.png # Architecture diagram
├── model-card.md # Model documentation
├── whisper/
│ ├── __init__.py # Package initialization and model loading
│ ├── audio.py # Audio processing functions
│ ├── decoding.py # Decoding strategies
│ ├── model.py # Model architecture
│ ├── tokenizer.py # Tokenization logic
│ ├── timing.py # Word timestamp generation
│ ├── transcribe.py # Main transcription API
│ ├── utils.py # Utility functions and result writers
│ ├── version.py # Version information
│ └── assets/ # Model assets (mel filters, etc.)
├── notebooks/ # Example notebooks
│ ├── LibriSpeech.ipynb
│ └── Multilingual_ASR.ipynb
├── data/ # Dataset documentation
│ └── README.md
└── .github/
└── workflows/ # CI/CD configuration
├── test.yml
└── python-publish.yml
来源:README.md
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(517a43)