📖 学习指南:课程主页与详细教程(可提前预习整体框架)
教程地址:https://github.com/datawhalechina/whale-bot
学习指南:https://www.datawhale.cn/learn/summary/268

第一期的课程我都按计划完成了,并在B站发布了打卡视频,有兴趣的朋友可以去了解一下。

【嵌入式开发】AI鲸鱼小车Task1_哔哩哔哩_bilibili

【嵌入式开发】AI鲸鱼小车Task2_哔哩哔哩_bilibili

【嵌入式开发】AI鲸鱼小车Task3_哔哩哔哩_bilibili

【嵌入式开发】AI鲸鱼小车Task4_哔哩哔哩_bilibili

1  Task4---效果优化视频展示

鲸鱼小车优化后效果

在Task1中记录了第一期没有实现的内容,这第二期由于时间的原因实现了其中的3点。

遗憾1:对话需要等待的时间比较长,还需要优化。(现在是需要等待10几秒)

 -->在第二期已经实现。

1.教程中的源代码,设定录音时长是15秒,如果不修改,每次都要录满15秒,就很浪费时间。

#define MAX_RECORD_SECONDS 15  // 最大录音时长(秒)

如何修改呢,就是如果超过一定时间没有说话,就判断说话结束。

2.要修改一下语音间隔的判断时间:

源代码设置为1000ms,这会导致话还没有说完就判断结束了,这个时长不合适。

源代码如下:

#define VAD_SILENCE_MS 1000  // 检测到语音后,录音的时长

这个参数的作用是,检测到开始说话后,录制多长时间的音频。经过调试,觉得比较合适的时长是5000ms。如果都是短的提问,设置为2000就行。但是考虑到有时问题会长一些,时间太短不能录制全部的内容,所以时间设置为5000ms比较合适。(这里还要注意⚠️一点,Coze智能体回复的内容如果超过150字,语音播放会失败,可能是超出缓存了吧?所以,智能体的回复限制在100字以内语音播放比较稳定。)

遗憾2:ESP32与显示屏之间的通信方法还没有掌握,我想将聊天的内容显示到显示屏上。

-->时间原因,没来得及学习,以后有时间再学习吧!

遗憾3:语音播放时,尾音有重复的现象,还没有完全消除。一开始重复4次,到后来重复2次,如何使其不再重复,还需要摸索。

 -->在第二期中已经实现。这应该是Arduino用的ESP32包的版本不同导致的。

第一期ESP32包的版本:2.0.13(这个尾音问题之前花了很多时间)

第二期ESP32包的版本:3.2.0

这次再写入ESP32程序后,发现无法播放语音了,前几天还是可以的。又排查了很久,想起来前几天我将EPS32包升级成最新的了,结果降回去又报错说版本冲突。最后没办法了,卸载了Arduino又装回来,来来回回几次终于弄好了。惊喜的是,安装了ESP32:3.2.0后尾音问题没有啦,哈哈!

遗憾4:切换语音的模型,可以设置不同的语音模型进行对话,而不是只能使用默认的。

-->在第二期中已经实现。

ESP32代码中这个per参数就是变更音色的,默认是103(度米朵-可爱童声),可以切换试试。

注意⚠️:有些音色的效果很差,比如方言类的,发音效果很难听,不清楚是硬件的原因,还是ESP32 I2S的原因。

经过多次的测试,发现了下面两个音色可用,并且效果不错!(在代码中将数字部分替换即可)

①度小柔-温柔女声-6567        ②度小鹿-甜美女声-5118  

百度智能云音色的链接如下:b百度智能云:音色列表 - 语音技术https://cloud.baidu.com/doc/SPEECH/s/Rluv3uq3d

这是其他参数的功能:

目标:像AI小智一样进行连续的多伦对话。

目前实现的效果已经很不错了!和AI小智基本相似。

AI小智没有运动功能,只有聊天模式。所以,鲸鱼小车的控制系统还是有所区别。

优化后的控制模式:

1.小车开机后,是待机状态。

2.用唤醒词“天问小鲸鱼”唤醒后,默认是运动模式,直接语音控制运动即可(例如,前进、后退、左转、右转、持续前减、持续后退、持续左转、持续右转、停止)

3.用唤醒词“天问小鲸鱼”唤醒后,用语音“小鲸鱼”,进入聊天模式,开始录音。(每次对话前都要呼叫“小鲸鱼”。如果使用每次回答后自动再次录音,周围噪音可能会导致不断的循环录制、回答。每次用“小鲸鱼”开启录音,可以避免周围噪音的干扰!)

好了,基于目前的效果,鲸鱼小车项目算是大功告成了!下个项目再见~

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