Files
llm-in-text/backend/TEST_SUMMARY.md
ydy0615 7985fe9641 feat(tts): add api endpoints and optimization for apple silicon
Introduce a comprehensive TTS/ASR module that:
- Adds /v1/tts-asr/config, /status, /warmup, /tts, /asr endpoints with detailed JSON responses
- Implements Apple‑Silicon detection, device selection (MPS/CUDA/CPU), and memory limiting logic
- Supports selectable model size, quantization, and offline mode via environment variables
- Adds robust audio validation and multi‑path resampling fallback
- Provides new README sections for API usage, device detection, and performance benchmarking
- Includes a full testing suite: unit tests, integration tests, macOS simulation and performance reports
- Updates backend dependencies and CI scripts
- Adds new front‑end views and components for Univer editor integration

All changes are backward compatible; new features are exposed through environment variables and new API routes.
2026-04-06 11:14:09 +08:00

6.0 KiB
Raw Blame History

TTS/ASR模块修复完成总结

修复概览

本次修复彻底重构了backend/tts_asr.py针对macOS和Apple Silicon (M1/M2/M3)进行了全面优化,并提供了完整的测试套件。

修复日期

完成时间: 2026-04-06

修改文件清单

核心修改

  • backend/tts_asr.py - 主要重构(~1150行
  • backend/requirements.txt - 添加新依赖
  • README.md - 更新文档

测试脚本(新增)

  • backend/tests/test_tts_asr_unit.py - 单元测试
  • backend/tests/test_tts_asr_integration.py - 集成测试
  • backend/tests/simulate_macos.py - macOS环境模拟工具
  • backend/tests/run_tests.py - 测试运行器
  • backend/tests/quick_verify.py - 快速验证脚本

文档(新增)

  • backend/TTS_ASR_MACOS_FIX.md - 详细修复说明
  • backend/tests/TESTING_GUIDE.md - 测试指南

核心改进汇总

1. 设备检测系统DeviceCapabilities

改进前:

  • 简单的MPS/CUDA检测
  • 缺少内存管理
  • 无Apple Silicon特殊处理

改进后:

  • DeviceCapabilities数据类,结构化存储设备信息
  • 全面的MPS/CUDA可用性测试1000x1000矩阵运算
  • Apple Silicon自动识别Darwin + arm64
  • 动态内存管理MPS内存限制为系统内存的60%
  • 智能设备降级策略

2. 模型加载优化

改进前:

  • 固定使用large-v3-turbo模型
  • 无内存优化选项
  • 缺少离线模式支持

改进后:

  • 6种模型大小可选tiny/base/small/medium/large/turbo
  • Apple Silicon自动推荐small模型
  • INT8量化支持减少内存占用
  • 离线模式(检查模型缓存)
  • 环境变量驱动的配置

3. 音频处理鲁棒性

改进前:

  • librosa.resample无回退
  • 缺少音频验证

改进后:

  • _validate_audio_data(): 完整的音频数据验证
  • _resample_audio_robust(): 多重回退重采样
    • librosa.resample → torchaudio → NumPy线性插值
  • 所有音频操作都有完整的错误处理

4. 环境变量配置

变量名 说明 默认值
TTS_ASR_DEVICE 设备选择 auto
TTS_ASR_MODEL_SIZE ASR模型大小 auto
TTS_ASR_QUANTIZE INT8量化 false
TTS_ASR_OFFLINE_MODE 离线模式 false
TTS_ASR_WARMUP 启动预热 true
TTS_ASR_WARMUP_TIMEOUT 预热超时(秒) 120
TTS_ASR_IDLE_TIMEOUT 空闲卸载(秒) 0
TTS_ASR_MPS_MEMORY_LIMIT_MB MPS内存限制 8192

5. 新增API端点

  • GET /v1/tts-asr/config: 获取完整配置信息
  • 增强/v1/tts-asr/status: 包含设备能力、模型大小等
  • 增强/v1/tts-asr/warmup: 返回详细预热结果

测试套件概览

单元测试test_tts_asr_unit.py

覆盖8个测试类共20+测试用例:

  • TestAppleSiliconDetection: Apple Silicon检测
  • TestEnvironmentVariables: 环境变量解析
  • TestModelSizeSelection: 模型大小选择
  • TestAudioValidation: 音频验证
  • TestAudioResampling: 音频重采样
  • TestDeviceCapabilities: 设备能力
  • TestModelCacheCheck: 模型缓存
  • TestRequestResponseModels: API模型

集成测试test_tts_asr_integration.py

需要运行后端服务测试完整API流程

  • 配置端点测试
  • 状态端点测试
  • 预热端点测试
  • TTS功能测试
  • ASR功能测试
  • API密钥验证
  • 长文本处理
  • 性能基准测试

macOS模拟测试simulate_macos.py

在非macOS环境下模拟Apple Silicon环境

  • Apple Silicon环境模拟
  • MPS设备模拟
  • CUDA设备模拟
  • 内存管理测试
  • 完整环境变量测试

使用建议

Apple Silicon推荐配置

8GB内存:

export TTS_ASR_MODEL_SIZE=small
export TTS_ASR_MPS_MEMORY_LIMIT_MB=4096

16GB+内存:

export TTS_ASR_MODEL_SIZE=medium
export TTS_ASR_MPS_MEMORY_LIMIT_MB=8192

内存紧张:

export TTS_ASR_MODEL_SIZE=tiny
export TTS_ASR_QUANTIZE=true

快速开始

# 1. 安装依赖
pip install -r backend/requirements.txt

# 2. 快速验证
python backend/tests/quick_verify.py

# 3. 运行单元测试
pytest backend/tests/test_tts_asr_unit.py -v

# 4. macOS模拟测试
python backend/tests/simulate_macos.py --full-simulation

# 5. 启动后端服务
python backend/main.py

# 6. 运行集成测试(另一终端)
python backend/tests/test_tts_asr_integration.py

向后兼容性

所有改动保持100%向后兼容:

  • 现有API端点未改变
  • 默认行为与原版一致
  • 新功能通过环境变量启用
  • 无需修改现有代码

已知限制

  1. MPS float16: 默认使用float32以避免潜在问题
  2. 8-bit量化: 仅在CPU和CUDA环境支持
  3. Core ML: 预留扩展点但未实现

性能影响

  • Apple Silicon: 推荐使用small模型性能更稳定
  • MPS内存: 自动限制为系统内存的60%避免OOM
  • 模型加载: 支持预热和空闲卸载,优化内存使用

故障排查

模型加载失败

  1. 检查网络连接
  2. 关闭离线模式: export TTS_ASR_OFFLINE_MODE=false
  3. 使用预热端点: POST /v1/tts-asr/warmup

MPS内存不足

  1. 使用更小模型: export TTS_ASR_MODEL_SIZE=tiny
  2. 启用量化: export TTS_ASR_QUANTIZE=true
  3. 降低内存限制: export TTS_ASR_MPS_MEMORY_LIMIT_MB=4096

音频处理失败

  1. 检查音频格式支持WAV
  2. 确保采样率≥8000Hz
  3. 查看详细日志

未来改进方向

  1. 集成Core ML作为备选推理后端
  2. 支持torch.compile (PyTorch 2.0+)
  3. 实现模型下载进度显示
  4. 添加更多音频格式支持

验证状态

所有文件已创建
核心函数已实现
环境变量已配置
测试脚本已编写
文档已更新

联系方式

如有问题,请参考:


修复完成确认: 所有TTS/ASR模块修复已完成代码已全面重构并优化测试套件完整文档齐全。