Audio Capture/Playback Demo 使用说明¶
1. 功能场景介绍¶
1.1 程序概述¶
sgs_demo_audio_alsa_ai_ao_demo 是用于展示 ALSA 音频采集与播放功能的示例程序。该程序支持录音、播放、DMIC 测试以及 ECHO 回声测试,并提供录音增益和播放音量设置功能。
1.2 主要特性¶
- 音频采集(capture):支持 AMIC、DMIC、ECHO 回声等输入源
- 音频播放(playback):支持 DAC 扬声器输出
- 回声采集(pass_echo):播放音频的同时采集扬声器回声
- AI→AO 直通(passthrough):硬件直连 AI 到 AO
- 硬件混音(pass_mix):播放音乐与 AI→AO 直连同时进行
- 录音增益调节(0~100%)
- 播放音量调节(0~100%)
1.3 用例与接口对应说明¶
| usecase | interface |
|---|---|
| capture | adc_a / adc_b / dmic / echo_rx / i2s_a_rx / i2s_b_rx / i2s_c_rx |
| playback | dac / echo_tx / i2s_a_tx / i2s_b_tx / i2s_c_tx |
| passthrough | adc_a-dac / adc_b-dac |
| pass_mix | adc_a/adc_b-dac 硬件混音(播放音频 + AI→AO直连) |
| pass_echo | echo_tx-echo_rx 回声采集 |
2. 编译环境说明¶
2.1 编译环境设置¶
在项目根目录下设置 arm64 编译环境:
export PATH=/tools/toolchain/aarch64-unknown-linux-gcc-12.4.0-glibc-2.37-gnu/bin:$PATH
export CROSS_COMPILE=aarch64-unknown-linux-gnu-12.4.0-
export ARCH=arm64
cd project
make linux-comake_mhera.emmc.glibc-12.4.0-arm64-ext4.d3.4096.fccsp16_lpddr4x_defconfig
如果选用2GB的ddr,defconfig可以使用 linux-comake_mhera.emmc.glibc-12.4.0-arm64-ext4.d3.2048.fccsp16_lpddr4x_defconfig
2.2 编译命令¶
# 编译整个 project
cd project
make clean;make image -j16
# 编译 audio demo
cd sdk/verify/sample_code
make demo/audio/alsa_ai_ao_demo
2.3 编译产物¶
编译生成的可执行文件位于:sdk/verify/sample_code/out/arm64/app/sgs_demo_audio_alsa_ai_ao_demo
3. 运行环境说明¶
3.1 硬件环境¶
- Comake PI D3 开发板
- 供电、网线
- AMIC、DMIC
- 扬声器
实际硬件连接如下图所示:
| 正面 | 背面 |
|---|---|
![]() |
![]() |
注意:Dmic接入板端的Dmic口处,金属面朝下,蓝色的朝上,如上图背面接线所示
3.2 DTS配置¶
无特殊要求
3.3 命令行参数说明¶
3.3.1 通用参数¶
| 选项 | 含义 | 选项 | 含义 |
|---|---|---|---|
| -A | 捕获音频的声卡序号 | -F | 捕获音频的文件保存路径(wav) |
| -a | 播放音频的声卡序号 | -f | 播放的音频文件路径(wav) |
| -D | 捕获音频的设备序号 | -T | 捕获音频的时长(秒) |
| -d | 播放设备序号 | -t | 播放音频的时长(秒) |
| -C | 捕获音频的通道数 | -V | 捕获音频的增益(0~100) |
| -c | 播放音频的通道数 | -v | 播放音频的音量(0~100) |
| -R | 捕获音频的采样率 | -r | 播放音频的采样率 |
| -i | 捕获音频的输入源 |
4. 运行说明¶
4.1 前置条件¶
- 硬件准备:Comake PI D3 开发板、供电、网线、AMIC、DMIC、扬声器
- 软件资源:烧录工具,已完成 image 烧录
- 依赖部署:ALSA 环境变量正确导入
4.2 安装与部署¶
- 将编译产物
sgs_demo_audio_alsa_ai_ao_demo拷贝到板端/customer/sample_code/路径,并修改权限为 777:
- 登录板端,设置 ALSA 环境变量:
bash
export ALSA_CONFIG_DIR=/customer/alsalib/res/alsa
export ALSA_PLUGIN_DIR=/customer/alsalib/
export LD_LIBRARY_PATH=/customer/alsalib/:$LD_LIBRARY_PATH
- 进入程序目录:
4.3 测试用例¶
命令行使用格式:./sgs_demo_audio_alsa_ai_ao_demo [usecase] -i [interface] [options]
D3 板支持的用例(usecase): capture、playback、pass_echo
D3 板支持的接口(interface): capture 仅支持 dmic、echo_rx;playback 仅支持 dac、echo_tx
| 测试目标 | 操作步骤 | 执行命令 | 预期结果 |
|---|---|---|---|
| AMIC录音测试 | 使用AMIC录制10秒音频 | ./sgs_demo_audio_alsa_ai_ao_demo capture -i adc_a -F test.wav -A 0 -D 0 -R 8000 -C 1 -T 10 -V 60 |
1. app不会挂掉 2. 录音正常完成 3. 生成test.wav文件 4. 录制音频清晰可听 |
| DMIC 录音测试 | 使用 DMIC 录制 10 秒音频,录音增益 60% | ./sgs_demo_audio_alsa_ai_ao_demo capture -i dmic -F test.wav -A 0 -D 0 -R 8000 -C 1 -T 10 -V 60 |
1. app 正常运行不挂起 2. 录音正常完成 3. 生成 test.wav 文件 4. 录制音频清晰可听 |
| DAC 播放测试 | 使用 DAC/扬声器播放 10 秒音频,音量 40% | ./sgs_demo_audio_alsa_ai_ao_demo playback -i dac -f ./test.wav -a 0 -d 0 -c 2 -t 10 -v 40 |
1. app 正常运行不挂起 2. 播放正常启动 3. 声音清晰正常 4. 播放完整无中断 |
| ECHO 回声采集测试 | 播放音频并采集扬声器回声,录音增益 50%,播放音量 40%,时长 10s | ./sgs_demo_audio_alsa_ai_ao_demo pass_echo -i echo_tx-echo_rx -f ./resource/input/48K_16bit_STERO_30s.wav -F echorx.wav -a 0 -d 0 -r 48000 -t 10 -v 40 -A 0 -D 0 -R 48000 -T 10 -C 2 -V 50 |
1. app 正常运行不挂起 2. 播放与回声采集同时进行 3. 生成 echorx.wav 文件 4. 回声音频与播放内容一致 |
5. 运行结果说明¶
5.1 各功能场景运行结果¶
5.1.1 AMIC 录音功能¶
- 程序正常启动后执行录音
- 音频数据经 AMIC 采集,保存为 WAV 文件
- 录音时长、增益可根据参数调整
5.1.2 DMIC 录音功能¶
- 程序正常启动后执行录音
- 音频数据经 DMIC 采集,保存为 WAV 文件
- 录音时长、增益可根据参数调整
5.1.3 DAC 播放功能¶
- 读取 WAV 音频文件,通过 DAC 输出到扬声器
- 播放音量、时长可根据参数调整
- 播放完成自动退出
5.1.4 ECHO 回声采集功能¶
- 播放音频的同时采集扬声器回声
- 生成回声录音文件(echorx.wav)
- 可用于回声消除算法调试
5.2 常见问题¶
- 执行 app 出现异常,请检查硬件连接和驱动状态
- 运行前必须正确设置 ALSA 环境变量(
ALSA_CONFIG_DIR) 48K_16bit_STERO_30s.wav测试文件可从demo/resource/input/获取- 如果板端没有对应依赖库,请检查 libs 是否已拷贝到
/config/lib路径

