菜单

测试

相关源文件

本文档介绍了 Whisper ASR 系统的测试基础设施和实践。它涵盖了自动化测试设置、测试策略以及如何在本地运行测试。有关 Whisper 的开发和贡献信息,请参阅开发项目结构

测试基础设施概述

Whisper 使用基于 pytest 和 GitHub Actions 的综合测试基础设施,以确保在多种 Python 和 PyTorch 版本之间的代码质量和功能。

来源: .github/workflows/test.yml1-75

测试配置

Whisper 的测试配置通过基于矩阵的方法确保了跨不同环境的兼容性

来源: .github/workflows/test.yml41-68

测试矩阵确保 Whisper 在以下方面正常工作

  • 多个 Python 版本(3.8 至 3.12)
  • 不同的 PyTorch 版本(1.10.1 至 2.5.0)
  • 各种 NumPy 版本限制

这种方法有助于及早发现兼容性问题,并确保广泛的平台支持。

测试类别

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

转录测试验证了

  1. 所有可用模型的模型加载
  2. 正确的语言检测
  3. 文本内容准确性
  4. Token 一致性
  5. 词级别时间戳准确性

运行测试套件

测试套件在 GitHub Actions 中运行,适用于推送到主分支的每一次推送和每一次拉取请求。测试使用 pytest 执行,并带有特定的过滤器来控制在不同条件下运行哪些测试。

测试执行过程

来源: .github/workflows/test.yml69-75

在本地运行测试

要在本地运行测试,开发者应遵循以下步骤

  1. 安装带有开发依赖项的 Whisper

    pip install -e .[dev]
    
  2. 运行特定测试

    # 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]"
    
  3. 有关详细的测试输出

    pytest --durations=0 -vv
    

来源: .github/workflows/test.yml74-75

预提交检查

除了功能测试外,Whisper 还使用预提交钩子来维护代码质量

来源: .github/workflows/test.yml11-38

测试资源

测试套件包含测试文件和资源

资源描述位置
JFK 音频样本用于转录的测试音频文件tests/jfk.flac

来源: tests/test_transcribe.py14

CI/CD集成

测试工作流程在 Whisper 的开发生命周期中发挥着至关重要的作用,确保新贡献保持代码质量和兼容性

来源: .github/workflows/test.yml3-8

总结

Whisper 的测试基础设施确保了

  1. 通过矩阵测试实现跨平台兼容性
  2. 通过转录测试进行核心功能验证
  3. 通过预提交检查实现代码质量
  4. 通过 GitHub Actions 实现持续集成

这种全面的方法有助于在开发过程中保持 Whisper ASR 系统的可靠性和质量。