声学测试应用*
提示
- SDK 路径: http://gitlab.nationalchip.com/nationalchip/voice-wifi-solution/ovp_aiot
- App 路径: SDK 路径下 app/acoustic_test_app/
- 适用芯片 8006
1. 概述*
声学测试 App,用于测试扬声器播报、AEC 回声消除、录音直通等音频通路。通过不同配置文件可切换测试模式,适用于产线或实验室的声学验证场景。
2. 功能特性*
- THD 测试(
speak_test.config):播放白噪、单音音频,用于 THD(总谐波失真)测试 - AEC 测试(
aec_test.config):播放人声,验证回声消除效果 - 双声道录音(
bypass_record.config):mic + ref 双声道录音,无播报 - 可选集成 VIVA 语音引擎(
CONFIG_ENABLE_VIVA)
3. 目录结构*
app/acoustic_test_app/
├── acoustic_test_app.c # 主程序
├── app.mk # 编译配置
├── app.name # Kconfig 选项
├── Kconfig # 子配置(空)
└── viva/ # VIVA 引擎子模块
├── viva.c
├── viva.h
└── viva.mk
| 文件 | 作用 |
|---|---|
acoustic_test_app.c |
主程序,定义 OVP_APP 结构体并注册 |
app.mk |
编译主程序和 viva 子模块(由 CONFIG_ENABLE_VIVA 控制) |
app.name |
定义 CONFIG_APP_ACOUSTIC_TEST 选项 |
viva/ |
VIVA 语音引擎封装,负责 TTS 播报控制 |
4. 配置说明*
该 App 无额外的 Kconfig 子配置和宏定义。在 menuconfig 中选择 "Acoustic Test" 即可。
依赖外部配置项 CONFIG_ENABLE_VIVA,启用后才会编译 viva 子模块并支持 TTS 播报。
5. 工作原理*
5.1 初始化流程*
- 打印唤醒源信息
- 如果启用
CONFIG_ENABLE_VIVA:初始化 VIVA 引擎 - 发送
EVENT_POWER_ON_TTS_PLAY事件,触发首次 TTS 播报
5.2 事件处理*
app_event_response() 仅响应 Audio-in 录音完成事件:
| 事件 | 触发时机 | 处理逻辑 |
|---|---|---|
EVENT_AUDIO_IN_RECORD_DONE |
Audio-in 录音完成(触发时间由 PCM 帧长决定,根据配置自行确定) | 检查播放器是否空闲,空闲则重新触发 TTS 播报 |
当播放器空闲时发送 EVENT_POWER_ON_TTS_PLAY,实现循环播报。
5.3 主循环*
app_task_loop() 中调用 viva_tick() 驱动 VIVA 引擎的周期性任务。
6. 使用方法*
6.1 编译*
配置文件位于 configs/acoustic_test_config/,根据测试需求选择:
| 配置文件 | 说明 |
|---|---|
speak_test.config |
THD 测试(播放白噪、单音音频) |
aec_test.config |
AEC 测试(播放人声) |
bypass_record.config |
mic + ref 双声道录音,无播报 |
cp configs/acoustic_test_config/speak_test.config .config
make defconfig
make clean; make
6.2 烧录运行*
cd tools/bootx/
./flash_nor.sh 0 -r 1000000
7. 预期输出*
根据所选配置文件,输出不同:
- THD 测试:扬声器播放白噪或单音音频
- AEC 测试:扬声器播放人声,麦克风采集环境音(含扬声器发出的声音),用于回声消除效果验证
- 双声道录音:mic + ref 双声道持续录音,无播报输出
THD 测试和 AEC 测试需配合声学测试脚本判断是否达标,参考:声学测试用户指南
8. 注意事项*
- 依赖 VIVA 引擎:该 App 依赖
CONFIG_ENABLE_VIVA,未启用时无法正常工作 - 循环播报:播报会无限循环,不适合长时间运行,仅用于测试场景
- 休眠/唤醒未实现:当前 SDK 不支持休眠功能,
app_suspend()和app_resume()保持空实现即可