本文中将使用ESP-AI开源库来实现将硬件接入AI,整个过程将非常的轻松~

本库支持的平台很多,包括 TTS 支持各种音色等。
什么是ESP-AI?
为你的开发板提供全套的AI对话方案,包括但不限于
ESP32系列开发板的IAT+LLM+TTS集成方案。
QQ 交流群: 854445223
ESP-AI 分为了服务端和客户端两套代码:
整体上技术栈为 javascript 和 c 两种语言的组合。 不用担心,都是配置化的,无需担心不会写这两语言。你只需要大概能看懂配置即可~
ESP-AI 仓库地址:https://github.com/wangzongming/esp-ai
【超快速的ESP32 AI对话方案。已开源!快接入你的机器人吧~】 https://www.bilibili.com/video/BV1xS421o7hi/?share_source=copy_web&vd_source=041c9610a29750f498de1bafe953086b
下载地址:https://nodejs.org/en/blog/release/v15.0.0
滚动到最下面,然后选择适合自己电脑位数的安装包下载后安装即可。
下载地址:https://www.arduino.cc/en/software
选择合适的安装包安装即可。
下面是按演示视频中的配置来的
| 硬件 | 数量 | 价格 |
|---|---|---|
| esp32s3(N16R8) | 1 | 25 |
| INMP441 | 1 | 8 |
| Max98357A | 1 | 5 |
| LED | 1 | 0.5 |
| 小喇叭 | 1 | 6 |
| 面包板 | 1 | 5 |
| 杜邦线 | 若干 | 1 |
npm i esp-ai 命令,用于安装ESP-AI。index.js 文件const espAi = require("esp-ai"); espAi({ api_key: { // 讯飞:https://console.xfyun.cn/services/iat 。打开网址后,右上角三个字段复制进来即可。 xun_fei: { appid: "xxx", apiSecret: "xxx", apiKey: "xxx", // LLM 版本 llm: "v3.5", }, }); 注意代码中实际上就执行了一个方法,然后给方法传入了一些参数,比如上面的案例中传入了讯飞的key, 这时候需要先去注册讯飞账号,然后将key放进去即可。
执行下面代码即可运行服务
node ./index.js 
生成环境中请使用 pm2 来运行服务以保证服务的可靠和性能。
pm2 start ./index.js -i max 需要提前将/client/libraries中的文件下载放到Arduino IED的依赖目录中,这个目录默认在:C:\Users\用户名\Documents\Arduino\libraries(路径没有的话,自己百度一下在 arduino ide中查找这路径的方法)
注意:将仓库中libraries里面的压缩包都解压出来,然后放到本地中。
除此之外,还需要提前安装好 esp32(v2.x,版本不能大于2) 开发板环境。
| 文件名 | 备注 |
|---|---|
| xiao_ming_tong_xue_inferencing | 离线识别的模型 |
| esp-ai | 主要依赖 |
| arduino-audio-tool | 最新版IDE可以直接搜索安装 |
| arduinoWebSockets | 最新版IDE可以直接搜索安装 |
客户端代码位于仓库代码的 example/example.ino中,需要在本地新增一个 example 目录(必须是这个名字),
然后在目录中新增一个 example.ino 文件。
然后将仓库中 example/example.ino 文件中的内容复制进去,修改 example.ino 代码中的下面这几个配置。
// [必 填] 是否调试模式, 会输出更多信息 bool debug = true; // [必 填] wifi 配置: { wifi 账号, wifi 密码 } 注意:要用双引号! ESP_AI_wifi_config wifi_config = { "oldwang", "oldwang520" }; // [必 填] 服务配置: { 服务IP, 服务端口 } ESP_AI_server_config server_config = { "192.168.1.5", 8080 }; // [必 填] 离线唤醒方案:{ 方案, 识别阈值 }, "edge_impulse" | "diy",为 "diy" 时可调用 esp_ai.wakeUp() 方法进行唤醒 ESP_AI_wake_up_config wake_up_config = { "edge_impulse", 0.7 }; 因为有一个离线语音识别模型,首次编译会很慢,配置不好的电脑至少半个小时以上的时间~
| ESP32-s3 | INMP441 |
|---|---|
| 3v3 | VDD |
| GND | GND |
| GND | L/R |
| 5 | WS |
| 4 | SCK |
| 6 | SD |
| ESP32-s3 | Max98357A |
|---|---|
| 3v3 | VDD |
| GND | GND |
| 17 | LRC |
| 16 | BCLK |
| 15 | DIN |
| ESP32-s3 | LED |
|---|---|
| GND | GND |
| 18 | 正极 |
到这里就完成啦。
对着麦克风喊一声 “小明同学” 吧。
该仓库还在持续完善中,开源不易,点个 Star 支持下吧~