回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

语音交互智能“音箱”——小麦同学 简单

头像 Jacken 2019.12.10 1337 0

步骤1 项目背景

等了好久的DF活动,第一时间就报名了。不过为了做什么内容的作品可是琢磨了好久~~前段时间新入了个Yeelight的风暖,可以接入米家互联进行控制,随着家里的物联网设备越来越多,就寻思着要买个小爱同学。这不这几天在了解和体验中,突发奇想,咱们也来做一个“智障音箱”呗,顺便简单探索下智能音箱互动交流的实现过程~~~so....就有了咱们这个小作品——小麦同学

步骤2 作品主要内容及实现原理

小麦同学主要具有五大基础功能:文本翻译、天气预报、时间查询、讲笑话和“瞎”聊功能。并且也可以像智能音箱那样待机,只要程序运行着,随时都可以通过“小麦同学”唤醒它。

所有功能所采用的实现原理都是大致相同的:首先是语音识别——关键词判断——回答。

不过受到语音识别和文字朗读服务的限制,经常会出现识别失败、朗读延迟等不稳定的问题,不过这并不妨碍我们大声地召唤“小麦同学”!

下面是演示视频,稍微有点长,希望你喜欢!

步骤3 制作流程

核心功能的代码


这个作品制作起来还是比较简单的,文末我会附上作品源文件,有兴趣的小伙伴可以详细去研究!

此处我主要介绍下作品中的核心功能实现和五大基础功能的实现方法。

下方是这个作品最核心的功能——持续性的语音识别与唤醒。

project-image

在核心功能的程序中,我通过“唤醒状态”这个变量值的判断来实现中断语音识别和语音识别功能持久待机的功能。

在成功唤醒后,会有5秒钟的语音识别输入,这时我们可以对小麦同学说任何内容的话(普通话尽量说的清晰、标准哦!),接下来小麦同学就会对你说的话进行关键词甄别,并作出对应的回答。

在这里我使用“函数”功能,创建自定义积木块将各个基础功能进行代码封装,这样做的好处有二:一是程序简洁清晰;二是便于修改和增减程序功能。

文本翻译功能的代码


文本翻译功能现在只做了中文翻译成英、法、日三种语言,下图展示的是对翻译内容识别和提取的脚本,待提取完成后,再进入执行文本的翻译功能(此处脚本没截图,详细请看程序)

不管你想做多少种语言的翻译,其套路都一样,所以后续喜欢的话完全可以继续增加可支持的语言翻译。

project-image

天气预报功能


天气预报主要采用了mind+网络服务里的天气预报扩展的功能来实现的,本来想做的是支持查询全国各地的天气,不过这个天气预报的积木块并不支持放入变量积木,那么要实现全国通报的话,可想而知~~那工作量太大了,所以只做了我本地的天气预报。

对于天气预报这个扩展我顺带提两个建议:

1、希望省份、程序、天气这三个位置可以支持放入变量积木,以实现更多 功能效果;

2、这个天气预报我也不知道它报的是今天还是明天的天气,所以建议可以增加一个功能选项,支持选择未来N天的天气预报查询。

project-image

讲笑话功能的代码


讲笑话功能比较简单,只需要网上找一些笑话(不要太长),然后在记事本内做好,导入到列表中就可以了。

project-image

瞎聊功能代码


所谓瞎聊,其实就是“问牛答马”,我想其实市场上的那些智能音箱之所以能实现问啥答啥的效果也就是它有庞大的关键字比对库,可以根据不同的关键字来回答你不同的内容。其本质还是关键词识别(如有说错请请喷~~嘻嘻!)

这个瞎聊功能是放在所有功能之后的,如果放在最前面,那么它会先“瞎”回复你一句,再去根据关键词来做相应的判断。因为这个就是在前面所有关键词比对中找不到比对结果后才会启动这个功能的,如果前面的比对中已经找到对应的结果,这个瞎聊功能是不会被运行的。


