67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# 熵减执行清单
|
||
|
||
本文档记录本轮已执行的熵减工作。目标是移除不可达路径、兼容占位、隐藏 fallback、重复请求流水线和无用依赖。
|
||
|
||
## 范围
|
||
|
||
- 主范围:`app/`、根运行配置、公开运行文档。
|
||
- 不处理:`vendor/qwenasr` 内部实现、仅 benchmark 使用且不阻塞主链路的代码。
|
||
- 原则:开发中项目不保留废弃接口、旧字段、兼容层或 fallback 逻辑。
|
||
|
||
## P0
|
||
|
||
- [x] 移除 Qwen3 `transformers` 后端残留路径。
|
||
- 删除后端选择里的 `"transformers"` fallback。
|
||
- 删除仅服务该路径的 batch/segment 转换死代码。
|
||
- 不支持的设备显式失败。
|
||
- [x] 启动预加载改为 fail-fast。
|
||
- 模型完整性检查或预加载失败时停止 worker。
|
||
- 不再静默降级到首次请求加载。
|
||
- [x] 移除被忽略的离线模型兼容参数。
|
||
- 删除 REST `model_id` 兼容处理。
|
||
- 删除 OpenAI transcription `model` 兼容处理。
|
||
- 运行时模型选择统一由部署计划和 `QWEN3_ASR_MODEL` 控制。
|
||
|
||
## P1
|
||
|
||
- [x] 抽出共享离线转写服务。
|
||
- API 层只处理协议输入和响应格式。
|
||
- 音频准备、`OfflineASRRequest`、runtime 调用和清理边界集中到服务层。
|
||
- [x] 合并音频字节处理逻辑。
|
||
- `process_from_request` 和 `process_upload_file` 共享私有 byte 处理 helper。
|
||
|
||
## P2
|
||
|
||
- [x] 将 `.tsscale` sidecar 隐式耦合改为显式结构化元数据。
|
||
- [x] 拆分 WebSocket 路由和 Qwen3 协议服务。
|
||
- Qwen3 websocket 状态机移出 API route。
|
||
- route 模块仅保留端点注册和 service delegation。
|
||
- [x] 删除首轮发现的无用 helper。
|
||
- [x] 审计并移除无用直接依赖。
|
||
- 根环境和 CPU 环境移除直接依赖 `pydub`、`httpx`。
|
||
- 保留 ModelScope/FunASR 动态 runtime 依赖。
|
||
- [x] 继续压缩阿里协议 WebSocket service。
|
||
- 删除大段注释、未使用状态、未使用参数和死函数。
|
||
- 合并重复响应构造。
|
||
- 删除重复音频转换。
|
||
|
||
## 验证
|
||
|
||
- [x] `uv run python -m py_compile $(find app -name '*.py' -not -path '*/__pycache__/*') start.py`
|
||
- [x] `uvx pyright`
|
||
- [x] 变更模块 import smoke check。
|
||
- [x] 手工 API smoke plan 已记录:
|
||
- `/stream/v1/asr`
|
||
- `/v1/audio/transcriptions`
|
||
- `/ws/v1/asr/funasr`
|
||
- `/ws/v1/asr/qwen`
|
||
|
||
## 手工 Smoke Plan
|
||
|
||
启动服务并准备模型后执行:
|
||
|
||
1. `POST /stream/v1/asr`,使用小 WAV request body,确认返回 `result`、`segments`、`duration`、`processing_time`。
|
||
2. `POST /v1/audio/transcriptions`,使用 multipart `file` 和 `response_format=verbose_json`,确认返回 OpenAI 风格 `text` 和 `segments`。
|
||
3. 连接 `/ws/v1/asr/funasr`,发送阿里兼容 start/audio/stop 消息,确认 sentence 事件仍正常返回。
|
||
4. 连接 `/ws/v1/asr/qwen`,发送 start/audio/stop 消息,确认 partial/final 事件仍正常返回。
|