AccessRoute 队友前端版本：粤语 TTS 声音加载修复
日期：2026-10-18（Asia/Shanghai）

修复位置：accessroute-teammate-tts 独立目录。
基于 AccessRoute_small_demo-main 3.zip；保留队友地图、卡片、导航和求助界面。
修改文件：
frontend/src/genai/speech.ts
frontend/public/map-demo/map-demo.js
tests/genai/speech.test.ts

修复行为：
1. 首次播报等待粤语声音，英文声音先到时继续等待，最长 5 秒。
2. 监听 voiceschanged，并通过轮询兼容未发送声音变更事件的引擎。
3. 适配 zh-HK、yue-HK 及下划线语言标签，按所选声音实际语言播报。
4. 超时后提示浏览器仍未提供粤语声音，不再直接认定系统没有安装。
5. 新播报、导航步骤改变或离开页面会取消过期的待播报请求。
6. Qwen 提示不可用时，原来的本地导航文字播报回退流程保留。

验证：
- 完整测试：16 个测试文件、121 项测试全部通过，其中语音测试 20 项。
- TypeScript 检查、Vite 生产构建、map-demo JavaScript 语法检查通过。
- 所有 7 个 HTML、2 个 CSS 与队友原包逐字节相同。
- Codex 内置 Chromium 中完成原界面选路线、开始导航、首次点击朗读；返回“正在朗读目前的路线指示”及“语音提示已完成”。
- 未人工核验声音发音质量；未在队友机器或其桌面 Chrome 验收。
- 本修复不处理此前已确认的 Qwen invalid_api_key 和浏览器语音识别 network 错误。

本机预览：http://127.0.0.1:8790/
该静态预览仅验证界面、路由和本地 TTS，不提供 API 服务。
完整开发服务：进入 accessroute-teammate-tts 后 npm run dev；若 5173/8787 被旧测试占用，应先停止旧服务。
新电脑可 npm ci 安装依赖后启动。该目录本机通过符号链接复用已有依赖。

补丁使用：
将 AccessRoute_teammate_TTS_patch.zip 解压到【队友版本】项目根目录，覆盖上述三份文件，然后 npm test 和 npm run build。
不要直接覆盖本地另一条已分叉的 accessroute-hk 产品开发分支。
补丁不包含 .env、密钥、node_modules 或用户录音。
