- tags
- [IoT, Agora, RTC, AI语音, 实时通信]
- created
- 2026-04-12
- updated
- 2026-04-17
- sources
- [raw/snippets/iot-docs/guide-ai-voice.md, raw/snippets/iot-docs/architecture-technical.md, raw/snippets/agora-rtsa/implement-transmission.md]
定义¶
基于 Agora RTC SDK 实现的设备端 AI 实时语音对话能力。设备通过 MQTT 获取 RTC 参数后加入 Agora 频道,与云端 AI Agent 进行低延迟语音交互。
关键要点¶
- 对话生命周期:Idle → Requesting(MQTT 上报)→ Joining(初始化 SDK)→ InCall(音频收发)→ Leaving → Idle
- 设备只需做两件事:发
agora_agent_device_accessMQTT 消息 + 用返回的 4 个参数(appId/rtcToken/channelName/uid)加入频道 - 音频参数:OPUS 编码、16kHz 采样率、单声道、16bit PCM、20ms 帧长(这一组参数本质来自 agora-rtsa-sdk SDK 的发送约束——不是某个产品决定的,而是 RTSA C SDK 传输 API 的硬约束:
(640 × 1000) / (16000 × 1 × 2) = 20ms,发送间隔必须等于帧长) - AI Agent 先就绪:云端先创建 Agent 并让其加入频道等待,设备加入即可开始对话
- 结束时零成本:设备调用
leave_channel()即可,无需额外 MQTT 消息,云端自动清理 - NFC 切换角色:通过
agora_agent_nfc_report上报 NFC 标识,onlyReport=0时切换角色并开始对话 - 数据流:设备音频 → Agora → ASR 识别 → HTTP Callback 到 Sentino Agent → LLM 推理 + TTS → SSE Streaming 返回 → Agora → 设备播放
- 断连重连:先用旧参数重连,失败后重新请求
agora_agent_device_access获取新参数 - SDK 优化:频繁对话场景可只初始化一次 SDK,每次只调 join/leave
信息论视角¶
音频参数的选择本质上是信息论权衡:Opus 编码在 16kHz 采样率下的比特率选择反映了信源编码定理的约束——压缩不能低于语音信号的熵率。而无线信道(Wi-Fi/BLE)的吞吐量受 Shannon-Hartley 公式 C = B log₂(1+S/N) 硬约束,IoT 设备的低功耗需求意味着工作在功率受限区。(→ information-theory)
相关概念¶
- sentino-iot
- mqtt-device-protocol
- ai-intelligent-agent
- agora-convoai-server
- bk7258-firmware
- information-theory — 信道容量与信源编码:语音传输的理论极限
- agora-rtsa-sdk — 嵌入式设备端实际跑的 C SDK,本页描述的 OPUS/16kHz/20ms 参数本质来自 RTSA 的发送约束