针对陪伴机器人、智能家居、车载助手等智能硬件对高质量、低延迟 AI 交互的迫切需求,火山引擎 RTC 联合主流芯片厂商,共同打造了软硬一体的 AI 实时互动方案。
本方案将芯片端的音频前处理与云端的 AIGC 服务(LLM、ASR、TTS)深度整合,提供从音频采集、实时传输、到 AI 处理与生成响应的全链路能力。开发者仅需简单集成,即可为硬件设备赋予一个能听、会说、懂思考的 “AI 大脑”。
本方案通过端云协同工作,实现完整的实时 AI 对话闭环。

| 功能 | 场景应用 |
|---|---|
| 实时音频互动 | 流式传输技术可以确保语音和视频数据的连续性和稳定性,减少延迟和抖动,提供接近于真人的高质量互动。 |
| 语音识别(ASR) | 提供火山引擎大模型和小模型识别能力,拥有超高的准确率,可在复杂场景下通话,提供更类真人的交互体验。 |
大语言模型(LLM) | 提供火山引擎和其他第三方 LLM 厂商接入,能够更好地理解对话的上下文,从而实现连贯的对话交流。 |
| 语音合成(TTS) | 提供火山引擎和其他第三方 TTS 厂商接入,生成符合要求的音色进行互动。根据上下文,智能预测文本的情绪、语调等信息。并生成超自然、高保真、个性化的语音,以满足不同用户的个性化需求。 |
| 智能打断 | 用户无需通过按键或其他输入方式,即可享受自然流畅的双向通话体验。毫秒级人声检测和打断响应,支持随时精准打断,让交流更加灵活。 |
实时响应 | 在保持极低功耗的同时,实现端到端响应延时可低至1秒,为用户提供了实时的交互体验,让沟通更加丝滑。 |
| Function Calling | 允许大模型识别用户对话中的特定需求,并在处理内容的过程中调用外部函数或 API,来执行它自身无法独立完成的任务,如处理实时数据检索、文件处理、数据库查询等。 |
| 弱网卡顿优化 | 即使在网络条件不佳,丢包率高达 80% 的情况下,能够保证通话的稳定性,确保语义信息的完整传输,不丢失任何重要内容。 |
| 多平台支持 | 嵌入式 Linux、RTOS、Android 等常见硬件全平台支持。 |
我们提供了完整的 Demo 源码及演示视频,帮助你快速将 AI 交互在硬件上部署运行。
获取 Demo 源码及接入指引:嵌入式硬件 AIGC Demo。
观看演示视频(以 乐鑫 ESP32-S3-Korvo-2 为例):
在运行 Demo 前,可参考无代码跑通 Demo 演示视频,提前准备好所有必需的配置参数。
下文将为你介绍在自有项目中集成本方案的通用流程和核心 API。
根据计费方式,选择对应操作:
前往 RTC 控制台启用硬件场景配置。
已生成 RTC SDK 的进房鉴权 Token。具体操作,参看使用 Token 完成鉴权。
已联系技术支持,获取嵌入式 Linux 以及 RTOS 相关系统的设备端 SDK。
集成涉及客户端、业务服务端以及 RTC SDK 之间的协作。下图展示了从通话开始到结束的完整流程:
当硬件唤醒后,需要在你的业务服务端进行以下事项:
注意
RoomId: 若音视频使用 G711A、G722、AACLC 或 ByteVC1 格式,RoomId 的值需为编码格式 + 房间 ID,如房间 ID 为 ChatRoom001,那么 RoomId 应填写为 G711AChatRoom001、AACLCChatRoom001 或 ByteVC1ChatRoom001。... int start_ret = start_voice_bot(room_info); ...
使用设备适配的原生库采集音频信号,并将其编码为指定格式。支持的编码格式如下:
- 若直接输入 PCM 数据,SDK 内部将自动编码为 G711A 传输。
- 非默认编码格式,需前往 RTC 控制台_功能配置手动开启。
音频编码格式
| 编码格式 | 支持采样率 | 声道 | 位深 |
|---|---|---|---|
| Opus(默认格式) | 8kHz - 48kHz | 单声道 | 16bit |
| G711A | 8kHz | 单声道 | 16bit |
| G722 | 16kHz | 单声道 | 16bit |
| AACLC | 44.1kHz、48kHz | 单声道 | 16bit |
视频编码格式:支持 H264(默认格式)或 ByteVC1。
调用设备端 SDK 的接口,创建并初始化 RTC 引擎,然后加入房间。核心流程如下:
byte_rtc_create:创建引擎。byte_rtc_init():初始化引擎实例。byte_rtc_set_audio_codec / byte_rtc_set_video_codec:设置音频/视频编码格式。byte_rtc_join_room:加入房间。注意:硬件客户端
RoomId和UserId必须与步骤1. 启动智能体时传入的值完全一致才能互通。
byte_rtc_send_audio_data / byte_rtc_send_video_data 将采集到的音频/视频信息传给智能体进行对话。默认 20ms 发送一次编码后的音频数据,硬件设备自动订阅对话消息。byte_rtc_rts_send_message 发送实时信令。on_message_received 回调接收实时字幕。通话结束后,需要正确释放资源:
byte_rtc_leave_room 离开房间。byte_rtc_fini 反初始化引擎。byte_rtc_destroy 销毁引擎实例。Q1:智能体未进房或未正常工作?
请参看智能体未进房或未正常工作?进行排查。若问题仍未解决,请携带请求 RequestId 联系技术支持。
Q2:是否支持在硬件端传入图片,进行图像识别?
目前不支持。
Q3:是否支持一个智能体同时与多个嵌入式硬件互动?
不支持。当前仅支持一个智能体同时与一个嵌入式硬件用户互动。
Q4:启动报错 10004?
本地请求时间问题。请更换设备环境或者更换设备重试。
Q5:如何实现"打开灯光"、"播放音乐"等自定义功能?
可使用 Function Calling 功能实现,调用你编写的自定义行为接口(如打开灯光),详情参看Function Calling(流式返回结果)。
Q6:硬件加入房间后,日志有字幕,但是听不到声音?
可能是未开启硬件场景配置。请前往 RTC 控制台_功能配置,选择应用并开启配置。
注意
开启配置后,若音视频使用 G711A、G722、AACLC 或 ByteVC1 格式,RoomId 的值需为:编码格式+房间 ID,如房间 ID 为 ChatRoom001,那么 RoomId 应填写为 G711AChatRoom001、AACLCChatRoom001 或 ByteVC1ChatRoom001。
Q7:硬件音量太小,如何调整?
可前往 rtc-aigc-embedded-demo/client/espressif/esp32s3_demo/main/VolcRTCDemo.c 文件修改 audio_hal_set_volume 的值,取值范围为 0-100。
Q8:硬件端启动后报错 ALGORITHM_STREAM: Failed to load models 提示模型加载失败?
乐鑫侧报错,不影响使用。
Q9:硬件启动后报错 Not found right xTaskCreateRestrictedPinnedToCore?
请按以下步骤操作
cd $IDF_PATH git apply $ADF_PATH/idf_patches/idf_v5.4_freertos.patch