细心的你一定发现了,前面几个功能的代码结尾都有一个“将语音识别结果存储”这个变量的值设为空的积木,因为在唤醒后,我是将语音输入的内容存储到这个变量后再进入关键词比对的,前面如果已经有比对到结果并且也做了相应的回复处理了,就会将这个变量里的值清空,这样做的主要目的就是避免每次比对后不管是否有结果都会触发“瞎聊”功能。

project-image

时间查询功能代码


时间查询功能主要是利用侦测模块里的时间相关积木来调用电脑系统的日期时间来实现的,其他套路都跟上面几个功能一样。所以也不再重复叙述了!

project-image

步骤4 结束语

虽然作品简单了点,而且受到网络及语音识别和文字朗读服务稳定性的限制,作品的体验并不算很满意,不过通过这个作品的制作,也让我更深入地了解了下语音交互的智能音箱实现原理了,可谓是受益匪浅!再次感谢DF提供的机会和平台!


最后,还是反馈几个问题,希望日后DF的攻城狮们可以解决它们!

1、mind+的Ctrl+G截图功能可能还存在一些bug,我在初次使用时,导致整个软件界面白屏,只剩下窗口最顶部的标题栏,(win+1.61版,win10系统,i7/16g内存配置)最后导致我做了一下午的“小麦同学”只能重新做了= =!(因为忘了先保存了)

2、对文字朗读和语音识别的服务稳定性还需进一步优化,(排除自己的网络问题,300M电信光纤,很稳),经常性出现识别失败或文字朗读失败的问题。

3、造物记web版的文章编辑器不支持在4K分辨率下进行编辑(除了代码和附件两个模块可以拖动添加,其他的都不行),我这篇文章是在分屏1080p的显示器中完成的,希望早日支持高分屏。

最后是这个作品的源程序,感兴趣的小伙伴可以下载源程序研究,并且也可以在源程序中添加任何你想要的语音交互功能!

步骤1 项目背景

等了好久的DF活动,第一时间就报名了。不过为了做什么内容的作品可是琢磨了好久~~前段时间家里新入了个Yeelight暖风机,可以接入小米智能音箱进行控制,随着家里的物联网设备越来越多,就寻思着要买个小爱同学。这不这几天在了解和体验中,突发奇想,咱们也来做一个“智障音箱”呗,顺便简单探索下智能音箱互动交流的实现过程~~~so....就有了咱们这个小作品——小麦同学

步骤2 作品主要内容及实现原理

小麦同学主要具有五大基础功能:文本翻译、天气预报、时间查询、讲笑话和“瞎”聊功能。并且也可以像智能音箱那样待机,只要程序运行着,随时都可以通过“小麦同学”唤醒它。 

 所有功能所采用的实现原理都是大致相同的:首先是语音识别——关键词判断——回答。 

不过受到语音识别和文字朗读服务的限制,经常会出现识别失败、朗读延迟等不稳定的问题,不过这并不妨碍我们大声地召唤“小麦同学”!  

下面是演示视频,稍微有点长,希望你喜欢!

步骤3 制作流程


核心功能的代码 


 这个作品制作起来还是比较简单的,文末我会附上作品源文件,有兴趣的小伙伴可以详细去研究! 

此处我主要介绍下作品中的核心功能实现和五大基础功能的实现方法。 

 下方是这个作品最核心的功能——持续性的语音识别与唤醒。  

project-image

在核心功能的程序中,我通过“唤醒状态”这个变量值的判断来实现中断语音识别和语音识别功能持久待机的功能。  

在成功唤醒后,会有5秒钟的语音识别输入,这时我们可以对小麦同学说任何内容的话(普通话尽量说的清晰、标准哦!),接下来小麦同学就会对你说的话进行关键词甄别,并作出对应的回答。

 在这里我使用“函数”功能,创建自定义积木块将各个基础功能进行代码封装,这样做的好处有二:一是程序简洁清晰;二是便于修改和增减程序功能。  


