一、为什么是 LiveKit?
在实时语音 AI 场景里,很多团队一开始只关注'音频能不能传',但真正落地会遇到更多问题:连接稳定性、会话管理、设备控制、Agent 协同、扩展能力等。 LiveKit 的价值就在于:它不仅是传输层,更是一个面向实时 AI Agent 的平台能力层,统一了房间、参与者、媒体轨道和数据通道能力。 官方定位可以概括为:构建 voice / video / physical AI agents 的平台。
二、BK7258 工程里,LiveKit 在哪里?
结合 projects/livekit/ 工程,核心模块可以这么看: main/app_main.c:系统启动入口,拉起核心模块 main/dialog_component/system_manager/system_manager.c:全局状态机(网络、激活、会话、录音、播放) main/dialog_component/dialog/dialog_module.c:麦克风采集 + 喇叭播放 main/dialog_component/protocols/protocol.c:协议统一门面(WSS/MQTT/LiveKit) main/dialog_component/protocols/protocol_livekit.c:LiveKit 协议入口 main/example.c:join_room(),完成房间创建与连接 components/livekit/core/engine.c:LiveKit 引擎状态机、信令与媒体通路 一句话理解: system_manager 管'流程',dialog_module 管'音频',livekit engine 管'实时连接'。
三、BK7258 适配 LiveKit 的总体流程
下面这条链路基本覆盖了实际落地步骤: 设备启动 初始化板级外设、音频驱动、任务和事件系统 网络就绪 配网成功后,状态机从 NET_* 进入可激活/可连云状态 协议层初始化 打开 CONFIG_PROTOCOL_USE_LIVEKIT 后,走 LiveKit 协议分支 进入房间 调 join_room(),构建 room options,准备 server_url/token WebRTC 建链 完成 JOIN、addTrack、Offer/Answer、ICE trickle 音频上行/下行闭环 上行:mic Opus 帧送入 LiveKit 下行:订阅音频帧写入喇叭播放 MCP 设备控制扩展(可选) 通过 tools/list 与 tools/call 把'语音问答'扩展到'语音控制设备'
四、关键配置项(BK7258 侧)
建议优先确认这些宏开关: CONFIG_LIVEKIT=y CONFIG_PROTOCOL_USE_LIVEKIT=y CONFIG_PROTOCOL_IOT_MCP=y(如果需要设备工具调用) 音频相关 Opus/AEC/VAD 配置与云端策略匹配 实践建议: 先只保留 LiveKit 主链路,尽量减少并发变量(WSS/MQTT 先关) 先跑通连接与音频,再叠加 UI、摄像头、外设控制
五、音频链路是适配成败的核心
BK7258 适配里,最关键是把端侧音频回调和 LiveKit 媒体接口打通: 采集侧:音频驱动回调拿到 Opus 帧 发送侧:调用引擎发送接口推到 LiveKit 房间 接收侧:订阅远端音频帧 播放侧:写入 bk_aud_intf_write_spk_data() 到喇叭 也就是说,最短闭环是: Mic -> Opus -> LiveKit -> Agent/TTS -> LiveKit -> Speaker 只要这条链路稳定,后续能力都能围绕它扩展。
六、推荐落地顺序(可执行)
Phase 1:连通性验证 固件启动正常 能拿到 token 并 livekit_room_connect 状态从 CONNECTING 进入 CONNECTED Phase 2:音频闭环验证 上行音频持续稳定(无明显丢帧) 下行语音可播放(无爆音、卡顿可控) Phase 3:会话与恢复 弱网下重连/backoff 生效 多次进入/退出房间无资源泄漏 Phase 4:MCP 工具化 注册基础工具(音量、摄像头、灯光) 打通 initialize -> tools/list -> tools/call
七、典型时序图

八、项目收益与结论
BK7258 适配 LiveKit 的收益,不只在'能语音聊天',更在于形成一个可扩展架构: 实时会话能力标准化(房间、参与者、轨道) 语音链路工程化(采集、编码、传输、播放) 设备控制平台化(MCP 工具注册与调用) 最终可以从'会说话的设备'升级到'可对话、可执行、可持续进化的 AI 终端'。
参考资料 LiveKit 官方文档(Overview):https://docs.livekit.io/intro/overview/


