跳到教程内容
教程首页
App Inventor 2 教程 语音计算器
准备开始
动手创造 · PROJECT LAB

语音计算器

准备探索你的新作品
0%
★★ 项目难度每一步,都离作品更近

先了解你将做出什么

项目挑战

语音计算器是一个简单的语音交互界面:用户说出算式,应用识别其中的数字和运算关键词,再给出结果。它也说明了辅助技术如何帮助不方便输入文字的用户。

设置电脑和手机

模拟器没有语音识别能力;请使用支持语音识别的真机,并安装较新的 AI2 Companion。

语音计算器教程

1. 了解用途和界面

起始界面有“说话”按钮、UserTextLabel、CalculatorTextLabel、SpeechRecognizer 和 TextToSpeech。用户点击按钮后说出算式,应用会显示听到的原句和计算结果,并把结果读出来。

语音计算器界面

2. 检查起始界面

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

GUI 组件对应关系

3. 初始化 numberList

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

初始化 numberList

4. 创建 extractNumbers 过程

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

创建 extractNumbers

添加 sentence 参数

5. 遍历句子并提取数字

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

遍历并分割文字

提取数字提示

提取数字参考答案

6. 认识乘法意图

用户表达乘法的方式很多:*xXproductmultiplytimes。这些关键词定义了乘法意图,句子中的礼貌用语可以忽略。若要支持中文口语,还可以加入“乘以”“乘”等关键词。

7. 创建 multiplicationIntents

创建全局列表 multiplicationIntents,内容为 [* , x, X, product, multiply, times]。之后用 contains any 检查用户句子是否包含其中一个关键词。

乘法意图列表

8. 编写 SpeakButton 事件

SpeakButton.被点击时 中先清空 UserTextLabelCalculatorTextLabel,再调用 SpeechRecognizer1.识别语音 获取用户说出的句子。

SpeakButton 提示

SpeakButton 参考答案

9. 处理 SpeechRecognizer 返回文字

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

语音结果处理提示

10. 计算乘法并朗读

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

contains any

语音结果处理答案

11. 在手机上测试乘法

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

AI Companion

12. 创建其他运算意图

创建三个列表:additionIntents 包含 +addsumplussubtractionIntents 包含 -subtractdifferenceminusdivisionIntents 包含 /÷dividequotientratio

加法意图

减法意图

除法意图

13. 扩展 AfterGettingText

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

多分支条件

多运算完整程序

14. 测试所有运算

分别用自然语言说出加、减、乘、除算式,也测试数字缺失、关键词模糊和普通聊天句子。确认错误提示仍然清楚,并检查除数为零时不会得到误导结果。

15. 扩展语音计算器

可以加入平方根和更复杂的运算,修复会被误判的句子,或制作一个能回答日期、时间、天气和笑话的简易语音助手。设计辅助技术时,要优先考虑反馈清楚、失败可恢复和隐私安全。