AI语音模块测评 | 再造聋哑人“传话筒”
#项目起源# 大家好,我是旺仔爸爸,去年因为一次点外卖的经历制作了一个帮助聋哑人送外卖的传话筒,作品虽然成功实现了功能,但也收到了不少网友的建议,比如作品体积太大导致携带不方便不实用;作品在没有网络的情况下几乎没办法使用;而且需要代码编程,对新手不友好,旺仔爸爸也深知这些问题并且时常思考如何改进,最近看到DFRobot推出了两款可以在离线环境下使用的产品—语音识别和语音合成模块,圈内的朋友们把这两款产品与二哈识图模块统称为“人工智能三剑客”,我想这两款产品用在聋哑人“传话筒”中应该再合适不过了,于是迭代了聋哑人“传话筒”,下面旺仔爸爸将改进的过程进行介绍
因为本次作品是对之前作品的迭代更新,我们需要先确定改进的方向#改进方向#
#视频演示#https://www.bilibili.com/video/BV1AX4y1g7bb具体怎么实现的呢?接下来我们开始展开设计#方案介绍#
在第一次作品的文章中我们提到聋哑人是既不能听到别人讲话,自己也不能发声的,只有部分声带没有损害的聋人可以发声,通过骨传导的方式可以将自己发出的声音传到听神经,听神经再传给大脑,而且还了解到,上了年龄的聋哑人是不识字的,不过如果能够出来送外卖的话,基本的看图识字和使用手机等数码产品的能力应该是具备的,所以我们本次制作的核心还是将送外卖常用语语料库建立在语音助手中,聋哑人可以利用语音助手装置与客户进行对话,聋哑人想要知道对方说了什么内容可以通过语音助手的显示屏幕查看信息,提前设置好需要回复的内容进行回话,这样语音助手就承担了一个“传话筒”的角色(下文中传话筒和语音助手都指的是本次作品)此次作品的改进与上一次的不同之处在于如何实现语音离线识别要实现离线识别功能离不开前文中提到的两款产品,语音识别与语音合成模块
先来了解I2C 离线语音识别模块,它是DFRobot近期推出的一款针对中文进行识别的模块。该模块采用 LD3320 “语音识别”专用芯片,只需要在程序中设定好要识别的关键词,语音识别模块就可以进行识别,不需要用户事先训练和录音就可以完成非特定人语音识别,识别准确率高达95%,这样具有离线功能的模块非常适合网路环境比较差的场景或者学生比赛现场没有网络的环境中
此外语音识别模块还板载驻极体麦克风(咪头),可直接用于语音的拾取,预留了3.5mm 麦克风接口,可接入随产品包装内附带的 3.5mm 接口的领夹式麦克风,让拾音变的更加的方便最关键的是体积小巧,支持Mind+ 图形化编程,同时兼容Arduino系列、micro:bit、掌控板等主控,这些特点对于我们本次作品改造起到了关键性的作用
详细的使用方法可以参考官方文档https://wiki.dfrobot.com.cn/_SKU_DFR0715_Gravity_I2C_%E7%A6%BB%E7%BA%BF%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9D%97接下来了解语音合成模块该模块采用I2C和UART两种通讯方式,兼容市面上绝大部分主控,模块上已经自带了一个喇叭,所以无需再额外的添加喇叭,支持中文、英文和中英文混合合成,支持多种文本控制标识,可以满足用户对语音合成发音人、音量、语速、语调等的设置。文本控制标识是此款语音合成模块的一大特色,如:要合成“我慢条斯理。 我快言快语”这段语音,经过标记的设置,前一句合成语速会很慢,后一句合成语速会很快,但不会读出“s1”和“s8”,标记只是作为控制标记实现设置功能,不会合成为声音输出。
其实如果注意观察,此款语音合成模块用到的核心芯片为科大讯飞出品的XFS5152CE高集成度语音合成芯片,使用场景非常的广泛而值得称赞的是DFRobot在开发产品时在模块中自带了喇叭,这样极大的方便了作品创作,对于创客赛事中的作品来说简直是如虎添翼
对于语音合成模块的详细介绍可以参考官方文档https://wiki.dfrobot.com.cn/_SKU_DFR0760_Gravity_Speech_Synthesis_module此次用到的语音识别模块和语音合成模块是旺仔爸爸拿到的官方测试样品,功能正常,但包装不是很完善,测试完全够用了当然旺仔爸爸在文末设置了彩蛋,想要尝鲜的小伙伴快去看看能挖出什么宝贝吧当两款起到关键性作用的宝贝介绍完后,我们还需要选择一下主控板,由于作品是为了给聋哑人使用的"传话筒",他们只能用眼睛看,并不能听到客户讲话,所以一个用来显示文字信息的屏幕是非常有必要的,为了兼顾功能和体积,本次选用了自带屏幕的掌控板作为控制器
设计方案确定后,相信你已经很期待语音助手是如何制作完成的,下面我们就开始吧#设计制作#本次我们要制作成一款可以拿在手上携带方便的“传话筒”,所以小巧的体积是比较关键的一个设计要求,我们需要对选用的硬件材料进行合理的布局,需要的材料清单如下#硬件清单#掌控板+掌控宝扩展板*1I2C语音识别模块*1中英文语音合成模块*1数字大按钮模块*2(红色和绿色)4Pin IIC/I2C/UART传感器连接线*23Pin杜邦线*2五金若干3mm椴木板*1(40*60cm)Type-c下载线*1
#结构设计#使用lasermaker计算机辅助设计软件设计图纸,材料选用3mm椴木板,设计图纸如下
利用激光切割机加工后的结构如下图所示
#电路设计#接着我们进行电路设计,前文中我们确定了掌控板、语音识别和语音合成模块再额外配合掌控宝扩展板就可以实现两路数字大按钮和两路i2c接口的使用啦,电路接线图如下
#组装#“传话筒”的组装非常简单,只需简单的几步即可完成1、将所有的电子部件安装在面板上2、将两个数字大按钮、语音识别和语音合成模块与掌控宝扩展板接线3、安装柔性的侧板4、安装底板
完成后的效果如下图
#编程实现#在开始编写程序之前我们需要了解一下语音识别的原理过程
从上图中我们不难看出,本次语音助手使用的为离线识别的方式,而上一次的作品我们使用的是网络模型库的识别方式,当然各自有各自的特点,离线识别响应速度快,不受网络限制,但模型库可能不够丰富,而在线识别模型库丰富,但有可能会受到网络限制,明确了识别过程和各自的优缺点大家可以自由选择接下来我们了解本次语音助手的识别过程,我们为语音助手设置了两种模式,一种是专门为聋哑人设计的送外卖模式,一种是为普通用户设计的智能对话模式
熟悉了两种模式后我们开始编写程序此次我们使用Mind+图形化编程环境,首先需要选择主控板为掌控板,然后需要加载语音识别和语音合成模块库,点击用户库在搜索栏输入对应名称即可找到
接着我们进行简单的功能测试,先来测试语音合成模块的功能,编写下面程序,下载运行后会每隔1秒发出“你好”的声音
接着测试语音识别模块的基础功能,语音识别模块设置为循环模式(循环模式顾名思义就是循环检测,暂且这么理解,下面会详细介绍),添加关键词“kai deng”,关键词编号为1,当识别到“开灯”声音时,掌控板屏幕显示“灯已打开”
语音识别模块除了有循环模式外,还有按钮模式和指令模式,识别模式指示灯的蓝色代表循环模式、绿色代表按钮模式、白色代表指令模式,识别模式指示灯亮代表语音识别模块在工作,指示灯灭代表语音识别模块在休眠,识别模式指示灯闪烁一次表示语音识别模块准确识别出添加的关键词将的识别模式设置为循环模式后,识别模式指示灯为常亮蓝色,此时模块一直处于拾音状态,不停的拾取环境中的声音进行分析识别。当识别到录入的关键词后,指示灯会闪烁一次,提示使用者已准确识别。同一时间只能识别一条关键词,待指示灯闪烁后方可进行下次识别。
将语音识别模块的识别模式设置为按钮模式后,识别模式指示灯为常灭,此时模块处于休眠状态,对环境中的声音完全忽略,在按钮被按下时会激活模块。模块被激活后,指示灯常亮绿色,识别到录入的关键词后,指示灯会闪烁一次,提示使用者已准确识别。同一时间只能识别一条关键词,待指示灯闪烁后方可进行下次识别
将语音识别模块的识别模式设置为指令模式后,识别模式指示灯为常灭,此时模块处于休眠状态,对环境中的声音完全忽略,在说出唤醒关键词后激活模块。模块被激活后,指示灯常亮白色,识别到录入的关键词后,指示灯会闪烁一次,提示使用者已准确识别。同一时间只能识别一条关键词,待指示灯闪烁后方可进行下次识别。唤醒时长为10s。在这10s内,每当识别到添加的关键词后,唤醒时间会刷新。如果10s内没有识别成功,则模块会再次进入休眠状态。
了解了这几种模式后对我们这次的作品选择什么样的模式会有很大帮助,接下来将语音识别模块和语音合成模式结合在一起进行测试,此次我们将语音合成模块设置成“唐老鸭”的声音,发音方式为“单词”,“单词”发出的声音会更加有感情,程序要实现的目的是,当语音识别模块识别出“kai deng”的指令后屏幕显示“灯已打开”的同时发出“灯已打开”的声音
当我们能简单的将两个模块结合在一起使用后,去实现一个复杂的功能也就不是什么难事了,接下来到了本次作品的核心程序,我们拿智能对话模式举例,类似于市面上常见的智能音响,比如“小爱同学”,要与智能音响对话需要一个唤醒词,前文中我们了解到语音识别模块三种模式中有指令识别模式,但别人造好的轮子使用起来并不是那么顺手,能不能自己做一个带唤醒词的识别模式呢,世上无难事,应该是没有问题的,我们看下面的程序,程序中设置了“xiao na”为唤醒词,当识别到唤醒词后会等待用户输入要执行的命令,在下面的程序中设置了两条命令“kai deng”和“ni ji sui le”,当识别到其中任意一条后会执行相应的程序,并且重新等待用户说出唤醒词才可再次唤醒,这样就可以实现类似于“小爱同学”的功能了
当你理解了上面的程序后,要实现更多的指令识别只需要添加更多的关键词就可以了,编写本次作品的程序就没有什么难度了,旺仔爸爸将程序设计成了几个功能块,接下来我们慢慢了解每个模块的作用第一步先对语音识别模块和语音合成模块初始化,并提前设置好关键词(关键词的多少决定了作品的丰富程度,这也是离线识别和在线识别的区别之处)
接下来对屏幕首页显示的内容进行设置,方便使用者观看(尤其是聋哑人使用者)
然后我们来学习送外卖模式的程序,当按下红色的数字大按钮(P14)后会进入送外卖模式,程序运行完一次后会回到模式选择界面,使用者可以重新选择
接下来我们学习智能对话模式,当按下绿色的数字大按钮(P15)后会进入智能对话模式,通过唤醒词唤醒设备,当用户发出“退出”的声音或者再次按下绿色的数字大按钮后会回到模式选择界面,使用者可以重新选择
最后就是主程序啦,主程序非常的简单,只用到了两个数字大按钮来选择模式,为了看起来更加的清爽,此处将其他功能模块都折叠起来了
#总结#本次对聋哑人“传话筒”在外观结构、体积以及编程环境做了改进,学会了使用语音识别模块和语音合成模块除此之外我们在后续还可以增加天气查询、时间查询、环境数据播报等功能,由于所有的智能对话都是将词条提前录制好进行识别的,所以如果出现了不包含的词条将不会有反馈,在此情况下,我们可以再次迭代,增加网络请求的功能,当在离线模式下不能找到答案时,可以选择通过网络方式获取答案,让传话筒变得更加“智能”最后不得不说这两款产品对学生来说确实太友好了,降低门槛的同时极大的方便了学生创作使用,是实现人工智能的利器,期待同学们更多优秀的创作#彩蛋#由于本次作品用到的模块是DFRobot发来的测试产品,不过现在正式产品已经发布,如果有需求的伙伴可以在DF商城选购同时作为回馈粉丝的支持,旺仔爸爸打算送出一块语音识别模块,参与方式如下造物让生活更美好,我们下期再见!更多有趣的项目,欢迎旺仔爸爸造物社公众号
我想要语音合成
页:
[1]