手把手教你玩转ESP-SPARKBOT与豆包大模型:从零到一的完整指南

一、对话效果演示

ESP-SPARKBOT对接豆包大模型-演示1

ESP-SPARKBOT对接豆包大模型-演示2

ESP-SPARKBOT对接豆包大模型-演示3

二、固件介绍与源码下载

本例程主要功能是连接豆包 volcano rtc 云端并进行语音交互,可以适用于智能音箱产品、智能玩具、语音控制设备等,适配 esp-sparkbot 开发板。

git clone https://gitee.com/esp-friends/esp_sparkbot.git

三、安装 ESP-ADF 框架

Step1、克隆仓库源码

# git clone --recursive https://github.com/espressif/esp-adf.git
git clone --recursive https://gitee.com/EspressifSystems/esp-adf.git

执行“recursive”更新失败,是因为 github 网络问题,此时需要使用工具仓库 esp-gitee-tools,可以参照 Linux下ESP32开发环境搭建:新手也能轻松上手_esp32 linux环境搭建-CSDN博客

Step2、配置 ESP-IDF 与 ESP-ADF

cd esp-adf
./install.sh
. ./export.sh

如果在安装时,又遇到网络问题,可以把下载链接直接复制到其他软件进行下载,然后拷贝到 /home/sam/.espressif/dist/ 这个路径下,重新执行安装脚本,

这样子太麻烦了,实际上官方文档中有解决方案,

export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"

可以看到使用了镜像地址之后下载速度一下子就提升了,

接着配置环境变量,

sudo vim ~/.bashrc 
# export ADF_PATH=/data/home/sam/MyWorkSpace/esp-adf
# export IDF_PATH=/data/home/sam/MyWorkSpace/esp-adf/esp-idf
source ~/.bashrc 

. ./export.sh

至此,环境搭建完毕。注意,这仅对当前命令窗口有效,如果新开了窗口,则需要重新执行脚本,因此我们可以为脚本导入一个别名,在 .bashrc 文件底部添加:

alias get_adf='. /data/home/sam/MyWorkSpace/esp-adf/export.sh'

四、火山引擎服务开通

1、账号注册

登录网址:账号登录-火山引擎

首次注册登录需要实名认证,认证完之后直接搜索“实时音视频”,

2、开通“实时音视频”服务

点击“视频服务”的“实时音视频”就会跳转页面,

点击“领取礼包并开通”,

提交成功之后,点击“去控制台”,

可以看到已经创建了默认应用,直接点击“临时token”,

RoomId 与 UserId 随便填就可以,然后生成临时 Token,

把参数全部配置到 main/config.h 文件,还要配置 WIFI 账号密码,不然没法联网。

3、设置权限

配置“访问控制”:账号登录-火山引擎

4、智能体 API

智能体配置:API Explorer

使用智能体进行对话前,你需要开通 ASR、 TTS 和大模型服务并配置相关策略,详情请参看开通服务

5、开通 ASR/TTS 服务

ASR/TTS:账号登录-火山引擎

进入页面后,点击“创建应用”,主要选中“大模型语音合成”、“语言合成” 、“流式语音识别”,

如果需要配置音色,则需要开通服务,这里先用试用版,

AppId 与 Token 可以在底部查到:

6、开通 LLM 服务

大语言模型配置:账号登录-火山引擎

点击“系统管理”,注意右上角开启“免费用量 自动暂停”,然后选中其中一个模型进行开通。

可以看到已经开通成功,接着配置“在线推理”:

7、自定义推理接入点

选中刚刚开通的大模型,点击“确认接入”,

这里 ep 开头的就是需要获取的 EndPointId 参数值,

以上我们已经获取了启动智能体所需的所有参数,先用 Web 端测试参数是否可以正常使用,

8、无代码测试

弹窗中,依次检查 Step1、Step2,然后“加入 RTC 房间”,

生成临时 token 并且使用临时 token 进入房间,

接着配置智能体,

输入刚刚获取的 ep 开头的 EndPointId ,

ASR 与 TTS 配置需要在语音技术页面找到 AppId 与 Cluster,点击下方蓝色提示词就可以跳转到对应的页面了,

最后点击“开始调用”,

此时会听到豆包AI在说话就表示正常调用。

9、启动智能体

接下来整合参数配置、发起请求启动智能体:

"ASRConfig": {
            "Provider": "volcano",
            "ProviderParams": {
                "Mode": "smallmodel",
                "AppId": "9*******"
            }
        },

语音识别配置,这里使用小模型,只需改 AppId。

"TTSConfig": {
            "Provider": "volcano",
            "ProviderParams": {
                "app": {
                    "appid": "9*******",
                    "cluster":"volcano_tts"
                }
            }
        },

语音合成配置,这里只需改 AppId。

