上一节,我们的智能宝宝综合了智能问答和中译英的功能,
树莓派(古德微)制作语音智能宝宝(2)--中英翻译
树莓派(古德微)制作语音智能宝宝(1)--智能问答
今天我们来实现语音点播的功能。我们采用将歌曲上传到树莓派到固定目录中,用数据库记录歌曲的信息,通过语音播报歌曲名称进行点播,有则播放,无则播报未找到。
语音点播流程图
好了,开始动手咯。
(1)上传歌曲到树莓派。
为了方便演示,这里只用了两个专辑——儿歌和故事,分别用两个文件夹存放,目录结构如下:
歌曲目录
我们通过Filezilla软件将MyMusic文件夹上传到树莓派SFTP默认的根目录下(/home/pi/)。
FileZilla
树莓派SFTP登陆的设置如下:(注意此处是SFTP,而非FTP)
主机:sftp://<树莓派IP地址>
用户名:pi #默认的用户名
密码:<树莓派登陆密码>
端口:22
(2)利用数据库存储歌曲信息。
鉴于古德微图形化编程平台内置数据库的特点,我们以“标签”的形式存储歌曲的信息——标签名为歌曲名、每个标签用列表存储歌曲的时长、地址和专辑类别。
在教程中,我们通过古德微图形化编程来将歌曲的信息录入到数据中。
那我们怎么样去把歌曲的信息调出来呢?从输出的调试信息我们可以看出,只需要从数据库中读取标签为歌曲名的数据——列表数据,再读取出列表中的内容即可,在本例程中,只需要读取歌曲的地址,再通过音频播放即可。
image.png
我们如何让智能宝宝识别,现在我是要求他来点播歌曲的,这个跟上一节的翻译是一样的做法,我们要去设定一个口令,在这里我们设定播放歌曲的时候,必须要播报语音:"播放"+歌曲。如:小度小度,播放虫儿飞。
延续上一节的案例,我们可以在”文字标识”的条件判断中增加一个条件:”文字标识“是否为播放,整合后的流程图如下:
整合后的流程图
设置语音点播函数:
点播函数
按照流程图对语音点播功能进行整合:
整合
好了,我们现在运行一下程序:
--小度,小度
--叮
--播放虫儿飞
--未找到虫儿飞
什么情况?未找到虫儿飞?我们之前测试过虫儿飞的播放是没有问题的。我们再来查看输出的情况~
输出查看操作文字
这里我们注意到:操作文字输出的信息是:”虫儿飞。“后面多加了一个句号”。“,因此,我们在语音识别信息的时候,将句末的标点符号去掉。
去掉句末的标点符号
将这段代码放到”输出调试信息<语音识别>“的上方。以下就是这个整合了①智能问答②中译英③语音点播三个功能的代码。
完整代码
PS:在将音乐文件写入数据库的操作,这里仅仅做一个古德微图形化操作的演示,在实际中,建议采用Python程序定时获取MyMusic文件夹中音乐文件的信息,并更新到数据库中。在此,就不再展开了。
网友评论