当前硬件设备正以前所未有的速度智能化升级,成为人工智能领域成长最快的赛道之一。AI 与硬件的结合正逐渐渗透到我们生活的方方面面,如陪伴类机器人,智能家居、教育硬件以及智能穿戴设备等。
火山引擎 RTC 与嵌入式芯片厂商合作内置一站式解决方案,可实现音视频数据的高效传输,并在云端深度整合大模型、 语音识别、语音合成等人工智能技术,企业只需通过简洁的 API 接口,即可调用云端智能体,实现适配硬件设备的 AI 实时通话服务。
在端侧,芯片集成其先进的音频处理,包括自动唤醒功能和音频3A(自动增益控制、噪声抑制、回声消除)等,保证音频输入的清晰度和准确性。云端的智能体服务则提供 Function calling 和知识库支持,使得硬件设备能够提供个性化服务和智能决策,满足用户的深层次需求。
功能 | 场景应用 |
---|---|
实时音频互动 | 流式传输技术可以确保语音和视频数据的连续性和稳定性,减少延迟和抖动,提供接近于真人的高质量互动。 |
语音识别(ASR) | 提供火山引擎大模型和小模型识别能力,拥有超高的准确率,可复杂场景下通话,提供更类真人的交互体验。 |
大语言模型(LLM) | 提供火山引擎和其他第三方 LLM 厂商接入,能够更好地理解对话的上下文,从而实现连贯的对话交流。 |
语音合成(TTS) | 提供火山引擎和其他第三方 TTS 厂商接入,生成符合要求的音色进行互动。根据上下文,智能预测文本的情绪、语调等信息。并生成超自然、高保真、个性化的语音,以满足不同用户的个性化需求。 |
智能打断 | 用户无需通过按键或其他输入方式,即可享受自然流畅的双向通话体验。毫秒级人声检测和打断响应,支持随时精准打断,让交流更加灵活。 |
实时响应 | 在保持极低功耗的同时,实现端到端响应延时可低至1秒,为用户提供了实时的交互体验,让沟通更加丝滑。 |
Function Calling | 允许大模型识别用户对话中的特定需求,并在内容的过程中调用外部函数或 API,来执行它自身无法独立完成的任务,如处理实时数据检索、文件处理、数据库查询等。 |
弱网卡顿优化 | 即使在网络条件不佳,丢包率高达80%的情况下,够保证通话的稳定性,确保语义信息的完整传输,不丢失任何重要内容。 |
多平台支持 | 嵌入式Linux、RTOS、Android 等常见硬件全平台支持 |
嵌入式 Linux 以及 RTOS 相关系统的设备端 SDK 请联系技术支持获取。
对话式 AI 服务端 demo 示例代码可参考开源嵌入式硬件解决方案。
构建嵌入式硬件的基本流程如下:
在嵌入式硬件唤醒准备通话时你需要开启智能体任务:
你需要在服务端生成 token 以便后续嵌入式硬件进入房间。生成 Token 逻辑参看使用 Token 完成鉴权。
你需要传入 AppId,RoomId,嵌入式硬件对应 UserId 等参数开启智能体任务。智能体详细参数请查看启动智能体 StartVoiceChat。在实现智能体调用相关逻辑前,你可前往线上调试工具 APIExplorer先进行调试。
说明
若音频格式使用 G711A
、 AACLC
或 ByteVC1
格式,RoomId 的值需为 编码格式 + 房间 ID,如房间 ID 为 ChatRoom001
,那么 RoomId
应填写为 G711AChatRoom001
、AACLCChatRoom001
或 BYTEVC1ChatRoom001
。
// demo中封装好了启动智能体的函数 ... int start_ret = start_voice_bot(room_info); ...
你需要使用与设备适配的原生库实现音视频信号采集与编码。
音频编码格式默认为 OPUS。视频编码格式为 H.264 或 ByteVC1。
你需要调用 byte_rtc_create
创建引擎,调用 byte_rtc_init
初始化引擎示例,调用byte_rtc_set_audio_codec
设置音频编码格式,调用 byte_rtc_set_video_codec
设置视频编码格式,并调用 byte_rtc_join_room
创建并加入房间。
硬件客户端 RoomId、UserId 必须与开启智能体任务时传入的值一致才能互通。
在进行双向通话期间,在业务端通过 byte_rtc_send_audio_data
将采集到的音频信息传给智能体进行对话,默认 20ms 发送一次编码后的音频数据,硬件设备自动订阅对话消息。
如对话过程中调用 UpdateVoiceChat 进行打断操作,或使用 Function calling 功能,通过 byte_rtc_rts_send_message
发送实时信令信息。
此外在通话期间可通过 on_message_received
收到字幕消息。
你需调用 byte_rtc_leave_room
接口退出房间,调用 byte_rtc_destroy
销毁引擎示例,并在服务端调用StopVoiceChat 接口关闭智能体。
火山引擎与乐鑫等芯片厂商联合开源嵌入式硬件解决方案,详情请查看开源嵌入式硬件解决方案
Q1:智能体未进房或未正常工作?
A1:请参看智能体未进房或未正常工作?进行排查,若仍未解决请携带请求 RequestId 联系技术支持。
Q2:是否支持在硬件端传入图片,进行图像识别?
A2:目前不支持。
Q3:是否支持一个智能体同时与多个嵌入式硬件互动?
A3:不支持。当前仅支持一个智能体同时与一个嵌入式硬件用户互动。
Q4:启动报错 10004?
A4:本地请求时间问题。请更换设备环境或者更换设备重试。
Q5:如何实现自定义功能,如"打开灯光","播放音乐"?
A5:可使用 Function Calling 功能实现,调用你编写的自定义行为接口(如打开灯光),详情参看Function Calling(流式返回结果) 功能文档。
A6:硬件成功加入房间,日志有字幕,但是没有声音?
A6:未开启硬件场景配置。前往功能配置选择应用并开启配置。注意开启配置后,若音频格式使用 G711A
、 AACLC
或 ByteVC1
格式,RoomId
的值需为:编码格式+房间 ID,如房间 ID 为 ChatRoom001
,那么 RoomId
应填写为 G711AChatRoom001
、AACLCChatRoom001
或 BYTEVC1ChatRoom001
。
A7:硬件音量太小,如何调整?
A7:可前往 rtc-aigc-embedded-demo/client/espressif/esp32s3_demo/main/VolcRTCDemo.c
文件修改 audio_hal_set_volume
的值,取值范围为 0-100。
A8:硬件端启动后报错 ALGORITHM_STREAM: Failed to load models
提示模型加载失败?
A8:乐鑫侧报错,不影响使用。
A9:硬件启动后报错 Not found right xTaskCreateRestrictedPinnedToCore
?
A9:请按以下步骤操作
cd $IDF_PATH git apply $ADF_PATH/idf_patches/idf_v5.4_freertos.patch