"LLMConfig": {
            "Mode": "ArkV3",
            "EndPointId": "ep*******",
            "MaxTokens": 1024,
            "Temperature": 0.1,
            "TopP": 0.3,
            "SystemMessages": [
                "你是派蒙,旅行者的向导与引路人。你是一个话痨,并且贪吃好玩。"
            ],
            "WelcomeSpeech": "你好,我是派蒙"
        }

大语音模型配置,这里只需改 EndPointId,角色预设与欢迎语根据自己需求修改。

配置好参数后,点击“发起调试”,可以看到已经调用成功。如果需要关闭智能体,则点第二个菜单,同样填入页面需要的参数即可。

五、固件烧录

按照 README 中的指引,以上我们已经搭建好了 ESP-ADF 的开发环境,并且配置了火山引擎的鉴权参数以及 WIFI 信息,现在可以进行编译和下载。

1、修改 spi mode(重点)

修改 components/esp_sparkbot_bsp/esp_sparkbot_bsp.c 中第 121 行 spi_mode 为 0,否则屏幕只亮背光,不显示图片。

2、设置目标芯片

idf.py set-target esp32s3

3、配置 menuconfig(重点)

idf.py menuconfig

设置 flash size 为 16MB,

按下 “?/” 键 进入搜索模式,输入 lv_color_16_swap ,把该值置为 1,

audio board 选中 esp-sparkbot ,

按 s 进行保存,然后按 esc 退出。

注意:如果不配置 lv_color_16_swap 为 1,则会导致屏幕颜色反转,

4、执行编译

idf.py build

5、一键烧录

idf.py -p /dev/ttyACM0 flash monitor

烧录成功后加入房间,就可以跟智能体进行对话啦!

六、自定义图片显示

1、图片渲染的代码位置

只需要自定义图片,替代原代码行即可,

lv_img_set_src(ui_emoji, &my_img);

2、实战过程步骤

首先在网上找一张图片,下载,

接着再随便找个网站修改下像素,这里适配屏幕是 240 * 240,

然后到 lvgl 的官方转换网站,把图片转换为 C 数组,

导出来的文件是一个 C 语言文件,把它放到与 main.c 同级目录下,

并且修改 main/CMakeLists.txt ,

修改 main.c 文件,添加刚引入的图片文件,

extern const lv_img_dsc_t my_img;

最后重新编译、下载就可以了。如果有实力的话,可以开通火山引擎的音色服务,为角色配置相符的音色,并将大模型预设好角色性格,对话体验会更佳。

彩蛋:豆包大模型与小智AI对话

ESP-SPARKBOT对接豆包大模型-与小智对话

参考文档

从零到一:ESP32与豆包大模型的RTC连续对话实现指南-CSDN博客

Image Converter — LVGL

lvgl显示的颜色不对_lvgl 颜色不对-CSDN博客

### Spring Boot 集成豆包大模型 在现代应用程序开发中,将机器学习模型集成到Web应用是个常见的需求。对于Spring Boot项目来说,可以采用多种方式来实现这目标。下面介绍种通过REST API调用来完成Spring Boot豆包大模型集成的方法。 #### 创建控制器类处理请求 为了使前端能够方便地向后端发送数据并接收预测结果,在Spring Boot工程里定义个新的Controller用于接受HTTP POST请求: ```java @RestController @RequestMapping("/api/v1/doubao") public class DoubaoModelController { @PostMapping("/predict") public ResponseEntity<PredictionResponse> predict(@RequestBody PredictionRequest request){ // 调用服务层方法获取预测结果 PredictionService predictionService = new PredictionServiceImpl(); PredictionResponse response = predictionService.predict(request); return ResponseEntity.ok(response); } } ``` 这里假设`PredictionRequest`和`PredictionResponse`分别是输入参数以及返回的结果对象[^1]。 #### 实现业务逻辑的服务接口 接着创建个名为`PredictionService`的接口及其具体实现类`PredictionServiceImpl`,负责实际调用外部API或者加载本地部署好的豆包大模型来进行推理计算: ```java @Service public interface PredictionService { PredictionResponse predict(PredictionRequest request); } @Component class PredictionServiceImpl implements PredictionService{ private static final String DOUBAO_API_URL = "https://example.com/api/predict"; @Override public PredictionResponse predict(PredictionRequest request) { RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<String> entity = new HttpEntity<>(request.toString(), headers); ResponseEntity<PredictionResponse> response = restTemplate.exchange(DOUBAO_API_URL, HttpMethod.POST, entity, PredictionResponse.class); return response.getBody(); } } ``` 上述代码片段展示了如何利用`RestTemplate`工具发起对外部API服务器(`DOUBAO_API_URL`)的POST请求,并传入JSON格式的数据作为模型输入;最后解析响应体中的内容填充至自定义的对象结构内以便于后续使用。 请注意,这只是个简单的例子,实际情况可能涉及到更复杂的配置项设置、错误处理机制设计等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金汐脉动 | PulseTide

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值