网易云信 AI 实时互动演示 Demo,适用于杰理 AC7911 系列开发板。
本仓库展示 AC7911 开发板接入 NERTC AI 实时互动能力的最小可运行方案,当前版本已经包含:
- 固定 WiFi STA 直连
- OTA 配置查询
- MQTT 外部注入
- NERTC Lite Mode 进房与 AI 音频通道控制
- 本地音频采集、Opus 上行、AI 下行播放
- 基于
on_ai_data的歌曲列表与在线音乐播放
当前第三代主线代码统一收口在 src3/,fw-AC79_AIoT_SDK/ 作为只读子模块使用。
- AI 对话:支持设备侧接入 AI 实时语音对话链路。
- MCP:支持通过 MCP tool 调用设备能力,例如音量调节。
- 网易云音乐播放:支持基于 AI 返回的歌单进行在线音乐播放;该能力需要联系商务人员单独开通权限。
├── board
│ └── wl82
│ ├── Makefile // 板级构建入口
│ └── board_7911B.c // 板级配置与按键映射
├── fw-AC79_AIoT_SDK // 杰理 SDK 子模块(只读)
├── src3
│ ├── app_main.c // 应用入口
│ ├── app_nertc_call.c // 主状态机与按键/网络事件处理
│ ├── wifi_app_task.c // WiFi STA 启动与事件转发
│ ├── nertc_ota.c // OTA HTTP 配置查询
│ ├── nertc_mqtt_ext.c // MQTT 外部注入层
│ ├── nertc_protocol.c // NERTC 协议封装
│ ├── audio_input.c // 本地音频录音/播放主实现
│ ├── audio_io.c // 音频流启停与上下行适配
│ ├── music_player.c // 在线音乐播放与歌单集成
│ ├── app_config.h // 主配置
│ ├── app_config_local.h.example // 本地配置样例
│ └── nertc_sdk
│ ├── include // NERTC SDK 头文件
│ └── lib/ac7911/libnertc_sdk.a // NERTC SDK 静态库
├── .vscode
│ ├── tasks.json // VSCode 构建任务
│ └── winmk.bat // Windows 构建脚本
├── Makefile // 顶层构建入口
└── README.md
- 已完成杰理 AC7911 开发环境搭建,包括工具链与 SDK 子模块。
- 已具备可用的云信
AppKey,并完成目标设备的云端配置。 - 可正常烧录固件并查看串口日志。
- 准备仓库与子模块。
- 拉取当前仓库。
- 初始化
fw-AC79_AIoT_SDK/子模块。 git submodule update --init --recursive
- 创建本地配置文件。
- 复制
src3/app_config_local.h.example为src3/app_config_local.h。 - 该文件已被
.gitignore忽略,不会进入版本库。
- 复制
- 填写 WiFi 信息。
- 编辑
src3/app_config_local.h: APP_WIFI_SSIDAPP_WIFI_PASSWORD
- 编辑
- 填写云端接入参数。
- 编辑
src3/app_config.h: APP_KEYAPP_DEFAULT_DEVICE_ID
- 编辑
执行任务:
ac791n_nertc_demo
该任务会调用 .vscode/winmk.bat 执行完整构建,并继续执行板级 post-build 下载脚本。
.vscode\winmk.bat ac791n_nertc_demo清理构建产物:
.vscode\winmk.bat clean_ac791n_nertc_demo说明:
- 构建通过后如果出现
Device Offline,通常是下载阶段未连板,不代表编译失败。
- WiFi 本地覆盖:
src3/app_config_local.h - 主配置:
src3/app_config.h - WiFi 启动与事件:
src3/wifi_app_task.c - 应用状态机:
src3/app_nertc_call.c - OTA 查询:
src3/nertc_ota.c - MQTT 外部注入:
src3/nertc_mqtt_ext.c - NERTC 协议层:
src3/nertc_protocol.c - 本地音频采集/播放:
src3/audio_input.c - 音频流上下行适配:
src3/audio_io.c - 在线音乐播放:
src3/music_player.c - NERTC SDK 静态库:
src3/nertc_sdk/lib/ac7911/libnertc_sdk.a
KEY_ENC- 在
IDLE状态下开启 AI 对话 - 在
LISTENING状态下关闭 AI 音频通道 - 在
SPEAKING状态下触发打断
- 在
KEY_POWER- 在播放音乐时停止音乐,并恢复 AI 音频通道
当前板级按键映射定义位于:
board/wl82/board_7911B.c
APP_KEY、设备标识、真实 WiFi 凭证都属于敏感配置,公开仓库中不建议提交真实值。- 仓库默认不会跟踪
src3/app_config_local.h,请仅在本地保存该文件。 - 如果
APP_WIFI_SSID或APP_WIFI_PASSWORD为空,程序会跳过 WiFi 启动与重连。 fw-AC79_AIoT_SDK/是 git 子模块,不应在当前项目需求下直接修改。- 当前仓库的设计目标是逐步收敛和精简,不建议再把第二代大状态机或额外业务模块整块搬回主线。