feat(asr): switch to Qwen streaming and close interrupted providers
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# 千问 ASR 切换与部署验证
|
||||
|
||||
默认模型改为 `qwen-audio-3.1-asr-flash-streaming`,通过异步 DashScope recognition WebSocket 接收现有 16 kHz MP3 音频。`ALIYUN_ASR_MODEL` 可覆盖模型;`ALIYUN_ASR_URL` 可覆盖接口。旧 Gummy 热词表不自动复用,新热词表需显式配置 `ALIYUN_ASR_VOCABULARY_ID`。
|
||||
|
||||
结束录音时先排空发送队列和尾包,再等待最终结果;队列溢出、识别错误、未完成结果不进入正常回复链路。模型拒绝、启动/发送/结束等待均有超时。LLM/TTS 预热连接注册中断清理,覆盖连接完成后中断、连接期间中断、任务取消和已中断会话。
|
||||
|
||||
2026-10-12 本地验证:
|
||||
|
||||
- 后端 tests:215 项通过,回归运行阻止非本机网络连接。
|
||||
- 真实千问 ASR:10/10 轮通过。
|
||||
- 原有 `/ws`、角色/语言选择、真实千问 ASR、火山 LLM、MiniMax TTS、音频 URL 下发、HTTP 下载/Range、MP3 解码及 MySQL 历史落库:10/10 轮通过(8 轮有声对话、2 轮静音提示),共 43 段生成回复和 2 段提示音。
|
||||
- 发现并修复录音中断时 LLM/TTS 客户端未关闭的问题;修复后两个角色的中断及后续恢复共 4/4 通过。
|
||||
|
||||
使用 `tests/fixtures/asr/manifest.json` 中的合成语音复现 ASR:
|
||||
|
||||
```sh
|
||||
.venv/bin/python scripts/smoke_fun_asr.py tests/fixtures/asr/manifest.json --output output/asr-retest.json
|
||||
.venv/bin/python -m pytest tests -q -o asyncio_default_fixture_loop_scope=function
|
||||
```
|
||||
|
||||
完整对话脚本 `scripts/smoke_ai_dialog.py` 要求独立 MySQL 监听 `127.0.0.1:13316`,并使用测试数据库 `qwen_dialog_test`、临时设备和 `127.0.0.1:18086` 服务。它使用真实云端 API,会产生用量;本地缺少 MiniMax key 时读取已有 `test/minimax.env`,不修改 `.env`。需要 macOS `afconvert` 做音频解码。运行 `--interrupt-only` 复测中断与下一轮恢复。
|
||||
|
||||
以上不等于实物设备麦克风/扬声器验收,也未验证回复播放中的打断。部署只更新六个运行文件,不迁移数据库,不替换 `.env`、音频或 OTA 固件;线上测试另存执行证据。
|
||||
Reference in New Issue
Block a user