# Phase 2 语音测试(烧录后怎么说) 烧录新固件并连上 Wi‑Fi / Server 后,按下面顺序对设备说话。 每一步先看「你应该听到」,再打勾。本阶段**不要**测数字倒背、口算、成语接龙。 唤醒词用:**你好小智**(等它开始听再讲下一句)。 --- ## 0. 烧录后先确认 1. 设备开机后进入**对话模式**(chat),不要自己播音频。 2. 说「你好小智」,能进对话。 3. 说「今天天气怎么样」——会当闲聊/查天气回答(证明现在是 Chat,不是翻译机)。 不过这一关,后面的模式切换都没有意义。 --- ## 1. 菜单切换(推荐主路径) 对设备说: | 步 | 你说 | 你应该听到 | 通过? | |----|------|------------|--------| | 1 | **你好小智** | 唤醒,进入聆听 | | | 2 | **切换模式** | 「想聊天、听复读机、跟读、翻译,还是中英对话?也可以说我们来聊天吧。」 | | | 3 | **复读机** | 「现在已经切换至复读机模式…」然后 **SD 音频开始循环播放**,不再跟你闲聊 | | | 4 | 音频播放中随便说一句「讲个笑话」 | **继续播音频,不要讲笑话** | | | 5 | **你好小智**,再说 **退出复读** | 停播,并招呼一次回到对话(类似「已经退出复读机模式,现在是对话模式…」) | | | 6 | **讲个笑话** | 会讲笑话(证明已回 Chat) | | 同一套菜单,再测另外三个入口(每次先「你好小智」→「切换模式」): | 你说 | 你应该听到 | 退出时说 | |------|------------|----------| | **跟读** 或 **开始跟读** | 「现在已经切换至跟读模式。请跟我读:Hello, how are you today?」 | **退出跟读** | | **打开翻译** | 「现在已经切换至翻译模式…」 | **退出翻译** | | **中英对话** | 「现在已经切换至中英对话模式…」 | **退出中英对话** | 也可以不经过菜单,唤醒后直接说口令(效果相同): - 复读:`复读机` / `开始复读` - 跟读:`开始跟读` / `我要跟读` - 翻译:`打开翻译` / `翻译模式` - 中英:`中英对话` - 回聊:`我们来聊天吧` / `回到聊天` --- ## 2. 跟读(必须整段走完) SD 卡先放好音频,**一句一个 MP3**,不要整课带静默: ```text /english_learning/shadowing/lessons/unit01/01.mp3 /english_learning/shadowing/lessons/unit01/02.mp3 /english_learning/shadowing/lessons/unit01/03.mp3 ``` 复读机音频放在另一棵目录,不要混进跟读: ```text /english_learning/repeater/lessons/unit01/full.mp3 ``` 从对话模式开始。 | 步 | 你说 / 你做 | 你应该听到或看到 | 通过? | |----|-------------|------------------|--------| | 1 | **开始跟读** | 开始播 `01.mp3`(不要用闲聊 TTS 念英文) | | | 2 | **等它播完**,再用自己的声音跟读(不要和喇叭叠在一起) | 跟读被收下后,再播下一句 MP3 | | | 3 | 每一句都「播完 → 你跟读」 | 不会讲笑话、不会当聊天 | | | 4 | 最后一句跟读完 | **回到对话模式并招呼一次** | | | 5 | **讲个笑话** | 会讲笑话 | | 听窗大约是该句时长的 **1.2 倍**:说完会提前进入下一句;一直不说会超时后进下一句。 另测一次「中途退出」:第二句播完跟读时说 **退出跟读** → 立刻回 Chat。 跟读时**不要**测这些: - 喇叭还在播时抢着说话 → 应被忽略 - 说「给我讲个笑话」→ **禁止**开始讲笑话 查档案:`data/task_sessions/` 最新 JSON 里 `turns` 条数应等于你实际跟读成功的句数(含最后一轮)。 --- ## 3. 翻译 | 步 | 你说 | 你应该听到 | 通过? | |----|------|------------|--------| | 1 | **打开翻译** | 切换至翻译模式 | | | 2 | **今天天气真好** | 只给英文译文,不要闲聊、不要解释 | | | 3 | **How are you?** | 只给中文译文 | | | 4 | **退出翻译** | 招呼回到对话 | | | 5 | **讲个笑话** | 会讲笑话(证明翻译没进固件、Chat 已恢复) | | --- ## 4. 中英对话(不是翻译机) | 步 | 你说 | 你应该听到 | 通过? | |----|------|------------|--------| | 1 | **中英对话** | 切换说明 | | | 2 | **我喜欢读书** | **用英文回答你**,不是把原句译回去交差 | | | 3 | **I like music** | **用中文回答你** | | | 4 | **退出中英对话** | 回到对话 | | --- ## 5. 复读结束事件(D1,烧录后必测) SD 卡上要有 MP3。音频尽量短,或接受循环几遍。 **A. 自然播完(只招呼一次)** 1. 说 **复读机**,让它播。 2. **不要说话**,等音频按 `repeat` 遍数全部结束。 3. 结束时应 **只招呼一次** 回到对话(类似「已经退出复读机模式…」)。 4. 若连续说两遍「现在是对话模式」,即失败(旧固件会 `[app_task]chat` 再招呼一次)。 **B. 中途退出(不主动招呼)** 1. 再说 **复读机**,播起来。 2. 说 **退出复读**。 3. 应立刻停播并回 Chat。 若你是用「退出复读」口令停的,会有回聊招呼;若是设备 stop 事件单独上来、没有这句口令,则**不应再额外招呼一遍**。 **C. 播放中不能当闲聊** 播放时说「你好吗」→ 继续播,不回答。 查档案:对应 session 的 `events` 里应有 `audio.completed`(自然结束)或 `audio.stopped`(被停)。 --- ## 6. 离线(拔网或关路由器后再测) MultiNet 只认这几句,**不要**指望离线跟读/翻译。 | 你说 | 期望 | |------|------| | **复读机** | 播 NVS 里上次音频,或 SD 第一首;**不要**去连云 | | **切换模式** | **不要**连云、不要播菜单;日志里应跳过 voice_entry | | **退出复读** / **我们来聊天吧** | 停播,本地回到 chat | 插回网后,从第 1 节再走一遍在线菜单。 --- ## 7. 失败时先看哪 | 现象 | 多半是 | |------|--------| | 「切换模式」没菜单 | 没网,或还在播音频且优先级更高 | | 跟读开始讲笑话 | 没进 SHADOWING,或最后一轮丢了直接 chat | | 复读结束招呼两次 | 新固件仍在发 `[app_task]chat`,或 Server 收了两次切换 | | 跟读 JSON 少最后一轮 | `handle_shadowing_turn` 未按 Phase 2 顺序记 turn | | 离线「切换模式」仍连云 | `SendListenDetect` 没网短路被破坏 | --- ## 口令速查 | 意图 | 说其中一句即可 | |------|----------------| | 唤醒 | 你好小智 | | 菜单 | 切换模式 | | 复读 | 复读机、开始复读 | | 跟读 | 开始跟读、我要跟读 | | 翻译 | 打开翻译、翻译模式 | | 中英 | 中英对话 | | 回聊 | 我们来聊天吧、回到聊天、退出复读、退出跟读、退出翻译、退出中英对话 |