语音计算器
先了解你将做出什么
项目挑战
语音计算器是一个简单的语音交互界面:用户说出算式,应用识别其中的数字和运算关键词,再给出结果。它也说明了辅助技术如何帮助不方便输入文字的用户。
设置电脑和手机
模拟器没有语音识别能力;请使用支持语音识别的真机,并安装较新的 AI2 Companion。
语音计算器教程
1. 了解用途和界面
起始界面有“说话”按钮、UserTextLabel、CalculatorTextLabel、SpeechRecognizer 和 TextToSpeech。用户点击按钮后说出算式,应用会显示听到的原句和计算结果,并把结果读出来。

2. 检查起始界面
可以调整界面外观,但不要重命名组件。确认按钮、标签和两个非可视语音组件都存在。

3. 初始化 numberList
创建全局变量 numberList,初始值设为空列表。它会保存用户句子中提取出的数字,每次新计算都必须重新初始化。

4. 创建 extractNumbers 过程
创建带 sentence 输入参数的 extractNumbers 过程。每次调用时先把 numberList 设为空列表,再用 split at spaces 把句子分成单词。


5. 遍历句子并提取数字
用 for each word in list 遍历分词结果;如果单词可以解释为数字,就把它加入 numberList。例如说出“what is 73 times 51”,就能提取出 73 和 51。



6. 认识乘法意图
用户表达乘法的方式很多:*、x、X、product、multiply、times。这些关键词定义了乘法意图,句子中的礼貌用语可以忽略。若要支持中文口语,还可以加入“乘以”“乘”等关键词。
7. 创建 multiplicationIntents
创建全局列表 multiplicationIntents,内容为 [* , x, X, product, multiply, times]。之后用 contains any 检查用户句子是否包含其中一个关键词。

8. 编写 SpeakButton 事件
在 SpeakButton.被点击时 中先清空 UserTextLabel 和 CalculatorTextLabel,再调用 SpeechRecognizer1.识别语音 获取用户说出的句子。


9. 处理 SpeechRecognizer 返回文字
在 SpeechRecognizer1.识别完成时(result) 中,把 result 显示到 UserTextLabel,调用 extractNumbers(result),并先把 CalculatorTextLabel 设为“我没听懂,请说一个清晰的算式”。

10. 计算乘法并朗读
如果 numberList 恰好有两个数字,并且句子包含乘法意图,就把两个数字相乘,写入 CalculatorTextLabel,再调用 TextToSpeech 朗读结果。可以用 contains any 判断关键词。


11. 在手机上测试乘法
使用 AI2 Companion 说出 what is 73 times 51、compute 73 x 51 等不同表达,检查结果是否正确;再说一句非计算句子,确认应用会给出无法理解的提示。测试中文语音时,可以把关键词列表扩展为“乘以”“乘”。

12. 创建其他运算意图
创建三个列表:additionIntents 包含 +、add、sum、plus;subtractionIntents 包含 -、subtract、difference、minus;divisionIntents 包含 /、÷、divide、quotient、ratio。



13. 扩展 AfterGettingText
把处理结果的 if then else if 链扩展为四种情况:乘法用乘积,加法用和,减法用差,除法用商。每种情况都更新 CalculatorTextLabel,并共用最后的 TextToSpeech 朗读。


14. 测试所有运算
分别用自然语言说出加、减、乘、除算式,也测试数字缺失、关键词模糊和普通聊天句子。确认错误提示仍然清楚,并检查除数为零时不会得到误导结果。
15. 扩展语音计算器
可以加入平方根和更复杂的运算,修复会被误判的句子,或制作一个能回答日期、时间、天气和笑话的简易语音助手。设计辅助技术时,要优先考虑反馈清楚、失败可恢复和隐私安全。
卡在哪一步?直接查操作
不用退出当前教程。速查会在新页面打开,查完回来继续刚才的进度。