之前在HomeAssistant里使用Node-RED+小米智能音箱+某GPT实现了智能问答应用,但使用起来不太方便,最近看到一个开源项目,正好手头又有相关配件,于是试着搭建了一个自己的聊天机器人。

一、器件准备

1.  ESP32开发板(ESP-WROOM-32)

2、INMP441全向麦克风

3、MAX98357 I2S音频放大器模块

4、1.8寸(128x160)TFT彩色显示屏(8针)

5、小型喇叭

6、3D打印外壳

   

7、按钮开关

6*6*9按钮微动开关

二、器件连接

INMP441 ESP32 MAX98357 ESP32 TFT显示屏 ESP32

LED

(可选)

ESP32
VDD 3.3v Vin VIN VDD VIN 正极 GPIO33
GND GND GND GND GND GND 负极 GND
SD GPIO22 LRC GPIO27 SCL GPIO18
WS GPIO15 BCLK GPIO26 SDA GPIO23
SCK GPIO4 DIN GPIO25 RST GPIO12
DC GPIO32
CS GPIO5

如下图:

三、注册并开通大模型服务

以接入讯飞星火模型为例:

1、注册账号

进入https://www.xfyun.cn注册个人账号

2、创建应用

完成注册并登录后,进入控制台,选择创建新应用,平台将自动生成APPID。

  

3、开通服务

点击已创建的应用条目,点击“更多服务信息查询”,可查看你的APPID、APISecret、APIKey信息,记录下来后面代码调试将使用。

返回后重新点击已创建的应用条目,进入后选择左侧的Spark4.0 Ultra模型,点击“立即购买”,然后选择我的应用、“免费包(个人)”,最后“确认下单”,这样就开通了讯飞认知大模型。

  

同样的操作,再选择开通语音转文字服务。

四、烧录固件

1、编译环境准备

下载vscode和platformIO插件

2、从GitHub克隆代码

地址:GitHub - Explorerlowi/ESP32_AI_LLM: 本项目使用esp32、esp32s3接入讯飞星火、豆包、chatgpt等大模型,实现语音对话聊天功能,支持语音唤醒、连续对话、音乐播放等功能,同时外接了一块显示屏实时显示对话的内容。

注意:找到.pio\libdeps\upesy_wroom\TFT_eSPI路径下的User_Setup.h文件,删除它,然后将根目录下的User_Setup.h文件剪切粘贴过去

3、按需修改代码

必须修改的代码:

......

int llm = 1;    // 大模型选择参数:0:豆包,1:讯飞星火,2:通义千问

......

// 讯飞stt和大模型服务的参数
String APPID = "12345678";     // App ID,必填
String APISecret = "12345678"; // API Secret,必填
String APIKey = "12345678";    // API Key,必填

......

根据个人喜好可以修改的代码:

......

// 角色设定
String roleSet = "你是一个二次元魔法猫娘,你的名字叫小灵,你的性格可爱活泼,说话简短,同时带有攻击嘲讽意味,你喜欢在回答的末尾加一个“喵”字。";
String roleSet1 = "你是一个二次元魔法猫娘,你的名字叫小灵,你的性格可爱活泼,说话简短,同时带有攻击嘲讽意味,你喜欢在回答的末尾加一个“喵”字。";


......

                // 增加足够多的同音字可以提高唤醒率,支持多唤醒词唤醒(askquestion.indexOf("你好") > -1 || askquestion.indexOf("您好") > -1) &&
                if( (askquestion.indexOf("坤坤") > -1 || askquestion.indexOf("小白") > -1 || askquestion.indexOf("丁真") > -1 || askquestion.indexOf("九歌") > -1))
                {
                    await_flag = 0;     //退出待机状态
                    start_con = 1;      //对话开始标识
                    Answer = "喵~九歌在的,请尽情吩咐小九歌,主人。";
                    response();     //屏幕显示Answer以及语音播放
                    conflag = 1;
                    return;
                }
......

Answer = "嗨~我没有听清,请再说一遍吧";

......

            else if (askquestion.indexOf("退下") > -1 || askquestion.indexOf("再见") > -1 || askquestion.indexOf("拜拜") > -1)
            {
                start_con = 0;      // 标识一轮对话结束
                musicplay = 0;
                Answer = "喵~主人,我先退下了,有事再叫我。";
                response();     //屏幕显示Answer以及语音播放
                await_flag = 1;     // 进入待机状态
                awake_flag = 0;     // 继续进行唤醒词识别
            }

......

4、编译并上传固件

在vscode中安装platformIO插件,编译并上传固件即可。

五、使用说明

1、首次使用设置

1)设备通电后,用电脑连接设备热点ESP32-Setup密码为12345678

2)打开浏览器,输入http://192.168.4.1

3)进入ESP32 Configuration页面,点击“WI-FI Management”

4)输入你的WI-FI信息,点击“Save”

如果需要在其他WIFI环境使用,也可以添加多个WIFI,只不过启动会稍微慢一点。也可以通过“Delete”删除多余的WIFI配置。

2、正常使用

点击ESP32开发板上的“EN”重启键设备,就可以连接WIFI开始使用了。在待机状态下,使用唤醒词“小白”唤醒设备,设备应答后就可以开始提问。设备回答完一个问题,过一段时间没有新的问题,设备会自动回到待机模式。也可以说“拜拜”“退下”让设备进入待机模式。如要在设备回答过程中终止设备回答,可以按ESP32开发板上的“ROOT”按钮,开始下一个提问。如设备响应出现问题,可以按“EN”键重启设备。

六、组装

1、打印3D外壳

在以下地址下载3D打印外壳文件:

百度网盘链接:https://pan.baidu.com/s/1ek-Phzb4BuplCgqt3bZ0RA?pwd=ulze 
提取码:ulze 
 

2、组装

按照接线图进行组装,注意为方便操作,需将ESP32开发板上的“EN”、“ROOT”键外接到机壳上。

3、效果视频

ESP32制作聊天机器人(连接大模型)_哔哩哔哩_bilibili

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