首页 > 其他分享 >让语音助手做道数学题

让语音助手做道数学题

时间:2024-11-20 11:46:30浏览次数:3  
标签:rasa 算式 text 运算符 助手 语音 数学题 做道

无意中对Siri说了一句“one plus one echo(1+1=)”,Siri很快回答“It’s 2(这是2)”。于是乎,灵光乍现——为什么不让树莓派语音助手也能做数学题?

要让语音助手做数学题,计算模块先不说,主要还是要让它能理解你的意图,既要能识别1+1。怎么识别?我用的是rasa,那就在nlu中新增一个intent吧!最开始,我定义了如下的意图。

可是,我忘了,我用的是MitieNLP,而且我已经在nlu中定义了三个标签了,果然,当增加这个equation标签后,我的rasa train又双叒叕陷入了无止尽……

关于这个问题,可以参看我的另一篇博文:

使用MitieEntityExtractor训练中文NLU速度慢的问题-CSDN博客

(这个问题一部分是我的系统性能问题,一部分是MitieNLP的锅))

Kill了rasa train的进程,重新定义nlu、domain和story,这次学乖了,我去掉了nlu中的新标签,在domain里增加了一个form,具体如下图。

OK,rasa train在预期的30分钟内完成模型训练。为什么是30分钟?因为我曾经拿着手机秒表测算过:一次RASA TRAIN的时间记录-CSDN博客

意图识别部分告一段落,接下来就是要定义识别意图后的action动作了。Python中有什么可以直接识别数学公式的函数吗?还真有,它就是eval(code),这里的code就是一段完成的算式,比如1+1。

有了eval()函数,action动作的问题解决了一半,另外一半则是要对算式的有效性做检验。是的,就是要判断下它是不是合法公式,比如是不是包含+,-,*,/的运算符?运算符两边是不是数字?如果这两个条件都不满足?对不起,俺不会计算!

有人说,检测是否包含运算符不是很容易的事情吗?只要用find()函数就能ok。如果直接是这四个字符当然如此。不过,大家不要忘了,我是语音助手,输入的是中文!!所以,我要先判断输入的算式中是否包含四个运算符的对应中文单词(加、减、乘、除),如果包含了,那么就用+,-,*,/替换中文字。

之后,再将整个算式字符串以运算符为中心,进行split()分割,然后分别判断左右两边是否都是数字?还好,我以前写过一个is_int()函数。

(is_int()函数的写法请参看:《让自家的智能语音助手实现todo任务的添加》)

完成上述两步有效性检测后,最后才是导入eval(),完成算式计算并返回一个结果。

说了这么多,我把这一段代码贴上来:

cal = ['加', '减', '乘', '除', '家', '成']
        sig = ['+', '-', '*', '/', '+', '*']
        cflag = False
        isNum = True
        text  = tracker.get_slot("equation")
        n = 0
        for i in cal:
            index = text.find(i)
            if index != -1:
                text = text.replace(i, sig[n])
                cflag = True
                tp = text.split(sig[n])
                for j in range(len(tp)):
                    r = is_int(tp[j])
                    if not r:
                        isNum = False
            n += 1

        if cflag and isNum:
            a = eval(text)
            msg = "答案是" + str(a)
        else:
            msg = "我不会做这道题"

至于action的其他不分代码,这次就不贴了,具体代码同上所提的is_int()函数所在博文。

好了,把rasa run actions跑起来,把rasa server跑起来,再启动语音助手的demo.py,对着snowboy说“我要做数学计算”。

这样的结果让我很无语。看来语音识别任重而道远……

打开actions.py,将运算符中文字符组中添加‘家’和‘成’,然后把他们和“+”和“*”做匹配,再重新启动rasa服务。这次,snowboy终于计算成功了!


我在个人公众号“天飓”上建了一个#语音助手的合集,有兴趣的朋友欢迎关注和订阅^_^

