单麦 CAE 算法示例
源码位置: samples/algorithms/cae 查看源码
功能说明
演示如何使用 ACOMP CAE 算法组件完成前端语音处理。该示例只使用 CAE 能力,不包含唤醒词识别和 ESR 识别流程。
示例流程包括:
初始化 ACOMP CAE 组件
加载 CAE AES 模型和 CAE 参数 JSON
创建音频输入 M2R 流和算法输出 R2M 流
采集麦克风和硬回采参考通道音频,按单麦 CAE 输入格式送入 CAE 引擎
接收 CAE 处理后的 PCM 输出流,并通过 USB UAC 麦克风送到电脑
录音过程中持续播放固定 1kHz 测试音,用于验证回采和回消效果
打印声源角度和错误事件
硬件连接
音频输入: 双通道录音,
mic0为麦克风数据,ref0使用另一路硬回采/录音通道数据,采样率 16kHz音频输出: DAC 单声道播放固定 1kHz 测试音,采样率 16kHz
USB 输出: CherryUSB UAC 麦克风设备,输出 CAE 处理后的 16kHz/16bit/mono PCM
调试串口: CP 核 UART0,PA3 引脚,波特率 921600
调试串口: AP 核 UART2,PA21 引脚,波特率 921600
音频数据流
双通道录音
├── mic0: 主麦克风输入
└── ref0: 硬回采参考输入
│
▼
ACOMP CAE / AP 算法处理
│
▼
CAE 输出 PCM
│
▼
USB UAC microphone -> 电脑录音软件
cae_audio_in.c 会在录音启动后创建 1kHz 播放任务,持续向 DAC 写入测试音;cae_audio_out.c 收到 CAE 输出流后调用 UAC 发送接口,把处理后的单通道 PCM 送到电脑。
UAC 验证方法
按烧录步骤启动 AP 固件、CAE 资源和 CP sample。
使用 USB 线连接开发板和电脑。
电脑侧选择录音设备
ListenAI CAE UAC。使用 Audacity、系统录音机或
arecord采集 USB 麦克风音频。对比 CAE 输出音频中 1kHz 测试音的残留强度,判断 AEC/回消是否生效。
如果电脑侧没有枚举出 ListenAI CAE UAC,优先检查 USB 线、供电和当前固件是否已经占用 USB 控制器。当前 sample 在 CP 核初始化 CherryUSB device,如果平台限制 USB 只能由 AP 核运行,需要将 UAC 输出迁移到 AP 侧。
资源配置
CAE 模型资源地址和长度由 prj.conf 定义:
CONFIG_ACOMP_CAE_RES_CAE_AES_ADDRESS=0x30200000
CONFIG_ACOMP_CAE_RES_CAE_AES_LENGTH=200000
CONFIG_ACOMP_CAE_RES_CAE_JSON_ADDRESS=0x304D0000
CONFIG_ACOMP_CAE_RES_CAE_JSON_LENGTH=141
如果 CAE AES 模型或参数 JSON 变化,需要同步修改对应的 length 配置,否则 AP 核解析资源时会失败或读到错误数据。
编译
重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:
arcs_evb - ARCS EVB 评估板
arcs_mini - ARCS Mini 开发板
根据您的开发板型号,选择对应的编译命令:
在 SDK 根目录执行编译:
# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini
Note
确保已安装对应的工具链。
也可以在工程根目录执行:
烧录
# 烧录 AP 核固件(Boot Core)
# 烧录地址:0x30000000
cskburn -s /dev/ttyACM0 -b 3000000 -C arcs 0x00 ./res/ap.bin
# 烧录 CAE AES 模型资源
# 烧录地址:0x30200000
cskburn -s /dev/ttyACM0 -b 3000000 -C arcs 0x200000 ./res/algo/cae_aes.bin
# 烧录 CAE 参数 JSON
# 烧录地址:0x304D0000
cskburn -s /dev/ttyACM0 -b 3000000 -C arcs 0x4d0000 ./res/algo/cae_ffw0_100.json
# 烧录 CP 核固件
# 烧录地址:0x30800000
cskburn -s /dev/ttyACM0 -b 3000000 -C arcs 0x800000 ./build/arcs.bin
res/ap.bin需要使用与当前 remote-ap CAE 组件匹配的 AP 固件;res/algo/cae_aes.bin,当前长度为 200000 字节。res/algo/cae_ffw0_100.json已放在 sample 中,当前长度为 141 字节。
预期输出
CP 日志会出现如下关键信息:
I/acomp_cae ... acomp cae init enter
I/cae ... acomp_cae_prepare ret:0
I/cae ... acomp_cae_start ret:0
I/cae_uac ... UAC microphone started, 16000Hz/16bit/1ch
I/cae_in ... 1kHz测试音任务已启动
I/cae_in ... CAE 音频输入已启动
I/cae ... cae angle[0]: <angle>
AP 日志会出现 acomp.cae 注册、资源加载、CAE 启动和音频流处理相关信息。