文本翻译功能的代码 


 文本翻译功能现在只做了中文翻译成英、法、日三种语言,下图展示的是对翻译内容识别和提取的脚本,待提取完成后,再进入执行文本的翻译功能(此处脚本没截图,详细请看程序) 

 不管你想做多少种语言的翻译,其套路都一样,所以后续喜欢的话完全可以继续增加可支持的语言翻译。

project-image


天气预报功能的代码


 天气预报主要采用了mind+网络服务里的天气预报扩展的功能来实现的,本来想做的是支持查询全国各地的天气,不过这个天气预报的积木块并不支持放入变量积木,那么要实现全国通报的话,可想而知~~那工作量太大了,所以只做了我本地的天气预报。


 对于天气预报这个扩展我顺带提两个建议: 

1、希望省份、程序、天气这三个位置可以支持放入变量积木,以实现更多 功能效果;

 2、这个天气预报我也不知道它报的是今天还是明天的天气,所以建议可以增加一个功能选项,支持选择未来N天的天气预报查询。

project-image


讲笑话功能的代码


讲笑话功能比较简单,只需要网上找一些笑话(不要太长),然后在记事本内做好,导入到列表中就可以了。  

project-image


瞎聊功能代码


所谓瞎聊,其实就是“问牛答马”,我想其实市场上的那些智能音箱之所以能实现问啥答啥的效果也就是它有庞大的关键字比对库,可以根据不同的关键字来回答你不同的内容。其本质还是关键词识别(如有说错请请喷~~嘻嘻!) 

这个瞎聊功能是放在所有功能之后的,如果放在最前面,那么它会先“瞎”回复你一句,再去根据关键词来做相应的判断。因为这个就是在前面所有关键词比对中找不到比对结果后才会启动这个功能的,如果前面的比对中已经找到对应的结果,这个瞎聊功能是不会被运行的。 


 细心的你一定发现了,前面几个功能的代码结尾都有一个“将语音识别结果存储”这个变量的值设为空的积木,因为在唤醒后,我是将语音输入的内容存储到这个变量后再进入关键词比对的,前面如果已经有比对到结果并且也做了相应的回复处理了,就会将这个变量里的值清空,这样做的主要目的就是避免每次比对后不管是否有结果都会触发“瞎聊”功能。

project-image


时间查询功能代码


时间查询功能主要是利用侦测模块里的时间相关积木来调用电脑系统的日期时间来实现的,其他套路都跟上面几个功能一样。所以也不再重复叙述了!

project-image

步骤4 结束语

虽然作品简单了点,而且受到网络及语音识别和文字朗读服务稳定性的限制,作品的体验并不算很满意,不过通过这个作品的制作,也让我更深入地了解了下语音交互的智能音箱实现原理了,可谓是受益匪浅!再次感谢DF提供的机会和平台!


最后,还是反馈几个问题,希望日后DF的攻城狮们可以解决它们!

1、mind+的Ctrl+G截图功能可能还存在一些bug,我在初次使用时,导致整个软件界面白屏,只剩下窗口最顶部的标题栏,(win+1.61版,win10系统,i7/16g内存配置)最后导致我做了一下午的“小麦同学”只能重新做了= =!(因为忘了先保存了)

2、对文字朗读和语音识别的服务稳定性还需进一步优化,(排除自己的网络问题,300M电信光纤,很稳),经常性出现识别失败或文字朗读失败的问题。

3、造物记web版的文章编辑器不支持在4K分辨率下进行编辑(除了代码和附件两个模块可以拖动添加,其他的都不行),我这篇文章是在分屏1080p的显示器中完成的,希望早日支持高分屏。

最后是这个作品的源程序,感兴趣的小伙伴可以下载源程序研究,并且也可以在源程序中添加任何你想要的语音交互功能!

评论

user-avatar