用 AI 语音控制引导 Pishi 穿越 Scratch 迷宫
说出一条路线,引导 Pishi 完成两个迷宫任务,收集可选的 battery,并在时间耗尽前到达终点!
使用语音识别,通过你的声音引导 Pishi 穿越迷宫。说出方向和数字,让 Pishi 在网格中移动、避开障碍物并到达终点。完成两个任务,看看你能获得多高的分数!
难度
中级
预计时间
40–50 分钟
扩展
SPEECH RECOGNITION
📖 你将学到什么
- AI 语音识别如何将口语转换为文本
- 语音识别如何将说出的短语转换为文本
- 如何逐词读取一个短语,并按顺序执行多个命令
- 方向词和数字如何控制网格上的移动
- 如何使用自定义积木和广播消息来组织游戏
- 如何通过颜色检测障碍物、battery 和终点
- 如何添加计时器、分数和反馈音效
- 当语音识别不清楚时,如何自定义命令并提高识别效果
🛠️ 构建你的项目
1. 创建两个迷宫任务
创建两个名为 “mission 1” 和 “mission 2” 的迷宫背景。将每个迷宫绘制成网格,相邻方格中心之间相距 56 步,以匹配 Pishi 的移动距离。
为安全路径、障碍物、外部边界、battery 和终点设置不同的颜色。把 Pishi 放在起始方格上。battery 是可选的:收集它可以增加 10 分,但即使不收集,Pishi 也可以完成任务。
提示: 使用吸管工具,在 “touching color” 积木中选择背景上的准确颜色。即使只有很小的颜色差异,也可能导致检测失败。
2. 初始化游戏和语音命令
创建积木中显示的变量,然后创建一个名为 “initialize” 的自定义积木。
使用它将语音识别设置为 English (American),切换到 “mission 1”,把 Pishi 放到起点,将 “step” 设置为 56,将 “countdown” 设置为 60,并重置 “score” 和其他游戏数值。
这样,如果语音识别难以理解某个词,你之后就可以更换它。例如,可以把 “right” 改成 “east”。
这样,如果语音识别难以理解某个词,你之后可以把它换成别的词。例如,你可以把 “right” 改成 “east”。
每个命令必须只有一个单词。 项目会逐个单词检查识别出的语音,因此像 “go right” 这样的命令无法与单个命令变量匹配。
3. 开始任务并处理语音命令
通过运行 “initialize”、宣布任务并广播 “start timer” 来开始绿旗脚本。计时器脚本会进行倒计时,并在 Pishi 准备好聆听时广播 “start recognition”。
在 “start recognition” 脚本中,持续监听,直到 “countdown” 变为 “FINISH”。每识别完一个短语后,将转录文本保存到 “message”,然后使用 “next word [final]”,按顺序将每个已确认的单词发送到 “run command [text]”。在监听新的短语之前,清空 “last command”。
使用 [final],因为这些是语音识别已经完成识别的单词。玩家说话时,[live] 单词仍可能发生变化,因此 Pishi 可能会根据一个临时猜测的词执行动作。
例如,在 “move right four times” 中,游戏会忽略 “move” 和 “times”。“right” 让 Pishi 移动一个方格;“four” 再增加三个方格。数字必须紧跟在对应方向后面——“move right please four times” 不会重复该移动。
测试提示: 测试时显示 “message” 变量,查看语音识别实际听到了什么。
4. 将方向词和数字词转换为移动
创建以下自定义积木:
- run command [text]
- check repeats [num]
第一个积木检查当前单词是否为方向。
如果是,Pishi 就移动一个方格:
“up” 和 “down” 改变 “y”,而 “left” 和 “right” 改变 “x”。
“check repeats [num]” 处理 “two”、“three” 和 “four”。方向命令已经让 Pishi 移动了一个方格,所以数字只需要增加剩余的移动次数。
例如,“right three” 会让 Pishi 总共移动三个方格。
每移动一个方格后,运行 “calculate score”,检查 Pishi 落在了哪里。短暂的等待可以让玩家看清每一步移动。
脚本还会把上一个方向保存在 “last command” 中,这样数字就可以重复这个方向。
5. 计算分数并切换任务
创建自定义积木 “calculate score”。每次移动后,它会使用 “touching color” 积木检查 Pishi 到达了什么位置:
- Outer boundary扣除 “10” 分,并将 Pishi 返回起点。
- Obstacle: 扣除 “5” 分;Pishi 可以继续前进。
- Battery: 如果 “battery collected” 为 “0”,增加 “10” 分,然后将其设置为 “1”,这样奖励只会获得一次。
- Goal: 增加 “15” 分,再加上剩余的整数秒数。
每个事件发生时播放对应的音效。 到达 “mission 1” 的终点时,重置 “last command” 和 “battery collected”,切换到 “mission 2”,将 Pishi 返回它的起点,并广播 “start timer”。
到达 “mission 2” 的终点时,将 “countdown” 设置为 “FINISH”,结束游戏。
6. 添加 60 秒倒计时并结束游戏
创建一个以 “when I receive [start timer]” 开始的脚本。
它会说 “3”、“2”、“1”,播放哨声音效,重置 Scratch 计时器,然后广播 “start recognition”。
两个任务开始时都会运行相同的这一套流程。
当 Scratch 计时器低于 “60” 秒时,不断更新 “countdown”,显示剩余时间。
时间耗尽后,将 “countdown” 设置为 “FINISH”。
这也会停止监听脚本。
任务结束时隐藏 “countdown” 的显示。
然后 Pishi 会宣布 “Your Score: [score]”。
🚀 试试你的项目!
点击绿旗并允许访问麦克风。等待倒计时和哨声,然后在 Pishi 说 “Listening…” 时开始说话。先尝试一句类似 “move right three times” 的话,然后再说出你自己的路线。
测试两个任务。你能在时间耗尽前到达每个终点吗?试着收集可选的 battery,然后再尝试一条不经过它的更短路线。
哪条路线能获得更高的分数?
如果 Pishi 的移动与你预期不同,显示 “message” 变量,看看语音识别实际听到了什么。尝试在更安静的地方说话,或者把某个命令换成另一个单词形式的替代词。
🤖 它是如何工作的?
任务从倒计时和哨声开始
↓玩家说出一条路线
↓语音识别将它转换为已确认的单词
↓Scratch 按顺序读取这些单词
↓方向词移动 Pishi;数字重复上一个方向
↓Scratch 在每移动一个方格后检查颜色
↓游戏更新分数和任务
其他单词会被忽略。广播消息负责协调倒计时和监听,然后在 “mission 2” 中再次启动相同的流程。
💡 让它变得更好!
1. 测试新的命令词
更改保存在 “command …” 变量中的单词命令。尝试多个不同的词,并记录哪些词能被语音识别最稳定地识别。像 “move right three times” 这样的完整短语,是否比 “right three” 效果更好?
2. 创建多语言任务
更改语音识别的语言,并将命令词替换成该语言中的词。保持每个命令只有一个单词,然后测试迷宫是否仍然能够按预期响应。
3. 添加 AI 提示
使用 AI ChatBot 扩展,在玩家卡住时给出提示。将 Pishi 的位置和附近的障碍物提供给 AI,并让它只建议一个方向,而不是给出整条路线。
4. 让下一个任务自动调整
记录玩家撞到障碍物的次数,或者完成任务所需的时间。如果玩家遇到困难,可以在 “mission 2” 中给他更多时间;如果玩家很快完成任务,则可以提供额外挑战。
🔗 分享你的创作
完成你的迷宫了吗?
更换主题或设计一条新的路线,然后把你的项目分享给朋友或同学。让他们完成两个任务,看看他们能不能超过你的分数!
