Skip to main content

3.2.1 RDK S100 系列音频使用指南

S100音频基于标准alsa框架进行开发,用户空间使用开源代码alsa-lib提供的库和二进制bin进行功能测试。该章节基于此说明S100上音频功能测试的基本方法。

alsa-lib介绍

arecord/aplay参数介绍

  • 常用参数说明
参数说明引申含义
-D指定设备节点信息。通过 hw:x,x 设置x,x 分别对应声卡号和设备号
-cChannel:声道数,分为单声道 mono 和立体声 stereo,还有多声道如 8/16 通道通道数
-rRate:又称 sample rate,采样率,即每秒的采样次数
-f样本长度常见位宽格式设置:U8/S16_LE/S32_LE
-t文件类型。包含 wav、voc、raw 等
-d录音时间(以秒为单位)。录制指定时长后结束
--period-size每次硬件中断处理音频数据的帧数
--buffer-size数据缓冲区大小
-I非交错方式
  • 常用命令

    • 列出声卡和数字音频设备信息
    arecord -l
    aplay -l
    • 硬件支持能力
    arecord --dump-hw-params -Dhw:0,0
    aplay --dump-hw-params -Dhw:0,1 /dev/zero
    • 回环测试命令
    arecord -Dhw:0,0 -c 2 -r 48000 -f S16_LE -t wav -d 10 | aplay -Dhw:0,1
    • 非交错方式数据存储。注意:非交错存储的数据是PCM裸流
    arecord -Dhw:0,0 -c 2 -r 48000 -f S16_LE -t wav -d 5 -I 0
    aplay -Dhw:0,1 -c 2 -r 48000 -f S16_LE -t wav -I 0
    • 交错方式数据存储
    arecord -Dhw:0,0 -c 2 -r 16000 -f S16_LE -t wav -d 5 test.wav
    aplay -Dhw:0,1 test.wav

控制命令

  • 查询当前codec的所有control信息以及对应值
amixer scontrols
amixer scontents
  • 参数调整

比如调整播放音量值

amixer sset 'DAC' 120 //设置
amixer sget 'DAC' //获取
注意

默认声卡/设备号是0,0,如果实际场景接入多个声卡设备,需要通过-D,-c指定设备、声卡号。

确认当前要调整的声卡/设备号方法:

  • arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: s100snd2 [s100snd2], device 0: s100dailink0 ES7210 4CH ADC 0-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
  • /proc/asound/cards节点
root@ubuntu:/userdata# cat /proc/asound/cards
0 [s100snd2 ]: s100snd2 - s100snd2
s100snd2

应用空间接口

API描述及使用参考官方文档介绍:https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_2pcm_8c.html

Audio Driver HAT REV2

使用准备

S100适配微雪电子生产的音频转接板,通过40PIN实现和S100开发板连接。子板介绍和具体连接方法参考:音频子板使用说明

设备节点

该音频板接入S100加载驱动后,生成的设备节点:

  • pcmC0D0c:录音

  • pcmC0D1p:播放

  • controlC0:控制

功能测试

  • 录音
arecord -Dhw:0,0 -c 2 -r 48000 -f S16_LE -t wav -d 5 test.wav

表示录制5s,48k/2ch/16bit位宽的wav音频文件。数据格式用户可以根据自己的需求调整并设置。

  • 播放
aplay -Dhw:0,1 test.wav

表示播放一个wav文件,数据格式会解析wav文件头获取并写入驱动