用虚谷号做个“小胖”机器人
2019-10-21张婷婷于方军
张婷婷 于方军
“小胖”是进化者公司为孩子设计的机器人,它具备强大的语音交互功能,能根据主人要求自行走动,回答各种难题。聊天机器人作为人工智能应用层面的入门课例,容易激发学生的兴趣,帮助学生陕速感知人工智能的应用情境。
虚谷号则能够为人工智能和Python编程教学提供完整的课程资源包。下面,笔者就利用虚谷号搭建硬件平台,通过图灵机器人(www.tuling123.com)和百度AI两个软件平台,引导学生学会连接这些平台做一个属于自己的个性化语音聊天机器人(如图1)。
课程设计的思路
本课程的设计步骤采用循序渐进的方式,由简到繁,便于学生逐步深化提高,使学生较好地理解语音聊天机器人的实现原理,进而了解人工智能的语音识别应用,从而启发学生发挥创意开发属于自己的人工智能作品。
课程设计了两种聊天机器人:一是借助图灵平台,通过调用request和json库,实现简单的文本聊天机器人程序,使学生对聊天机器人程序的问答过程有个初步概念;二是借助百度语音平台,使用虚谷号架设聊天机器人实物框架,实现当机器人说话时,伴随回复的语音,机器人嘴巴一张一合。最终使学生通过构建实物语音聊天机器人,体验人工智能作品创作的过程。
教学过程主要體现了函数层面的模块化教学,通过将功能封装成库,再调用库的方法,带学生一起,打开“人工智能”的“黑盒子”,理解语音聊天机器人的“听”“思”“说”的过程。
听——它能听得懂?主要通过录音、语音转文本两个活动依次理解智能语音聊天机器人程序“听懂”的过程。使学生理解人工智能就其本质而言,是对人的思维的信息过程的模拟。
思——它会思考吗?借助图灵机器人平台,上传一个json格式的请求(包含聊天内容和个人信息等),获取到回复,再从收到的对象中提取出回复的文本。使学生理解智能语音聊天机器人程序“思考”的过程,理解人工智能可以模拟人的意识和思维,它虽然不是人的智能,但却能像人那样思考,也可能超过人的智能。
说——它是怎么说话的?主要通过探究“文本转语音”和“播放语音”两个活动理解智能语音聊天机器人程序“说话”的过程。使学生理解智能语音机器人的“说”和我们人类的“说”的本质区别。
技术原理
技术流程为:speechRecognition(录音)→百度语音(speech-to-Text语音转文本)→图灵机器人(语义分析及应答)→百度语音(Text-to-speech文本转语音)→PyAudio(音频播放)(如下页图2)。
环境配置
虚谷号运行完整的Linux系统,连好USB声卡后,打开虚谷号的音量控制。
在配置项里面只保留USB声卡,把其他设备都关闭。
1.安装SpeechRecognition.
SpeechRecogintion是Python的一个语音识别框架,已经对接了如谷歌和微软的STT(语音转文本)服务。本课例的语音识别及合成用的是百度的开放服务,所以只需要SpeechRecogintion的录音功能。它可以检测语音中的停顿自动终止录音并保存。
2.安装IDEL
IDLE是开发Python程序的基本IDE(集成开发环境),具备基本的IDE的功能,是非商业Python开发的不错的选择。运行上面代码后安装了Python3.0的集成开发环境,相对于虚谷号预装的jupyter开发环境,IDLE运行占用资源少。
3.升级pip到19.0.3
pip是Python包管理工具,后期的包安装用到pip,以上代码是升级到最新版。
4.安装PyAudio
Linux系统下可以直接使用系统自带的包管理器安装PyAudio(如Ubuntu和Raspbian系统的aptget),可以使用pip命令安装,不过需要提前装好编译用的portaudio19。
5.语音识别代码
百度语音是百度云AI开放平台提供的支持语音识别和语音合成的服务,注册以后就可以直接访问它的REST API了,相有向普通用户提供免费的调用额度。注册成功以后,进入语音服务的控制台创建一个新的应用,记下AppID、API Key和Secret Key(如图3)。
语音识别代码过程中,百度AI可以提供面向Python的框架baidu-aip,这里可以直接使用该框架,安装pip install baiduaip,并把代码中的Key替换成自己的,接着将SpeechRecognition录制的音频上传至百度语音的服务,返回识别后的文本结果并输出(如图4)。
6.图灵机器人
图灵机器人是一个提供(一定额度内)免费的智能聊天服务的平台,注册以后就可以创建自己的聊天机器人并接入到项目中。首先要进入图灵机器人的控制台并创建一个新的聊天机器人,将其记下并分配到apikey(如图5),并在代码中配置为自己的apikey(如图6)。接着,上传一个聊天内容,获取到回复,再从收到的对象中提取出回复的文本(如下页图7)。
7.百度语音(TTS)
可以利用百度的文本转语音(TTS)引擎功能,这种方式生成的语音效果很好,且其中spd设置可以调节语速,vol可调节音量,per可选择人物,在这里选择4号丫丫,并在本程序中定义_个speak函数完成这部分功能(如图8)。
8.PyAudio播放
本课例中调用系统中的SoX命令将上一步生成的MP3音频转为wag格式,再用PyAudio播放。SoX是一个强大的跨平台的音频处理工具,Linux系统可以直接使用包管理器安装:sudo apt-getinstall 80x libsox-fmt-mp3(如图9)。
通过上述配置后,插上耳麦,就能实现与机器人语音聊天了。由于百度的录音时间设置,如果超过60秒没有检测到麦克风输入,会报错停止程序,记得要再次启动程序。另外,还可以通过设置图灵平台的后台设置,让机器人更加个性化(如图10)。
总之,基于虚谷号的语音聊天机器人可以开发的功能非常丰富,既可以从小处着手,开发小型的适合一个学生独立完成的项目,也可以开发比较大型的适合团队完成的项目。在本课例中,在使用虚谷号完成语音聊天机器人作品的同时,不只是学习人工智能的应用技术,更重要的是在教育活动中融入了创客精神和内涵,提高学生的创新意识和实践能力,将学生培养成为有创客精神的人。这也正是虚谷号的初心与坚持所在。