• 从此以后,将硬件接入大语言模型(LLM)将变得如此简单~


    一、前言

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

    image.png

    什么是ESP-AI?

    为你的开发板提供全套的AI对话方案,包括但不限于 ESP32 系列开发板的 IAT+LLM+TTS 集成方案。

    交流群

    QQ 交流群: 854445223

    技术栈

    ESP-AI 分为了服务端和客户端两套代码:

    • 服务端是封装好的库,直接引用后执行即可,除开必要的配置外,一行代码就可以运行起来。服务端使用Nodejs 开发。
    • 客户端目前没有封装为头文件,需要直接将提供的代码上传到开发板中。客户端使用 Arduino 开发。

    整体上技术栈为 javascriptc 两种语言的组合。 不用担心,都是配置化的,无需担心不会写这两语言。你只需要大概能看懂配置即可~

    插件地址

    ESP-AI 仓库地址:https://github.com/wangzongming/esp-ai

    效果演示

    【超快速的ESP32 AI对话方案。已开源!快接入你的机器人吧~】 https://www.bilibili.com/video/BV1xS421o7hi/?share_source=copy_web&vd_source=041c9610a29750f498de1bafe953086b

    二、软件准备

    1. 安装 Nodejs

    下载地址:https://nodejs.org/en/blog/release/v15.0.0

    滚动到最下面,然后选择适合自己电脑位数的安装包下载后安装即可。

    2. 安装 Arduino IDE

    下载地址:https://www.arduino.cc/en/software
    选择合适的安装包安装即可。

    三、硬件准备

    下面是按演示视频中的配置来的

    硬件数量价格
    esp32s3(N16R8)125
    INMP44118
    Max98357A15
    LED10.5
    小喇叭16
    面包板15
    杜邦线若干1

    三、服务端代码

    1. 新建一个目录(最好用英文名字)
    2. 在目录中打开终端
    3. 在终端中执行npm i esp-ai 命令,用于安装ESP-AI
    4. 在目录中新增一个 index.js 文件
    5. 在文件中写入下面代码
    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

    除此之外,还需要提前安装好 esp32 开发板环境。

    文件名备注
    xiao_ming_tong_xue_inferencing离线识别的模型
    arduino-audio-tool最新版IDE可以直接搜索安装
    arduinoWebSockets最新版IDE可以直接搜索安装

    代码上传

    客户端代码位于仓库代码的 client 目录中,需要在本地新增一个 client 目录(必须是这个名字),
    然后在目录中新增一个 client.ino 文件。

    然后将仓库中 client/client.ino 文件中的内容复制进去,修改代码中的 wifi 信息,然后上传到开发板中。

    因为有一个离线语音识别模型,首次编译会很慢,配置不好的电脑至少半个小时以上的时间~

    六、 引脚接线

    INMP441(麦克风) 接线

    ESP32-s3INMP441
    3v3VDD
    GNDGND
    GNDL/R
    5WS
    4SCK
    6SD

    Max98357A(放大器) 接线

    ESP32-s3Max98357A
    3v3VDD
    GNDGND
    17LRC
    16BCLK
    15DIN

    LED 接线

    ESP32-s3LED
    GNDGND
    18正极

    七、 完成

    到这里就完成啦。
    对着麦克风喊一声 “小明同学” 吧。

    八、 最后

    该仓库还在持续完善中,开源不易,点个 Star 支持下吧~

  • 相关阅读:
    java ssm+python儿童疫苗接种提醒系统e6lhv
    删除公共字符串、排序子序列、逆置字符串、字符串中连续最长的数字串、数组中次数出现一半的数字
    SAP 电商云 Spartacus UI External Route 的模块实现概述
    Spring Cloud Gateway
    【web-避开客户端控件】(2.2.1)收集使用数据: 长度限制、资源副本、基于脚本的确认、禁用的元素
    负载均衡架构设计技巧
    【Java八股文总结】之面试题(三)
    流畅的Python读书笔记(四)序列:序列的运算及陷阱
    vue3基础(三)组件命名及调用,render,render中获取插槽值,函数式组件,异步组件,vue3中data只有函数形式
    go-cron源码分析(二、Parser解析器)
  • 原文地址:https://blog.csdn.net/weixin_44787578/article/details/140007060