查看: 106|回复: 0

[教程] 【AI2+AI】语音计算器

[复制链接]
本帖最后由 szjuliet 于 2020-10-21 20:21 编辑

【AI2+AI】语音计算器APP

难度: 中级

课程类型: 教程

学科: 计算机科学

年级水平:

  • 6-8年级

  • 9~12年级

本教程由Youth Mobile Power提供

教程地址: Voice Calculator Tutorial

你是否好奇像Alexa和Siri这样的人工智能对话引擎是如何工作的?他们如何理解你对他们说的话并了解你的请求?如何恰当而有意义地回应你?在这个项目中,你来挑战创建自己的第一个语音用户界面(VUI),构建一个可以执行基本算术操作的使用语音来驱动的计算器。

1. 项目简介

这个人工智能项目呈现语音用户界面(VUI)的基本感觉,并教你如何设计一个简单的人工智能系统,(这个系统)可以理解用户的请求:用户以语音方式出计算题,机器作出适当的反应。这样一个语音驱动的人工智能系统可以在各种情况下提供帮助,比如为视障人士和老年人 设计 辅助技术 时。例如视障用户可以使用语音计算器进行口头数学计算,而不必手动输入计算的所有细节。

重要: 注意这个项目不能使用模拟器来测试app,因为模拟器没有语音识别功能。同样你的移动设备必须具有语音识别能力才能使语音计算器正常工作。

2. 图形用户界面(GUI)

在初始文件中已经创建好了GUI。你可以更改组件的属性来获得自己想要的外观和感觉。但不要重命名组件,后面的教程说明都是基于初始文件中的组件名。

你会注意到在GUI中有一个Speak按钮,用户按下该按钮以语音方式说出他们希望执行的计算。然后手机界面以文字形式显示计算器听到的内容,并以文字和语音方式响应计算结果。如果计算器不能听到有意义的计算请求或不能理解用户的请求,它会以同样的方式反馈。

3. 初始化 numberList

我们要处理的第一件事是提取用户所说的句子中的数字,稍后会在实际执行数学运算时使用它们。首先初始化一个名为 numberList 的全局变量,计算请求中的数字将存储在该变量中。这个变量是一个数字列表,所以初始化时一个空列表。

4. 过程 extractNumbers

接下来创建一个名为 extractNumbers 的过程,当给定一个输入语句时,该过程提取该语句中的数值,并将它们存储在全局变量numberList中。按如下操作:

  1. 拖出一个过程代码块并重命名为 extractNumbers
  2. 呼出设置齿轮并添加一个输入参数,重命名为 sentence

  1. 将全局变量numberList设置为空列表。每次调用这个过程时,都需要重新初始化变量,因为用户发起的每次计算都会使用一对新的数字。
  2. 使用“文本”抽屉中的 202010214492..png 来将输入的句子按照词语分隔并保存到列表,使用“控制”抽屉中的 202010214330..png 代码块来检查列表中的项是否是数字。

  1. 如果单词是一个数字,将其添加到全局变量numberList中

提示:

解决方案:

尝试自己编写代码,如果卡住了,可以参考提示:.

5. 乘法请求

由于用户可以通过多种方式来表示他们想要执行的乘法操作,所以必须将所有这些不同的方法作为乘法请求来识别。例如下面所有的语句都是表达相同乘法请求的不同方式:

202010219204..png

注意:绿色的关键字/符号/数字定义了乘法的请求,而红色的单词/符号可以忽略。

6. 变量 multiplicationIntents

现在创建一个全局变量multiplicationIntents,它是一个列表,包括所有常用的乘法请求符号和文字:

{ * , x , X , product, multiply, times }

7. SpeakButton

现在编写代码来为SpeakButton提供功能。当点击SpeakButton时:

  1. 清除 UserTextLabelCalculatorTextLabel 标签
  2. 调用过程 SpeechRecognizer 来获取识别的用户语音的文本

提示:

解决方案:

尝试自己编写代码,如果卡住了,可以参考提示:.

8. 当 文本语音转换器 获取到文本时

SpeechRecognizer文本语音转换器 执行任务并返回结果文本时:

  1. 设置标签 UserTextLabel 为识别的文本结果,即计算器听到的内容。

  2. 使用过程 extractNumbers 从文本结果中提取数字,并将它们存储在全局变量 numberList

  3. CalculatorTextLabel的文本属性设置为默认语句,来表示计算器无法理解用户所询问的内容,并邀请用户请求一个明确的计算问题。例如:“我不明白。请问我乘法、加减或除法的问题,比如123乘以85等于多少?”

  4. 检查是否准确地从用户说出的句子中提取了两个数字,如果是,确定以下内容:

    • 如果请求是乘法,设置 CalculatorTextLabel 为两个数字的乘积
  5. 使用 TextToSpeech 组件让计算器说出 CalculatorTextLabel 的内容