标签:rasa,算式,text,运算符,助手,语音,数学题,做道
From: https://blog.csdn.net/hydekong/article/details/143906715

相关文章

  • 使用 ROCm 在 AMD GPU 上微调和测试前沿的语音模型
    Fine-tuningandTestingCutting-EdgeSpeechModelsusingROCmonAMDGPUs—ROCmBlogsAI语音代理或语音机器人是通过使用口头语言与人交流而设计的。语音机器人通常用于客户服务和个人助手应用,并有可能进入并革命性地改变人们与技术互动的几乎每个方面,这些方面可以从......
  • 校园防欺凌AI语音识别自动报警系统
    校园防欺凌AI语音识别自动报警系统通过部署在校园各处的语音识别终端,校园防欺凌AI语音识别自动报警系统24小时不间断地监测校园内的声音数据,利用先进的语音识别技术,对声音进行分析和处理。系统内置的关键词库包含了与欺凌行为相关的求救词汇和敏感词汇,如“救命”、“老师有人打我......
  • 基于matlab的语音信号去噪的App Designer 设计
    文章目录前言1.外观设计1.1组件布局1.2修改组件标签2.代码部分设计2.1成员变量2.1.1组件成员变量2.1.2自定义成员变量2.2回调函数2.2.1导入音频2.2.2加噪处理2.2.3播放音频2.3滤波器设计2.4信噪比3.完整版功能展示结语前言在实际应用中,语音信号往往会受到......
  • 学校AI语音防霸凌监测系统
    学校AI语音防霸凌监测系统在校园的宿舍、卫生间、天台等潜在的监控死角安装智能语音终端,学校AI语音防霸凌监测系统能够实时监测周围的声音环境。一旦检测到类似“救命”、“住手”等关键词,或者异常的打斗声,系统将立即触发报警机制。系统具备自定义关键词功能,校方可以根据实际情况......
  • Gemini 发布 iOS app,Live 语音聊天免费用;微信公众号上线 AI 音色克隆功能丨 RTE 开发
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • ai智能语音电话机器人能不能代替人工完成获客任务
    ai智能语音电话机器人是一款适用于电话营销场景的智能语音交互系统。我们在呼叫中心系统的基础上加入了自然语言处理、语音识别、语义理解等多项人工智能技术,通过机器人智能外呼代替人工拨打电话,达到意向客户筛选、目标客户锁定、不同客户精准分类的目的,在有效降低人力成本......
  • 语音识别原理:AI 是如何听懂人类声音的
    大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300+款以上的AI应用工具。关注科技及大模型领域对社会的影响10年+。关注我一起驾驭AI工具,拥抱AI时代的到来。AI工具集1:大厂AI工具【共23款】,一次性奉上,今天是百度和阿里AI工具集2:大厂AI工具【共12款】,......
  • MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究
    全文链接:https://tecdat.cn/?p=38258原文出处:拓端数据部落公众号在语音处理领域,对语音情感的分类是一个重要的研究方向。本文将介绍如何通过结合二维卷积神经网络(2-DCNN)和长短期记忆网络(LSTM)构建一个用于语音分类任务的网络,特别是针对语音情感识别这一应用场景。文中将展示相......
  • 11月ChatGPT商业运营网站程序源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图+suno-
    11月ChatGPT商业运营网站程序源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图+suno-ai音乐生成+TTS语音对话+支持GPTs文章目录11月ChatGPT商业运营网站程序源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图+suno-ai音乐生成+TTS语音对话+支持GPTs前言一、文档总结二......
  • 校园AI语音识别霸凌监控系统
    校园AI语音识别霸凌监控系统通过音频识别技术,校园AI语音识别霸凌监控系统针对校园内监控难以覆盖的区域,如厕所、宿舍、天台等,进行全天候的音频监控。系统通过识别特定的关键词,如“救命”、“老师救我”等,来监测可能发生的霸凌事件。系统采用YOLOv5AI音频算法,该算法能够对音频流进......