Files
banban/talkingq-url/docs/qwen-asr-rollout.md
T

2.1 KiB
Raw Blame History

千问 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:

.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 固件;线上测试另存执行证据。