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.
This commit is contained in:
@@ -30,8 +30,10 @@
|
||||
- 多语言界面:中英日韩德法
|
||||
|
||||
### 语音功能
|
||||
- TTS文字转语音(macOS)
|
||||
- STT语音转文字
|
||||
- TTS文字转语音(macOS优化,支持Apple Silicon M1/M2/M3)
|
||||
- STT语音转文字(支持多种模型大小和量化)
|
||||
- 自动设备检测(MPS/CUDA/CPU智能切换)
|
||||
- 离线模式支持(模型缓存检查)
|
||||
|
||||
## 技术架构
|
||||
|
||||
@@ -56,6 +58,32 @@
|
||||
- POST /v1/ocr 图片文字识别
|
||||
- POST /v1/convert 文档转换
|
||||
- POST /v1/completions/cancel 取消请求
|
||||
- GET /v1/tts-asr/status TTS/ASR模型状态
|
||||
- GET /v1/tts-asr/config TTS/ASR配置信息
|
||||
- POST /v1/tts-asr/warmup 模型预热
|
||||
- POST /v1/tts-asr/tts 文字转语音
|
||||
- POST /v1/tts-asr/asr 语音转文字
|
||||
|
||||
## TTS/ASR环境变量配置
|
||||
|
||||
支持以下环境变量来配置TTS/ASR模块:
|
||||
|
||||
| 变量名 | 说明 | 默认值 |
|
||||
|--------|------|--------|
|
||||
| `TTS_ASR_DEVICE` | 设备选择 (auto/mps/cuda/cpu) | auto |
|
||||
| `TTS_ASR_MODEL_SIZE` | ASR模型大小 (tiny/base/small/medium/large/turbo) | auto |
|
||||
| `TTS_ASR_QUANTIZE` | 是否使用INT8量化 (true/false) | false |
|
||||
| `TTS_ASR_OFFLINE_MODE` | 离线模式,仅使用缓存模型 (true/false) | false |
|
||||
| `TTS_ASR_WARMUP` | 启动时预热模型 (true/false) | true |
|
||||
| `TTS_ASR_WARMUP_TIMEOUT` | 预热超时时间(秒) | 120 |
|
||||
| `TTS_ASR_IDLE_TIMEOUT` | 空闲卸载时间(秒,0=不卸载) | 0 |
|
||||
| `TTS_ASR_MPS_MEMORY_LIMIT_MB` | MPS内存限制(MB) | 8192 |
|
||||
|
||||
**Apple Silicon优化建议**:
|
||||
- 系统自动检测Apple Silicon并推荐使用`small`模型
|
||||
- MPS内存限制默认为系统内存的60%
|
||||
- 建议使用`small`或`medium`模型以获得更好的性能
|
||||
- 可通过`TTS_ASR_MODEL_SIZE=medium`手动指定模型大小
|
||||
|
||||
## 核心实现
|
||||
|
||||
@@ -63,7 +91,13 @@
|
||||
- main.py: FastAPI服务器、SSE流式响应
|
||||
- llm.py: 异步Ollama调用、超时控制
|
||||
- prompt.py: 7条Prompt规则
|
||||
- tts_asr.py: macOS 语音处理
|
||||
- tts_asr.py: macOS/Apple Silicon优化的TTS/ASR处理
|
||||
- 自动检测Apple Silicon (M1/M2/M3)
|
||||
- MPS/CUDA/CPU智能降级
|
||||
- 支持多种Whisper模型大小
|
||||
- INT8量化支持
|
||||
- 离线模式支持
|
||||
- 健壮的音频重采样
|
||||
|
||||
### 前端
|
||||
- copilotPlugin.ts: ProseMirror Mark系统
|
||||
@@ -89,6 +123,26 @@
|
||||
测试: pytest
|
||||
构建: npm run build
|
||||
|
||||
### 运行测试
|
||||
|
||||
项目提供完整的测试套件,包括单元测试、集成测试和macOS环境模拟测试:
|
||||
|
||||
```bash
|
||||
# 快速运行单元测试
|
||||
python backend/tests/run_tests.py unit
|
||||
|
||||
# 运行集成测试(需要启动后端服务)
|
||||
python backend/tests/run_tests.py integration
|
||||
|
||||
# 运行macOS环境模拟测试(在非Mac环境测试)
|
||||
python backend/tests/run_tests.py simulate
|
||||
|
||||
# 运行所有测试
|
||||
python backend/tests/run_tests.py all
|
||||
```
|
||||
|
||||
详细测试说明请参考: [测试指南](backend/tests/TESTING_GUIDE.md)
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
|
||||
Reference in New Issue
Block a user