跳转至

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 安装与部署

  1. 将编译产物 sgs_demo_audio_alsa_ai_ao_demo 拷贝到板端 /customer/sample_code/ 路径,并修改权限为 777:
chmod 777 /customer/sample_code/sgs_demo_audio_alsa_ai_ao_demo
  1. 登录板端,设置 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

  1. 进入程序目录:
cd /customer/sample_code/

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 常见问题

  1. 执行 app 出现异常,请检查硬件连接和驱动状态
  2. 运行前必须正确设置 ALSA 环境变量(ALSA_CONFIG_DIR
  3. 48K_16bit_STERO_30s.wav 测试文件可从 demo/resource/input/ 获取
  4. 如果板端没有对应依赖库,请检查 libs 是否已拷贝到 /config/lib 路径