本文旨在帮助开发者快速掌握硬件对话智能体 SDK 的集成流程,包括方案选择、SDK 初始化及核心交互流程的实现,助您高效构建具备多模态交互能力的智能硬件产品。
硬件对话智能体为智能硬件提供高质量和低负载两种官方 SDK 集成方案:
说明
视频通信场景建议选择高质量方案。
两种方案的具体对比如下表所示:
对比项 | 高质量方案 | 低负载方案 |
|---|---|---|
传输层协议 | 基于 UDP(RTC) 协议 | 基于 TCP(WebSocket) 协议 |
延时分析 | ||
建连延时 | 相对较高 | 更低(略优) |
传输延时 | 更低(更优) | 相对较高 |
整体延时 | 无明显差异 | |
稳定性 | ||
弱网环境 | 抗弱网能力强(带宽估计、纠错重传等),显著更优 | 稳定性较差 |
优质网络 | 高可靠性,无明显差异 | 高可靠性,无明显差异 |
实时互动场景 | 显著更优,适合音视频等多媒体场景 | 表现较差,建议仅用于音频场景 |
资源消耗 | 相对较高(RAM < 300KB) | 更低(更优),适合低配置硬件(RAM < 100KB) |
接入成本 | 无明显差异 | |
在开始集成前,请根据您的硬件平台获取相应的开发资源:
我们提供了适配乐鑫等主流芯片的 SDK 及示例工程。请参考获取 Demo 和 SDK 下载所需资源。
下文将为您介绍在自有项目中集成官方 SDK 的通用流程和主要 API。完整的客户端 API,请参见概述。
集成主要涉及设备端应用与硬件对话智能体 SDK 之间的交互。下图展示了从初始化 SDK 到通话结束的完整调用流程:
config_json),包括鉴权信息(ProductKey, Secret 等)和功能配置。
volc_event_handler_t 结构体,注册关键回调函数,用于接收 SDK 的状态更新和数据流。volc_create 创建引擎实例。SDK 内部会初始化资源并返回结果。volc_start 启动智能体。SDK 会自动进行鉴权并建立与云端的长连接。on_volc_event(CONNECTED) 事件和 on_volc_conversation_status(LISTENING) 状态,表示智能体已就绪并进入聆听模式。volc_send_audio_data 发送给 SDK。volc_send_video_data 发送视频帧。on_volc_audio_data 下发音频流,应用层需进行播放。on_volc_video_data 下发视频流,应用层需进行渲染。on_volc_message_data 下发字幕或指令,应用层需进行展示或处理。volc_stop 停止当前会话。SDK 会触发 on_volc_conversation_status(IDLE) 恢复空闲状态,并触发 on_volc_event(DISCONNECTED) 断开连接。volc_destroy 销毁实例并释放所有资源。以集成高质量方案为例,快速集成的参考代码如下:
static void __on_volc_audio_data(volc_engine_t handle, const void *data_ptr, size_t data_len, volc_audio_frame_info_t *info_ptr, void *user_data) { play_audio_data(data_ptr, data_len); } char config_buf[1024]; //配置文件,详情参见 https://www.volcengine.com/docs/6348/1806633#config volc_event_handler_t volc_event_handler = (volc_event_handler_t){ .on_volc_event = __on_volc_event, .on_volc_conversation_status = __on_volc_conversation_status, .on_volc_audio_data = __on_volc_audio_data, .on_volc_video_data = __on_volc_video_data, .on_volc_message_data = __on_volc_message_data, }; volc_engine_t engine; // 设备注册 volc_device_register // 返回的是 rtc的appid 和 device_secret int ret = volc_create(&engine, config_buf, &volc_event_handler, &conv_service); volc_opt_t opt = { .mode = VOLC_MODE_RTC, .bot_id = CONFIG_VOLC_BOT_ID, }; // volc_get_rtc_config 获取rtc配置 // 加入房间 byte_rtc_join_room ret = volc_start(engine, &opt); while(1){ // 采集音频并发送 int len = capture_audio_data(data); volc_audio_frame_info_t info = {0}; info.commit = false; info.data_type = type; volc_send_audio_data(engine, data, len, &info); }