菜单

项目结构

相关源文件

本文档全面概述了 Whisper 存储库的结构、组织和关键组件。它充当了帮助开发者导航代码库并理解系统各部分之间关系的地图。有关组件特定实现细节的信息,请参阅 Architecture 部分中的相应 wiki 页面。

1. 存储库概述

Whisper 存储库采用模块化结构,将核心功能、用户界面和支持性基础设施分开。主要组件包括模型架构、音频处理、分词、解码管道和面向用户的转录 API。

来源:README.md

2. 核心模块

Whisper 的核心功能包含在几个 Python 模块中,每个模块负责系统的特定方面

2.1 模型架构(model.py

模型架构定义在 model.py 中,其中包含主 Whisper 类及其组件

类/模块描述
Whisper主模型类,结合了编码器和解码器
AudioEncoder将音频输入编码为潜在表示
TextDecoder从编码的音频特征生成文本
ResidualAttentionBlockTransformer 架构的构建块
MultiHeadAttention注意力机制实现

来源:whisper/model.py

2.2 音频处理(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 秒内的样本数)

来源:whisper/audio.py

2.3 分词(tokenizer.py

分词由 tokenizer.py 模块处理,其中包含

组件描述
Tokenizer用于分词的主要类
get_tokenizer()创建分词器的工厂函数
multilingual_tokenizer()为不同语言创建分词器
gpt2_tokenizer基础英语分词器(来自 tiktoken)

该分词器处理用于任务规范、语言识别、时间戳等的特殊标记。

来源:whisper/tokenizer.py

2.4 解码系统(decoding.py

位于 decoding.py 中的解码系统提供了从模型输出生成文本的各种策略

组件描述
DecodingTask管理解码过程
DecodingOptions解码的配置选项
GreedyDecoder简单的贪婪解码策略
BeamSearchDecoder束搜索以获得更好的结果
decode()主解码函数
detect_language()识别音频中的语言

来源:whisper/decoding.py

2.5 单词时间戳(timing.py

单词时间戳功能实现在 timing.py

功能描述
add_word_timestamps()为转录中的单词添加时间戳
find_alignment()使用对齐算法将单词与音频对齐
merge_punctuations()处理时间戳对齐中的标点符号
word_level_timestamps()生成词级时间信息

来源:whisper/timing.py

2.6 包初始化(__init__.py

__init__.py 文件作为包的入口点,负责模型加载

功能描述
load_model()按名称加载 Whisper 模型
_download()如果模型权重不可用,则下载它们
available_models()列出所有可用的预训练模型

来源:whisper/__init__.py

3. 用户界面

3.1 转录 API(transcribe.py

主要用户界面通过 transcribe.py 模块提供

transcribe() 函数是用户的主要入口点,负责

  • 加载和预处理音频
  • 语言检测
  • 转录或翻译
  • 生成词级时间戳
  • 结果格式化

来源:whisper/transcribe.py

3.2 结果写入器(utils.py

utils.py 模块为不同的输出格式提供了结果写入器

Writer 类输出格式
WriteTXT纯文本
WriteVTTWebVTT 字幕
WriteSRTSRT 字幕
WriteJSONJSON 格式
WriteTSV制表符分隔值

来源:whisper/utils.py

4. 支持文件和资源

4.1 示例和 Notebooks

存储库包含示例 Notebooks 来演示用法

Notebook描述
LibriSpeech.ipynb使用 LibriSpeech 数据集的示例
Multilingual_ASR.ipynb多语言转录示例

来源:notebooks/Multilingual_ASR.ipynb

4.2 数据

data/ 目录包含有关评估数据集的信息

来源:data/README.md

4.3 版本管理

版本管理通过以下方式进行

文件描述
whisper/version.py包含版本字符串
.github/workflows/python-publish.yml处理发布到 PyPI 的事宜

来源:whisper/version.py

5. 测试和 CI/CD

存储库包含测试和持续集成配置

测试验证了核心功能,包括

  • 音频处理
  • 模型加载
  • 转录准确性
  • 多语言能力

来源:.github/workflows/test.yml

6. 安装和依赖项

存储库使用标准的 Python 打包方式

文件描述
setup.py包安装配置
requirements.txt核心依赖项

主要依赖项包括

  • PyTorch(核心机器学习框架)
  • NumPy(数值计算)
  • FFmpeg(音频处理)
  • tiktoken(分词)

来源:setup.py requirements.txt

7. 文件结构

以下是存储库的完整文件结构,包含关键文件

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