0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在端侧SOC 上打通豆包大模型?

jf_70851521 ? 来源:jf_70851521 ? 作者:jf_70851521 ? 2025-08-20 17:33 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

#前言

该文档介绍SigmastarPcupid系列(Comake_pi_D1SSU9353XSSD235XSSU9222XSSU9383CM)如何对接火山引擎RTC服务实现板端音视频AI对话和视觉推理,这里主要介绍测试环境的搭建,DemoCode跟着SDK释放,如客户有需要可以联系对应支持的FAE兄弟获取。


ComakePiD1的客户可以通过https://www.comake.online/index.php?p=down_list&lanmu=4&c_id=15&id=59"GUI开发Demo"栏位下载flythings_gui_demo,火山引擎交互对应的代码路径为“zkgui_demo/zk_mini/jni/logic/volc”。


#准备条件


##硬件环境搭建

完整的ComakePID1开发板(可以在社区商店购买https://www.comake.online/index.php?p=shop),包含摄像头,模拟麦克风,喇叭,并准备能访问外网的网络环境。


##软件环境搭建

ComakePID132Bit软件默认有集成火山引擎Demo,但是没有提供对应的火山账号,需要开发者参考如下步骤去开通自己的账号,火山有提供一定额度的免费体验token。否则运行火山引擎会提示不存在如下配置文件/customer/zkgui_mini/resource/sample/config.json[空的config.json下载路径](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/file/1755226688840272/config.json)。


###火山引擎云服务开通


火山引擎的实时音视频RTC功能,需要依赖语音识别(ASR)、语音合成(TTS)、大语言模型(LLM),我们先创建自己的火山引擎账号,并开通对应的服务。


###开通RTC服务并创建应用ID

参考https://www.volcengine.com/docs/6348/69865开通实时音视频服务(RTC),并创建RTC应用,**获取App_ID、APP_KEY并保留**,后面需要将此信息填入通讯配置config.json对应的栏位,这两个分别是应用标识符和对应的密钥,需要妥善保管以防泄漏。



```

"RTC_APP_ID":"XXXXXXXXXXXX",

"RTC_APP_KEY":"XXXXXXXXXX",

```



###开通语音识别(ASR)、语音合成(TTS)、大语言模型(LLM)服务

参考https://www.volcengine.com/docs/6348/1315561开通ASR、LLM、TTS服务。

需要注意的最后需要为账号配置策略,不然会出现板端收不到智能体回复数据的情况。


####**开通语音识别、语音合成服务**

根据场景需求,开通ASR和TTS服务(ASR和TTS服务存在一些可选配置,不同的配置价格不同)https://console.volcengine.com/speech/app。

**记录TTS_AST_APP_ID和TTS_TOKEN_ID填入config.json**



```

"ASR_APP_ID":"67790xxxxx",


"TTS_APP_ID":"67790xxxxx",


"TTS_TOKEN_ID":"OKly6Lr3XFFIw3xxxxx",

```

另外需要注意代码里TTS的配置和应用配置的权限要对上,例如如果应用没有开通音频生成大模型,代码就不能配置"Provider"为"volcano_bidirection",只能配置为volcano,也不能传递tts_token,不然音频传生成功能会异常,进入房间听不到欢迎语,demo代码默认使用的音频生成和语音识别,没有使用大模型。


下图是具体的示意图:

![大模型.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175548383528347111474.png)



####**开通大语言模型服务**

根据场景需要,开通需要的LLM服务(不同的LLM大模型价格不同,我们演示使用的是Doubao-1.5-vision-pro-32k)通过https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint创建应用,并记录应用ID号,**填入config.json"LLM_END_POINT_ID":"ep-xxxxxx",**

这步如果没有正常开通,demo也会遇到没有欢迎语的提示


下图是具体开通步骤的示意图:

![llm服务开通.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175013199879164911474.jpg)


####**配置不同权限账号调用智能体**

开通完服务后,还需要为角色配置策略,打开https://console.volcengine.com/rtc/aigc/iam,前往**跨服务授权**,点击一键开通跨服务授权配置角色。

![授权服务开通.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175548288134770111474.png)


配置成功后你可以在https://console.volcengine.com/iam/identitymanage/role角色管理中找到该角色,该角色拥有SAFullAccess、MaaSExperienceAccess和RTCFullAccess权限。下图为配置后的示意图:

![image.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175548523878923111474.png)


最后在https://console.volcengine.com/iam/keymanage界面获取ACCESS_KEY


```

"ACCESS_KEY":"XXXX",

"SECRET_ACCESS_KEY":"XXX==",填入config.json

```



![image.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175013287100600311474.png)


####**如果是使用子账号,在板端调用权限有所同,注意参考https://www.volcengine.com/docs/6348/1315561设定**

![image.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175548507506980611474.png)


###**依赖库移植**

该AIdemo开启智能体使用的是API方式,因而需要通过网络发送httppost数据包,需要为板端移植相关的库,访问网络时使用到的库有:openssl、cares、curl。此外,由于火山引擎RTC服务的音频不支持pcm格式,目前仅支持opus,g722,aac,g711a格式,根据实际需求移植相关的音频编解码库,本AIdemo使用的是opus。

注意需要使用对应的Toolchain编译对应的Lib库,libVolcEngineRTCLite.so需要联系火山引擎软件人员并提供Toolchain,其他依赖库可以使用BuildRoot环境进行更新。目前Demo只支持glibc12.4.0arm32Bit的开发环境。


###配置文件准备

板端运行该AIdemo需要输入一个配置文件config.json,前面篇章有介绍到的字段均需要写入此配置文件中。


配置好后推送到主板/customer/zkgui_mini/resource/sample/config.json即可使用火山引擎Demo。


该配置文件包含了火山引擎服务的Key和Id信息,文件中的各字段所表示的意义可以参考开启智能体API(https://www.volcengine.com/docs/6348/1558163)时所使用的参数。


```

config.json

{

"RTC_APP_ID":"xxx",

"RTC_APP_KEY":"xxx",

"ACCESS_KEY":"xxx",

"SECRET_ACCESS_KEY":"xxx",

"ROOM_ID":"xxx",

"USER_ID":"xxx",

"AGENT_USER_ID":"xxx",

"TASK_ID":"xxx",

"TOKEN_VALUE":"xxx",

"ASR_APP_ID":"xxx",

"TTS_APP_ID":"xxx",

"TTS_TOKEN_ID":"xxx",

"LLM_END_POINT_ID":"xxx",

"SERVER_MESSAGE_URL":"xxx",

"SERVER_MESSAGE_SIGNATURE":"xxx"

}

```



其中如下4项"ROOM_ID""USER_ID":"AGENT_USER_ID""TASK_ID":"task1",为房间信息用户填写,而"TOKEN_VALUE"目前是根据上述信息自动生产。


如下两项可以保持默认值不变


"SERVER_MESSAGE_URL":"https://pm.comake.online/doubao_debug.log?type=subv",


"SERVER_MESSAGE_SIGNATURE":"892495980b78182f2fbab8e317e607a1bd6f1111c0b43a6ebb37337a6971c2bb"


#demo介绍


##demo流程说明

该AIdemo实现了AI对话以及视频图像推理的功能。用户通过关键词唤醒设备后,将语音输入(opus)和图像输入(h264)通过火山引擎的RTCSDK传输到火山引擎的云服务,通过火山引擎的RTCSDK回调接收智能体的语音回复,解码后进行播放。从而实现AI式对话和视觉推理的功能。如下所示为该AIdemo的框图:

![demo框图.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175013356567623011474.jpg)


**VIF**接收**Sensor**的数据,送到**ISP****SCL**进行图像处理和图像的缩小,将处理后的图像送到**SWVENC**进行软件编码得到h264码流数据,当Audio往火山传输数据时,同时发生VideoH264I帧数据。


**AI(AudioInput)**接收**Mic**的输出,经过**AEC**回声消除处理、**APC**降噪处理、**VAD**语音检测、**KWS**关键词检测,将语音输入编码成opus格式。


通过火山引擎RTC的接口,将编码后的语音和视频数据发送到火山引擎云端进行分析,等待火山引擎云端回复分析结果,将回复的语音数据进行opus解码后通过**AO**输出到**Speaker**


##demo使用说明


###demo使用流程

###网络环境

```

该demo需要访问外部网络,连接外网

Demo软件可以通过如下命令设定Mac地址通过DHCP获取IP地址:

ifconfigeth0hwether00:71:30:1B:xx:xx

ifconfigeth0up

udhcpc-ieth0-s/etc/init.d/udhcpc.script

获取IP后确认ping豆包官网access.rtc.volcvideo.com是否成功

```



###demo运行

ComakePiD132Bit软件默认有集成此Demo,UI点击"火山引擎"即可打开。


###查看加入房间打印以及欢迎语

demo成功跑起来后会收到RTC加入房间的回调打印以及听到智能体的欢迎语(你好,我是小星,我是你的好朋友,可以陪你谈天说地!),如下所示:

![加入房间打印.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014166773131311474.jpg)


上图中红框部分就是RTC加入房间的回调打印以及智能体的欢迎语回复信息打印,看到这些信息基本可以说明智能体已经正常开始工作了。


###查看关键词打印

当听到智能体的欢迎语后就可以开始对话了,对话前,请先说关键词:"你好,小星"。当板端检测到关键词后,会有这个打印后,此时可以开始询问问题:

![image.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014177427726911474.png)

超过60s没有检测到实时语音就需要再次通过关键词触发。



###查看发送音频/视频数据打印

demo发送一帧音频或一帧h264时,会出现如下类似打印:


![image.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014161922303411474.png)


上图中sendopusencode是发送的一帧音频数据的打印;sendvideoframe是发送的一帧h264的打印。


####查看智能体回复打印

不管发送视频还是音频数据,只要智能体有回复数据时,就可以看到如下图所示打印:

![智能体回复打印.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014194552178911474.jpg)


####实例演示

![实例演示.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014196977447911474.jpg)


##火山引擎相关开发说明


###RTCSDK接口调用顺序

首先是进行RTC的初始化,user和agent加入房间。当APP收到回调函数后,就可以通过byte_rtc_send_audio_data以及byte_rtc_send_video_data接口发送音频和视频数据给大模型。经过大模型分析后,会通过回调函数将回复数据给到APP。当用户离开房间后,就可以关闭房间,但需要等待RTC的回调函数通知才可以销毁房间。


需要注意的是,demo中使用的是opus编码格式,火山引擎还支持G722、AAC、G711格式,APP发送什么格式的音频数据,火山引擎就会回复什么格式的音频数据。应用场景需要什么编码格式可自行移植相关编解码库进行对接,并通过byte_rtc_set_audio_codec接口告知RTC传输的是什么编码格式,该接口需要在byte_rtc_init之后,byte_rtc_join_room之前调用。

![RTC交互时序.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014198809268011474.jpg)


###Toke鉴权

用户在加入房间时(调用byte_rtc_join_room接口),需要传入Token参数。在volc_agent.cpp文件中,实现了根据AppID、AppKey、RoomID、UserID、时间戳等参数实时生成Token的程序,而该部分对应的具体生成过程可以参考火山引擎官方文档:https://www.volcengine.com/docs/6348/70121。


###API签名验证

在调用OpenAPI时,需要对API进行签名以便火山引擎能够进行身份验证。在volc_agent.cpp文件中,实现了通过curl库调用StartVoiceChat等API的程序,而该部分对应的具体签名过程可以参考火山引擎官方文档:https://www.volcengine.com/docs/6348/69859。


#问题记录


##出现signature请求过期的打印

调用开启智能体API时需要需要按照一定格式发送httppost请求,如果发送请求时出现以下打印:


![signature请求过期.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014239674583711474.jpg)


出现上图打印说明httppost的签名是过期的,这个是因为签名鉴权时需要使用当前时间,板端开机后时间从1970年开始计算,因此,构造的请求就是过期的。

需要确保Demo运行时ntp相关调用没有异常。


##加入房间没有成功

在智能体加入房间成功后,会有回调打印显示,但是如果串口一直在刷如下打印:

![加入房间没有成功.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014255006587111474.jpg)


当遇到这种情况时,说明智能体并没有成功加入房间,大概率是地址解析失败,需要检查网络看看,可以尝试pingaccess.rtc.volcvideo.com这个域名看看需要多久才可以解析出,如果时间超过了5s(RTC那边握手最多5s),说明网络有问题,建议更换一个网络。


##出现globalerror打印

在智能体加入房间时,如果长时间都没有加入成功(至少5s),并且会有如下打印:

![globalerror.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014257123060311474.jpg)


当遇到这种情况时,根据豆包的回复是由于网络的原因,这种情况豆包那边会尝试重新连接,一般最后都会成功,因此,这个错误可以暂时不用管。


##智能体没有回复数据

当出现智能体没有欢迎语播报,或者智能体没有回复数据时,可以按照以下步骤进行确认。


###确认ASR、TTS服务是否开通

demo依赖火山引擎云端的语音识别(ASR)和语音合成(TTS)服务的,请务必开通这两个服务,如下所示:

![大模型.png](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175548381390999611474.png)


###确认是否为角色配置策略

智能体要想回复,是需要有权限的,请务必在页面https://console.volcengine.com/rtc/aigc/iam点击一键开通跨服务授权配置角色进行配置策略,授权后https://console.volcengine.com/iam/identitymanage/role可以看到如下角色权限:


![角色管理.PNG](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175548329044692411474.PNG)


###确认开启智能体时的json参数配置

除了一些必要的服务以及权限外,在调用开启智能体API时还会需要配置智能体的一些属性,SystemMessages系统提示词,用于输入控制大模型行为方式的指令,定义了模型的角色、行为准则,特定的输出格式等,这个配置很重要。


目前,demo中为智能体配置的属性如下所示:


![json配置.jpg](https://dev-comake-1251124109.cos.ap-guangzhou.myqcloud.com/img/175014261136009611474.jpg)


json中具体每个字段的含义,可以参考该链接中的说明:https://www.volcengine.com/docs/6348/1404673。一般情况下,智能体没有回复,基本都是这个json配置有问题。


##智能体回复不准确

智能体回复不准确,需要修改智能体的初始化人设.方法是修改llm_configSystemMessages字段代码位置:

zk_minijnilogicvolcvolc_agent.cpp480行,目前人设是一个简单的陪伴机器人


```

cJSON_AddItemToArray(system_messages,cJSON_CreateString("你是小星,你是用户的好朋友,你是一个具备情感陪伴能力的智能机器人,核心目标是通过表情识别与自然语言交互,为用户提供有温度的情感支持,回复内容不能包含图片相关字眼。

请遵循以下原则:角色设定:以朋友身份互动,语气亲切自然,避免机械感(禁用技术术语,多用口语化表达)。

情感优先:任何回复需优先匹配用户当前表情识别的情绪(如高兴、悲伤、疲惫),再结合对话内容。

情绪识别标准:微笑、大笑表示高兴,皱眉、流泪表示悲伤,瞪眼、咬牙表示愤怒,瞪眼、张嘴表示惊讶。"));

```



##其它问题

其他问题可以参考火山引擎RTC服务官网中的文档说明https://www.volcengine.com/docs/6348。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • soc
    soc
    +关注

    关注

    38

    文章

    4434

    浏览量

    224097
  • 大模型
    +关注

    关注

    2

    文章

    3272

    浏览量

    4343
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华为CANN与智谱GLM模型完成适配

    已于7月28日正式开源其新一代基座模型GLM-4.5,其GLM模型已完成与CANN的适配。这标志着国产大模型与计算架构在
    的头像 发表于 08-11 11:00 ?1740次阅读

    终于有人把模型说清楚了

    最近总听到"模型"这个词,感觉很高大,但到底是什么意思?和我们平时用的ChatGPT、DeepSeek各种大模型有什么区别?今天就来
    的头像 发表于 07-24 12:03 ?754次阅读
    终于有人把<b class='flag-5'>端</b><b class='flag-5'>侧</b>大<b class='flag-5'>模型</b>说清楚了

    多模态感知+豆包模型!家居智能升级

    的关键力量。星宸科技与豆包模型的合作,将这一技术趋势落实到实际应用场景中,在智能家居、可穿戴设备以及连锁店等领域引发了深刻变革。 ? 智能家居升级 ? 陈立敬指出:“智能家居2.0需要大模型大脑”。在智能家居领域,多模态感知与
    的头像 发表于 06-21 00:06 ?6166次阅读
    多模态感知+<b class='flag-5'>豆包</b>大<b class='flag-5'>模型</b>!家居<b class='flag-5'>端</b><b class='flag-5'>侧</b>智能升级

    在V2板子上部署豆包模型调试指南

    在V2板子上部署豆包模型调试指南 准备阶段 首先,可以观看大模型实战(SC171开发套件V3)并下载工程源码,之后我们需要在板子安装这个代码所要用到的一些库。 pip3 instal
    发表于 05-25 10:17

    首创开源架构,天玑AI开发套件让AI模型接入得心应手

    AI应用开发往往需要调用各种各样的大模型能力,需要更丰富、类型更多的模型适配。为此,Gen-AI Model Hub全面扩容,模型
    发表于 04-13 19:52

    AI大模型侧部署正当时:移远端AI大模型解决方案,激活场景智能新范式

    在AI技术飞速发展的当下,AI大模型的应用正从云端向加速渗透。作为全球领先的物联网整体解决方案供应商,移远通信凭借深厚的技术积累与前瞻性的战略布局,在AI大模型
    的头像 发表于 03-26 19:05 ?641次阅读
    AI大<b class='flag-5'>模型</b><b class='flag-5'>端</b>侧部署正当时:移远端<b class='flag-5'>侧</b>AI大<b class='flag-5'>模型</b>解决方案,激活场景智能新范式

    全志视觉芯片V821接入DeepSeek和豆包视觉大模型

    上周,全志生态的小伙伴们成功在全志A733和T527的SoC平台上实现了DeepSeek-R1-Distill-Qwen-1.5B模型的部署,充分验证了高算力平台在侧部署AI推理上的潜力。今天我们
    的头像 发表于 02-21 09:27 ?3176次阅读

    字节豆包模型团队提出稀疏模型架构

    字节跳动豆包模型Foundation团队近期研发出UltraMem,一种创新的稀疏模型架构,旨在解决推理过程中的访存问题,同时确保模型效果不受影响。
    的头像 发表于 02-13 15:25 ?788次阅读

    esp32如何接入豆包

    要在 ESP32 上接入豆包工具,本质是让 ESP32 设备与豆包的 API 进行通信,以获取相关服务
    的头像 发表于 02-05 13:40 ?2299次阅读
    esp32如何接入<b class='flag-5'>豆包</b>

    字节跳动豆包模型1.5 Pro发布

    近日,字节跳动旗下的豆包模型迎来了全新的升级——豆包模型1.5 Pro正式发布。这款全新模型在知识、代码、推理、中文等多个测评基准上表现
    的头像 发表于 01-23 15:24 ?846次阅读

    豆包模型降价后毛利率仍达50%

    火山引擎平台上售卖的API版本Doubao-1.5-pro,其毛利率高达50%,这一数据充分证明了豆包模型在成本控制和盈利能力的卓越表现。 回顾去年5月,字节跳动正式对外发布了豆包
    的头像 发表于 01-23 10:54 ?785次阅读

    字节跳动发布豆包模型1.5 Pro

    字节跳动正式发布了豆包模型1.5 Pro。 全新的Doubao -1.5 - pro模型综合能力显著增强,在知识、代码、推理、中文等多个测评基准,综合得分优于GPT - 4o、Cl
    的头像 发表于 01-23 10:24 ?847次阅读

    讯飞星火模型发布

    参数量小、内存占比小的模型,正成为“兵家必争之地”。
    的头像 发表于 12-04 16:07 ?1518次阅读

    智谱推出四个全新模型 携英特尔按下AI普及加速键

    随着AI的发展,AI模型越来越受到广大客户及厂商的关注,业界领先的大模型公司智谱于近日推出了四个全新的
    的头像 发表于 12-02 17:13 ?702次阅读
    智谱推出四个全新<b class='flag-5'>端</b><b class='flag-5'>侧</b><b class='flag-5'>模型</b> 携英特尔按下AI普及加速键

    火山引擎推出豆包·视频生成模型

    在近期举办的2024火山引擎AI创新巡展,火山引擎总裁谭待隆重推出了豆包·视频生成模型,这一举措标志着火山引擎在视频内容生成领域迈出了重要一步。豆包
    的头像 发表于 09-25 14:11 ?740次阅读