本文主要介绍,如何将 AI 对话能力集成到智能硬件中,例如陪伴机器人、智能家居、车载助手等。
获取 Demo 源码及接入指引:嵌入式硬件 AIGC Demo。
观看演示视频(以 乐鑫 ESP32-S3-Korvo-2 为例):
集成涉及客户端、业务服务端以及 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 或 MJPEG。
调用设备端 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 销毁引擎实例。注意
开启配置后,若音视频使用 G711A、G722、AACLC 或 ByteVC1 格式,RoomId 的值需为:编码格式+房间 ID,如房间 ID 为 ChatRoom001,那么 RoomId 应填写为 G711AChatRoom001、AACLCChatRoom001 或 ByteVC1ChatRoom001。
rtc-aigc-embedded-demo/client/espressif/esp32s3_demo/main/VolcRTCDemo.c 文件修改 audio_hal_set_volume 的值,取值范围为 0-100。ALGORITHM_STREAM: Failed to load models 提示模型加载失败?Not found right xTaskCreateRestrictedPinnedToCore?cd $IDF_PATH git apply $ADF_PATH/idf_patches/idf_v5.4_freertos.patch