LiveKit框架简述:
一个非常强大的开源框架------LiveKit Agents,特别适合那些想要构建实时、多模态 AI Agent 的开发者。这个工具能让你的 AI Agent 通过语音、视频和数据通道与用户互动,不仅支持语音助手、实时翻译,还能处理各种复杂的多模态任务。是OpenAI的服务提供商之一。
主要特性:
• 实时音视频传输:使用 LiveKit API,能够稳定地将语音和视频从用户设备传输到服务器,体验非常流畅。
• 任务处理超简单:它内置了语音转文本、文本转语音等常见任务的抽象,非常方便,让你不用再纠结于底层逻辑。
• 扩展性强:这个框架支持集成 OpenAI、Google 等多家服务商的插件,灵活度很高,你可以根据需求自定义插件。
• 端到端支持:无论是本地开发还是生产部署,LiveKit Agents 都能无缝对接,简直就是一键搞定。
• 极佳的扩展能力:它的 Agent 编排和负载均衡功能让扩展变得超容易,特别适合需要高并发支持的场景。
• 全球优化:如果你使用 LiveKit Cloud,语音和视频传输还能通过全球边缘网络,确保低延迟、不卡顿。
问题:本人使用LiveKit的python sdks在香橙派上构建一个客户端,用来和web端进行语音通话,运行起来后,web端的Participant执行disconnect操作退出房间后(此时房间内只剩香橙派客户端),香橙派客户端会在20s后收到如下日志信息:
026-03-19 22:46:03,755 - livekit - DEBUG - ffi_event_callback - 174 - tungstenite::protocol:666:tungstenite::protocol - Received close frame: Some(CloseFrame { code: Normal, reason: "" })
2026-03-19 22:46:03,776 - livekit - INFO - ffi_event_callback - 174 - livekit::room:1506:livekit::room - disconnected from room with reason: RoomClosed
经过检查代码,确定没有在客户端执行过disconnect操作,基本确定是服务器关闭的房间。
经过测试,如果web端一直在房间里,客户端执行disconnect退出房间后,过20s后再进入房间,还是能正常和web端进行通话,说明客户端退出房间后,只留web端在房间里,服务器并没有关闭房间。
参考livekit的官方说明文档:
Participant management | LiveKit Documentation

参与者类型分5种,而我的代码是参考的sdks里的示例代码,参与者类型为agent

当你的设备端(可能被标记为 AGENT 或类似角色)断开后,服务器会将其视为一个需要清理的"录制代理"或"服务端进程",从而关闭房间。而网页端作为一个标准的"最终用户"参与者,只要它还在房间里,房间就会保持开启。这种差异是 LiveKit 设计的一部分,用于优化资源管理。
解决:将agent =True改为False即可