提示:



下面这个代码块 202010211394..png 会非常有用。

在下面的例子你可以看到 当片段列表中的一个单词(“you”)包含在输入文本(“How are you?”)中时, 代码块返回了true。

提示:

解决方案:

尝试自己编写代码,如果卡住了,可以参考提示:.

9. 测试App的乘法操作

现在使用AI伴侣来测试app是否能很好地进行乘法运算。请务必使用AI2伴侣版本2.60或更高版本,否则App会报错。再次提醒模拟器不能在测试中使用,因为它不支持语音识别。试着用不同的方法表述你的乘法请求,以确保计算器正确地反应出正确的乘积。也可以做一个非计算的陈述,比如“你好,你今天过得怎么样?”,并检查计算器是否会做出恰当的反应,比如“我不明白,请问我乘法或加减或除法的问题,比如123乘以85等于多少?”

10. 其他操作

现在为其他操作创建另外三个全局变量: additionIntentssubtractionIntentsdivisionIntents

提示:

下面的符号/单词是指示每个操作请求的常用方法:

  • 加法addition: { + , add, sum, plus}
  • 减法subtraction: { - , subtract, - - difference, minus}
  • 除法division: { /, ÷ , divide, - quotient, ratio}

解决方案:

尝试自己编写代码,如果卡住了,可以参考上面的提示。

现在修改when speech hrecognizer1.AfterGettingText,将其他操作加进来:

  • 如果请求的是除法,设置CalculatorTextLabel为两个数字的商
  • 如果请求的是加法,设置CalculatorTextLabel为两个数字的和
  • 如果请求的是减法,则设置CalculatorTextLabel为两个数字的差值

提示:

呼出设置齿轮找到图中所示的if then块,进行复杂条件设置:

解决方案:

尝试自己编写代码,如果卡住了,可以参考提示:

祝贺你构建了自己第一个语音驱动的人工智能系统。充分测试以确保语音计算器可以正确地响应不同的操作请求。

扩展你的App

  • 此时计算器的功能很像刚开始学习外语的人,在国外听母语的人说话时尝试理解对方说的意思:一些已知的关键字用于识别本地人说话的意图,而其他的词会被完全忽略,因为无关紧要。例如,在下面的句子中,
所有红色的单词都无关紧要可以忽略,而绿色的单词在定义发言者的意图时则强相关:

Would you be so kind, oh dear amazing Calculator, to tell me the product of the most glorious number 73 and the supremely wondrous quantity 51?

  • 根据语音计算器的这个限制想出一个句子来欺骗它进行计算,这个句子的意图根本不是计算,测试你的想法。
  • 了解语音计算器的局限性,想出一个完全合法的计算句子,但它会理解,测试你的想法。
  • 根据上面棘手的情况,你能想出解决方案吗?
  • 用计算器求平方根或其他你知道的更高级的运算。

  • 你能否尝试创建一个原始版本的Alexa或Siri,让人工智能对一些基本的查询做出回应,比如:

    • 今天是星期几?
    • 现在几点了?
    • 给我讲个笑话吧。
    • 今天天气如何怎么样?(也许去打开一个气象网站来回应)
    • 今天的要闻有哪些(也许去打开一个新闻网站来回应)
    • 设置一个30秒钟的计时器。
  • 正如前面在介绍中提到的,这个项目可以看作是帮助残疾人或老年人的 辅助技术 的一个例子。做一些关于辅助技术的研究,以及它们是如何帮助残疾人和老年人的。你能想到的辅助技术的例子还有哪些?使用MIT App Inventor来创建这样一个应用程序。

关于Youth Mobile Power

我们很多人整天都在手机上度过,痴迷各种app。尽管我们知道手机会对我们的注意力、隐私甚至安全构成威胁,但我们还是继续打字和刷手机。但“口袋里的电脑”也为年轻人创造了未开发的机会,让他们学习、联系并改变我们的社区。

这就是为什么麻省理工学院和YR媒体联手推出了青年移动动力系列。YR青少年制作故事,突出年轻人如何以令人惊讶和强大的方式使用手机。与此同时,麻省理工学院的团队正在不断改进MIT App Inventor,让像你这样的用户能够创建像YR报道中提到的那样的APP。

回归初心:从故事中获得灵感,开始制作你自己的应用程序吧!

YR和麻省理工学院的合作部分得到了美国国家科学基金会的支持。本材料基于美国国家科学基金会在批准号下支持的工作。(1906895, 1906895)。本材料中所表达的任何意见、发现、结论或建议均为作者个人观点,并不一定反映美国国家科学基金会的观点。

点击此处查看更多由YR创建的应用程序和交互式新闻内容。



VoiceCalculator_Starter.zip

115.79 KB, 下载次数: 0

售价: 5 创造力  [记录]  [购买]

项目源文件.aia

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail