本文档介绍了 Whisper ASR 系统的测试基础设施和实践。它涵盖了自动化测试设置、测试策略以及如何在本地运行测试。有关 Whisper 的开发和贡献信息,请参阅开发和项目结构。
Whisper 使用基于 pytest 和 GitHub Actions 的综合测试基础设施,以确保在多种 Python 和 PyTorch 版本之间的代码质量和功能。
来源: .github/workflows/test.yml1-75
Whisper 的测试配置通过基于矩阵的方法确保了跨不同环境的兼容性
来源: .github/workflows/test.yml41-68
测试矩阵确保 Whisper 在以下方面正常工作
这种方法有助于及早发现兼容性问题,并确保广泛的平台支持。
Whisper 代码库包含不同类型的测试,以验证功能的各个方面
| 测试类别 | 描述 | 示例 |
|---|---|---|
| 转录测试 | 验证核心转录功能 | tests/test_transcribe.py 中的test_transcribe |
| 特定模型测试 | 特定模型大小的测试 | 通过使用不同模型名称的参数化运行 |
| CUDA 与 CPU 测试 | 根据硬件要求标记的测试 | 使用requires_cuda标记的测试 |
来源: .github/workflows/test.yml75 tests/test_transcribe.py10-42
核心功能测试是 tests/test_transcribe.py 文件中的test_transcribe,它验证转录管道是否正常工作
来源: tests/test_transcribe.py10-42
转录测试验证了
测试套件在 GitHub Actions 中运行,适用于推送到主分支的每一次推送和每一次拉取请求。测试使用 pytest 执行,并带有特定的过滤器来控制在不同条件下运行哪些测试。
来源: .github/workflows/test.yml69-75
要在本地运行测试,开发者应遵循以下步骤
安装带有开发依赖项的 Whisper
pip install -e .[dev]
运行特定测试
# Run all tests that don't require CUDA
pytest -m "not requires_cuda"
# Run only transcription tests with tiny models
pytest -k "test_transcribe[tiny] or test_transcribe[tiny.en]"
有关详细的测试输出
pytest --durations=0 -vv
来源: .github/workflows/test.yml74-75
除了功能测试外,Whisper 还使用预提交钩子来维护代码质量
来源: .github/workflows/test.yml11-38
测试套件包含测试文件和资源
| 资源 | 描述 | 位置 |
|---|---|---|
| JFK 音频样本 | 用于转录的测试音频文件 | tests/jfk.flac |
来源: tests/test_transcribe.py14
测试工作流程在 Whisper 的开发生命周期中发挥着至关重要的作用,确保新贡献保持代码质量和兼容性
来源: .github/workflows/test.yml3-8
Whisper 的测试基础设施确保了
这种全面的方法有助于在开发过程中保持 Whisper ASR 系统的可靠性和质量。