大家好,我是老李,一个在嵌入式领域摸爬滚打多年的工程师。最近用ESP32做了一个挺有意思的玩意儿——一个能听懂人话、还能跟你聊天的AI语音助手。它不仅能接入讯飞星火、豆包、通义千问这些主流大模型,还能播放音乐、控制灯光,功能相当完整。今天我就把这个项目的开发过程,从硬件选型到代码烧录,手把手地分享给大家,希望能帮你少走些弯路。
这个项目特别适合想入门AIoT(人工智能物联网)的朋友。你不需要有很强的AI背景,只要跟着步骤走,就能亲手打造一个属于自己的智能语音终端。咱们先从整体上看看它都能干些啥。
这个ESP32语音助手可不是个简单的“复读机”,它集成了好几个实用的功能模块,咱们一个个来看。
1.1 智能语音唤醒与连续对话
设备一上电连上网,就进入待命状态,时刻“竖着耳朵”听你的唤醒词。唤醒词可以在代码里自定义,比如你可以改成“嘿,小爱”或者“小度小度”。唤醒之后,你就可以跟它连续聊天了。它通过一个叫INMP441的全向麦克风收音,把你说的话送到科大讯飞的语音转文字(STT)服务,变成文字后,再扔给大模型去“思考”怎么回答,最后用百度的文字转语音(TTS)服务把答案“说”出来。整个过程,即使没有屏幕,对话也能流畅进行。
注意:讯飞的STT服务是按调用次数或时长收费的。如果长时间不用,建议关掉设备电源,别让它一直待机“偷听”,以免产生不必要的费用。
1.2 便捷的网络与音乐管理
联网是智能设备的基础。这个项目把联网做得挺人性化。启动时,LED会闪烁,屏幕显示连接状态。如果连不上网,ESP32会自己开启一个叫“ESP32-Setup”的Wi-Fi热点。你用手机或电脑连上这个热点,然后访问一个特定的IP地址(通常是192.168.4.1),就能打开一个配置网页。
在这个网页里,你可以:
- 输入新的Wi-Fi账号密码并保存。
- 查看或删除已经保存过的网络信息。
音乐播放功能也挺好玩,它接入了网易云音乐的服务器(非VIP歌曲)。有意思的是,就算断网了,你也能通过上面说的那个配置网页来添加或删除你想听的歌曲信息。网页上可以添加、修改、删除音乐,也能列出所有保存的歌。
提示:添加音乐时,歌名别起太长,也尽量别用英文,不然语音识别可能找不准。另外,有些歌在播放时可能会让设备重启,这可能是音乐源服务器的问题,不是咱们代码的锅。
1.3 丰富的语音控制与交互
除了聊天,你还能用语音控制它:
- 调节音量和灯光:在AI说话的时候,按下启动键(通常连接在某个GPIO上的按键),然后说“调大音量”或者“打开/关闭LED”,它就会照做,并且不会打断当前的对话。
- 控制音乐播放:播放音乐时,按下启动键说“暂停播放”或“恢复播放”。
- 切换AI大脑:聊着天,你可以说“切换模型”,它就能在豆包、讯飞星火、通义千问这几个大模型之间来回切换,体验不同“性格”的AI。
- 信息可视化:项目外接了一块1.8英寸的RGB TFT屏幕,对话内容、网络状态等信息都能实时显示,交互体验更直观。
工欲善其事,必先利其器。咱们来看看做这个项目需要哪些硬件。核心就是一块ESP32开发板,它负责所有的计算、联网和逻辑控制。
核心硬件清单:
这些模块和ESP32之间的连接,主要是通过I2C、I2S、SPI这些标准接口。接线的时候一定要对照模块的引脚说明和ESP32的引脚定义来,特别是电源别接错了。项目原作者提供了详细的接线图,在部署代码前最好先确认一遍。
硬件准备好了,接下来就是让代码跑起来。这里咱们用VSCode + PlatformIO这个组合,对嵌入式开发来说非常方便。
3.1 第一步:安装开发环境
- 安装VSCode:去Visual Studio Code官网下载安装。
- 安装PlatformIO插件:在VSCode的扩展商店里搜索“PlatformIO IDE”,安装它。这个插件集成了编译器、烧录工具、库管理,几乎包办了一切。
- 安装ESP32驱动:根据你的ESP32开发板型号(比如用的是CH340还是CP2102芯片),去官网下载对应的USB转串口驱动并安装,这样电脑才能识别你的设备。
3.2 第二步:获取并准备项目代码
- 克隆项目:在命令行或者用Git工具,把项目代码克隆到本地。
git clone https://github.com/Explorerlowi/ESP32_AI_LLM.git - 用VSCode打开项目:打开VSCode,选择“打开文件夹”,找到你刚克隆下来的
ESP32_AI_LLM文件夹。 - 等待依赖库下载:PlatformIO会自动解析项目配置文件,下载需要的第三方库(比如TFT屏幕驱动、音频处理库等)。留意VSCode右下角的状态栏,会有下载进度。如果下载很慢或失败,可能是因为网络问题,可能需要检查网络设置。
提示:依赖库下载是自动的,但有时会因为网络问题卡住。如果遇到,可以尝试重启VSCode,或者检查一下网络环境。
- 关键一步:配置屏幕驱动: 找到项目目录下的
.piolibdepsꈂ_wroomTFT_eSPI这个路径(注意,upesy_wroom可能因你的开发板环境名不同而略有差异)。 将这个路径下的User_Setup.h文件删除。 然后将项目根目录下的User_Setup.h文件剪切,并粘贴到刚才的.piolibdepsꈂ_wroomTFT_eSPI路径下。 这一步非常重要!因为根目录下的这个文件是原作者根据我们使用的1.8寸ST7735屏幕预先配置好的,直接替换才能保证屏幕正常显示。
3.3 第三步:配置AI服务参数
现在要告诉ESP32,怎么去访问那些强大的AI服务。打开项目根目录下的 main.cpp 文件,找到需要填写参数的地方。
配置讯飞星火大模型: 你需要去科大讯飞开放平台注册账号,创建一个语音交互应用,获取以下信息:
GPT plus 代充 只需 145// 在 main.cpp 中找到类似下面的位置,填入你的信息 const char* xf_app_id = "你的APPID"; const char* xf_api_key = "你的APIKey"; const char* xf_api_secret = "你的APISecret";
(可选)配置豆包大模型: 如果你也想用豆包模型,需要去火山引擎开通相关服务,获取API Key。
// 同样在 main.cpp 中寻找对应位置 const char* doubao_api_key = "你的豆包API Key";
通义千问等模型的配置方式类似,在代码中都有对应的位置,按注释填写即可。
所有配置都填好后,就可以开始最后的步骤了。
- 连接硬件:用USB线将ESP32开发板连接到电脑。确保所有外围模块(麦克风、屏幕、功放)都已正确连接。
- 选择开发板:在VSCode底部状态栏,点击PlatformIO的快捷图标(一个小房子的标志),确保当前环境选择了正确的ESP32开发板型号(例如
esp32dev)。 - 编译代码:点击左侧PlatformIO图标,在
PROJECT TASKS里找到你的开发板环境,展开后点击Build。如果一切配置正确,编译会成功,没有错误。 - 烧录程序:编译成功后,在同一个
PROJECT TASKS下,点击Upload。PlatformIO会自动将编译好的固件烧录到ESP32中。烧录时,你可能需要手动按一下ESP32板子上的BOOT或EN键来进入下载模式,具体看你的板子说明。 - 上电测试:
- 烧录完成后,设备会自动重启。第一次启动,它会尝试连接你之前配置的Wi-Fi(如果代码里预写了的话)。
- 观察屏幕和LED指示灯。如果连接失败,LED可能会闪烁,屏幕提示连接失败。此时,ESP32会进入AP模式。
- 打开手机的Wi-Fi设置,寻找一个名为
ESP32-Setup的热点,连接它。 - 打开手机浏览器,访问
http://192.168.4.1,你应该能看到网络配置页面。在这里输入你家可用的Wi-Fi名称和密码,保存。 - 设备会重启并尝试连接新网络。连接成功后,就可以尝试说唤醒词开始对话了!
第一次运行可能会遇到一些小问题,比如屏幕不亮、没声音。别急,这很正常。重点检查:屏幕驱动文件User_Setup.h是否替换对了地方;麦克风和喇叭的接线(特别是I2S的时钟、数据线)是否牢固;AI服务的密钥有没有填错。多试几次,按照日志提示(可以通过串口监视器查看)一步步排查,你一定能让它“开口说话”。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/240639.html