Linux ALSA音频工具aplay、arecord、amixer的使用方法

这篇具有很好参考价值的文章主要介绍了Linux ALSA音频工具aplay、arecord、amixer的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ALSA 是Advanced Linux Sound Architecture的缩写,先进的Linux音频架构,为Linux操作系统提供音频和MIDI功能。

aplay命令

aplay是播放命令。

root@imx6ul7d:~# aplay -h
Usage: aplay [OPTION]... [FILE]...

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list device names
-D, --device=NAME       select PCM by name
-q, --quiet             quiet mode
-t, --file-type TYPE    file type (voc, wav, raw or au)
-c, --channels=#        channels
-f, --format=FORMAT     sample format (case insensitive)
-r, --rate=#            sample rate
-d, --duration=#        interrupt after # seconds
-s, --samples=#         interrupt after # samples per channel
-M, --mmap              mmap stream
-N, --nonblock          nonblocking mode
-F, --period-time=#     distance between interrupts is # microseconds
-B, --buffer-time=#     buffer duration is # microseconds
    --period-size=#     distance between interrupts is # frames
    --buffer-size=#     buffer duration is # frames
-A, --avail-min=#       min available space for wakeup is # microseconds
-R, --start-delay=#     delay for automatic PCM start is # microseconds
                        (relative to buffer size if <= 0)
-T, --stop-delay=#      delay for automatic PCM stop is # microseconds from xrun
-v, --verbose           show PCM structure and setup (accumulative)
-V, --vumeter=TYPE      enable VU meter (TYPE: mono or stereo)
-I, --separate-channels one file for each channel
-i, --interactive       allow interactive operation from stdin
-m, --chmap=ch1,ch2,..  Give the channel map to override or follow
    --disable-resample  disable automatic rate resample
    --disable-channels  disable automatic channel conversions
    --disable-format    disable automatic format conversions
    --disable-softvol   disable software volume control (softvol)
    --test-position     test ring buffer position
    --test-coef=#       test coefficient for ring buffer position (default 8)
                        expression for validation is: coef * (buffer_size / 2)
    --test-nowait       do not wait for ring buffer - eats whole CPU
    --max-file-time=#   start another output file when the old file has recorded
                        for this many seconds
    --process-id-file   write the process ID here
    --use-strftime      apply the strftime facility to the output file name
    --dump-hw-params    dump hw_params of the device
    --fatal-errors      treat all errors as fatal
Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM S20_LE S20_BE U20_LE U20_BE SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE G723_24 G723_24_1B G723_40 G723_40_1B DSD_U8 DSD_U16_LE DSD_U32_LE DSD_U16_BE DSD_U32_BE
Some of these may not be available on selected hardware
The available format shortcuts are:
-f cd (16 bit little endian, 44100, stereo)
-f cdr (16 bit big endian, 44100, stereo)
-f dat (16 bit little endian, 48000, stereo)

-t, 指定输出数据格式,默认是wave格式,还支持raw,voc,au,后两种格式不懂。
-D,指定播放设备,设备名的格式为hw:0,0,表示0号card的0号device。
-c,指定channel数。
-f, 指定语音数据格式,有很多格式可以选择。
-r, 指定采样频率,例如5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000。
-d,指定播放的时长,单位秒。
-l, 播放设备列表
 

实例
罗列播放设备。

root@imx6ul7d:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8962audio [wm8962-audio], device 0: HiFi wm8962-0 [HiFi wm8962-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: wm8962audio [wm8962-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@imx6ul7d:~#

 
播放音频文件。其中-Dhw:0,0 表示card0,device0,对应到aplay -l命令中的设备列表; -d 5表示播放5秒。

root@imx6ul7d:~# aplay -Dhw:0,0 -d5 /unit_tests/ASRC/audio8k16S.wav
Playing WAVE '/unit_tests/ASRC/audio8k16S.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo
root@imx6ul7d:~#

 
 

arecord 命令

arecord是录音命令。

root@imx6ul7d:~# arecord -h
Usage: arecord [OPTION]... [FILE]...

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list device names
-D, --device=NAME       select PCM by name
-q, --quiet             quiet mode
-t, --file-type TYPE    file type (voc, wav, raw or au)
-c, --channels=#        channels
-f, --format=FORMAT     sample format (case insensitive)
-r, --rate=#            sample rate
-d, --duration=#        interrupt after # seconds
-s, --samples=#         interrupt after # samples per channel
-M, --mmap              mmap stream
-N, --nonblock          nonblocking mode
-F, --period-time=#     distance between interrupts is # microseconds
-B, --buffer-time=#     buffer duration is # microseconds
    --period-size=#     distance between interrupts is # frames
    --buffer-size=#     buffer duration is # frames
-A, --avail-min=#       min available space for wakeup is # microseconds
-R, --start-delay=#     delay for automatic PCM start is # microseconds
                        (relative to buffer size if <= 0)
-T, --stop-delay=#      delay for automatic PCM stop is # microseconds from xrun
-v, --verbose           show PCM structure and setup (accumulative)
-V, --vumeter=TYPE      enable VU meter (TYPE: mono or stereo)
-I, --separate-channels one file for each channel
-i, --interactive       allow interactive operation from stdin
-m, --chmap=ch1,ch2,..  Give the channel map to override or follow
    --disable-resample  disable automatic rate resample
    --disable-channels  disable automatic channel conversions
    --disable-format    disable automatic format conversions
    --disable-softvol   disable software volume control (softvol)
    --test-position     test ring buffer position
    --test-coef=#       test coefficient for ring buffer position (default 8)
                        expression for validation is: coef * (buffer_size / 2)
    --test-nowait       do not wait for ring buffer - eats whole CPU
    --max-file-time=#   start another output file when the old file has recorded
                        for this many seconds
    --process-id-file   write the process ID here
    --use-strftime      apply the strftime facility to the output file name
    --dump-hw-params    dump hw_params of the device
    --fatal-errors      treat all errors as fatal
Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM S20_LE S20_BE U20_LE U20_BE SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE G723_24 G723_24_1B G723_40 G723_40_1B DSD_U8 DSD_U16_LE DSD_U32_LE DSD_U16_BE DSD_U32_BE
Some of these may not be available on selected hardware
The available format shortcuts are:
-f cd (16 bit little endian, 44100, stereo)
-f cdr (16 bit big endian, 44100, stereo)
-f dat (16 bit little endian, 48000, stereo)

-t,指定输出数据格式,默认是wave格式,还支持raw,voc,au,后两种格式不懂。
-D,指定record设备,设备名的格式为hw:0,0,表示0号card的0号device。
-c,指定channel数,默认是mono,即one channel,最大可以到32。但实际上,如果只有一个麦克风,就只能录制mono音轨。
-f,指定语音数据格式,有很多格式可以选择,例如S8 U8 S16_LE S16_BE U16_LE U16_BE…。
-r,指定采样频率,例如5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000。
-d,指定录音的时长。
-vv,在命令行录音的时候使用,可以看到一个由#符号组成的横向的实时音量显示。
 
实例
罗列录音设备。

root@imx6ul7d:~# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: wm8962audio [wm8962-audio], device 0: HiFi wm8962-0 [HiFi wm8962-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: wm8962audio [wm8962-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@imx6ul7d:~#

 
一边录音,一边播放。其中 -d5表示录音5秒,-Dhw0,0表示card0,device0;r48000表示采样率是48000;-c2表示两声道;-fS16_LE表示数据格式是S16_LE;-traw表示录音是raw文件。

root@imx6ul7d:~# arecord -d5 -Dhw:0,0 -r48000 -c2 -fS16_LE -traw | aplay -Dhw:0,0 -r48000 -c2 -fS16_LE
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
root@imx6ul7d:~#

 
aplay和arecord其他参考命令

root@imx6ul7d:~# arecord | aplay

用上面的命令,你就能感知到默认情况的input delay,感觉大概半秒多钟。如果这样:

root@imx6ul7d:~# arecord --period-size 128 | aplay -B 10

就几乎感觉不到延迟。以上两种情况,区别非常明显。
 
查看系统语音设备:

root@imx6ul7d:~# cat /proc/asound/cards
 0 [wm8962audio    ]: wm8962-audio - wm8962-audio
                      wm8962-audio
root@imx6ul7d:~#

 
 

amixer命令

amixer用于配置音频的各个参数。

root@imx6ul7d:~# amixer -h
Usage: amixer <options> [command]

Available options:
  -h,--help       this help
  -c,--card N     select the card
  -D,--device N   select the device, default 'default'
  -d,--debug      debug mode
  -n,--nocheck    do not perform range checking
  -v,--version    print version of this program
  -q,--quiet      be quiet
  -i,--inactive   show also inactive controls
  -a,--abstract L select abstraction level (none or basic)
  -s,--stdin      Read and execute commands from stdin sequentially
  -R,--raw-volume Use the raw value (default)
  -M,--mapped-volume Use the mapped volume

Available commands:
  scontrols       show all mixer simple controls
  scontents       show contents of all mixer simple controls (default command)
  sset sID P      set contents for one mixer simple control
  sget sID        get contents for one mixer simple control
  controls        show all controls for given card
  contents        show contents of all controls for given card
  cset cID P      set control contents for one control
  cget cID        get control contents for one control

Available advanced commands:
  sevents         show the mixer events for simple controls
  events          show the mixer events for controls
root@imx6ul7d:~#

 
alsamixer命令可以获取图形化界面,通过方向键来设置对应参数。如下所示。

root@imx6ul7d:~# alsamixer

amixer,软件设计,linux,服务器,运维
 
 
除了图形化模式,我们还可以用命令行模式。首先查看一下contents,如下。

root@imx6ul7d:~# amixer contents
numid=124,iface=CARD,name='Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=on
numid=29,iface=MIXER,name='Headphone Aux Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=7,step=0
  : values=7,7
  | dBscale-min=-7.00dB,step=1.00dB,mute=0
numid=30,iface=MIXER,name='Headphone Mixer Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=28,iface=MIXER,name='Headphone ZC Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=27,iface=MIXER,name='Headphone Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=26,iface=MIXER,name='Headphone Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=127,step=0
  : values=93,93
  | dBscale-min=-121.00dB,step=1.00dB,mute=1
numid=24,iface=MIXER,name='ADC High Performance Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=21,iface=MIXER,name='ADC L/R Swap Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=23,iface=MIXER,name='ADC Monomix Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=14,iface=MIXER,name='Capture HPF Cutoff'
  ; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0
  : values=0
numid=13,iface=MIXER,name='Capture HPF Mode'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Hi-fi'
  ; Item #1 'Application'
  : values=0
numid=12,iface=MIXER,name='Capture HPF Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
... ...

 
根据contents中的内容,可以用cget或cset读取设置参数。
查看获取某个设置项的值用amixer cget +控制参数
根据控制参数类型设置控制参数使用amixer cset +控制参数+" "+参数

以contents中的第二项为例来演示cget和cset。
 
 
读取耳机的音量为7。

root@imx6ul7d:~# amixer cget numid=29,iface=MIXER,name='Headphone Aux Volume'
numid=29,iface=MIXER,name='Headphone Aux Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=7,step=0
  : values=7,7
  | dBscale-min=-7.00dB,step=1.00dB,mute=0
root@imx6ul7d:~#

 
设置耳机的音量为5。

root@imx6ul7d:~# amixer cset numid=29,iface=MIXER,name='Headphone Aux Volume' 5
numid=29,iface=MIXER,name='Headphone Aux Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=7,step=0
  : values=5,5
  | dBscale-min=-7.00dB,step=1.00dB,mute=0
root@imx6ul7d:~#

 
cget/cset命令在controls、cset cID P、cget cID亦适用。
controls show all controls for given card
contents show contents of all controls for given card
cset cID P set control contents for one control
cget cID get control contents for one control

类似的,还有另外一套sget/sset系列的命令:
scontrols show all mixer simple controls
scontents show contents of all mixer simple controls (default command)
sset sID P set contents for one mixer simple control
sget sID get contents for one mixer simple control
 
也是同样做法,例如用scontents查看有哪些参数可以控制:

root@imx6ul7d:~# amixer scontents
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 127
  Front Left: 93 [73%] [-28.00dB] Playback [on]
  Front Right: 93 [73%] [-28.00dB] Playback [on]
Simple mixer control 'Headphone Aux',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 7
  Front Left: 7 [100%] [0.00dB]
  Front Right: 7 [100%] [0.00dB]
Simple mixer control 'Headphone Mixer',0
  Capabilities: pswitch
  Playback channels: Front Left - Front Right
  Mono:
  Front Left: Playback [off]
  Front Right: Playback [off]
... ...

 
同理,scontents的项目用sget和sset配置。

root@imx6ul7d:~# amixer sget 'Headphone',0
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 127
  Front Left: 93 [73%] [-28.00dB] Playback [on]
  Front Right: 93 [73%] [-28.00dB] Playback [on]
root@imx6ul7d:~#

 
如果想要修改对应设置,用amixer sset ,具体用法是:
amixer sset sID(控制字符串) P(支持的某个值)
其中sID,就是上面的Simple mixer control后面的那个字符串,比如’Headphone’,0
而对其设置就是,先看看其提供了哪些供你设置的值:

root@imx6ul7d:~# amixer sset 'Headphone',0 100
Simple mixer control 'Headphone',0
  Capabilities: volume pswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 127
  Front Left: 100 [79%] [-21.00dB] Playback [on]
  Front Right: 100 [79%] [-21.00dB] Playback [on]
root@imx6ul7d:~#

 
 

参考资料

https://www.cnblogs.com/cslunatic/p/3227655.html
https://cs.pynote.net/sf/linux/shell/202207131/文章来源地址https://www.toymoban.com/news/detail-741897.html

到了这里,关于Linux ALSA音频工具aplay、arecord、amixer的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一、音频基础-音频分析的重要工具(语谱图)

    通过前面的描述可以知道,声音的本质就是各种声波,那么任意某一个时刻,都不可能是只有一个频率的波,而且声波也不可能是我们理解的标准的正弦波: 而一般我们对声音进行处理时,需要分析出频率当中的有哪些频率,然后才能进行后续的处理,这时候就用到傅里叶转

    2024年02月17日
    浏览(38)
  • java根据音频流或者音频的地址获取分贝的工具类

    工具类 测试类

    2024年02月06日
    浏览(51)
  • 工具学习——使用OpenSmile提取音频特征

    openSMILE(open-source Speech and Music Interpretation by Large-space Extraction)是一个开源工具包,用于语音和音乐信号的音频特征提取和分类。openSMILE广泛应用于情感计算的自动情感识别。openSMILE完全免费用于研究目的。 在下述网页下载opensmile的安装包,链接 然后进入“/home/public/gl/Mul

    2024年02月20日
    浏览(42)
  • AI 工具合辑盘点(七)持续更新 之 AI 音频生成工具

    想要不亲自录制,快速将文本转换为语音?AI 音频生成工具 为你提供数千种语音选择 ,从“普通人”的声音到模仿演员、政治家或电影角色的合成声音,各种声音应有尽有 🗣 AI 音频生成工具可用于创建商业用途的 语音配音 (聊天机器人、商业广告、视频语音等)或者仅用

    2024年02月08日
    浏览(58)
  • 【XM音频转换工具】Ximalaya-XM-Decrypt-v0.1.2 支持批量XM音频转换成MPEG-4音频

    【XM音频转换工具】Ximalaya-XM-Decrypt-v0.1.2 支持批量XM格式音频文件转换成MPEG-4格式音频文件! 功能: 将XM格式音频转换成MPEG-4格式 步骤: 解压到Ximalaya-XM-Decrypt文件夹,文件夹包含两个文件,缺一不可。然后点击Ximalaya-XM-Decrypt-v0.1.2.exe文件!按照提示进行转换!(转换文件夹

    2024年04月27日
    浏览(54)
  • 这些工具让音频文件格式转换更简单

    小华是一位音乐爱好者,他平时喜欢下载并播放一些流行音乐。在这个过程中,他发现从不同平台上下载下来的音乐格式并不一样,而不同的播放平台也支持不同的音频格式。这令他感到烦恼,并希望通过一些音频格式转换器来帮助他解决音频格式不兼容的问题。于是,他开

    2024年02月13日
    浏览(36)
  • iZotope RX 10(音频修复和增强工具)

    iZotope RX 10是一款音频修复和增强软件,主要特点包括: 声音修复:iZotope RX 10可以去除不良噪音、杂音、吱吱声等,使音频变得更加清晰干净。 音频增强:iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处理,使音频效果更加出色。 批处理:iZotope RX 10支持批

    2024年02月06日
    浏览(43)
  • 音频软件开发中的debug方法和工具

    在音频软件开发过程中,调试(debug)是一个关键的环节,可以帮助开发者定位和修复问题。下面是一些常用的音频软件开发的调试方法和工具: 日志记录:通过在代码中插入日志语句,可以在运行时输出一些关键信息,帮助开发者了解代码执行的流程和状态。可以使用标准

    2024年02月13日
    浏览(50)
  • 你需要了解的6大AI音频生成工具

    近年来,人工智能(AI)在音频生成行业取得了巨大的进步。随着深度学习算法的进步,人工智能音频生成器现在可以创建模仿人类声音和音乐的逼真声音。 从语音合成器到音乐作曲家,这些AI音频生成工具已成为音频行业的趋势。在这篇博客中,我们将讨论变得非常逼真的

    2024年02月09日
    浏览(133)
  • AI搞钱——工具篇之视频、音频转文字

    哈喽各位小伙伴们!今天我要给大家推荐几款视频、音频转文字的好用工具。 多语言支持:支持将九十种语言进行转换,包括中文、日语、英语、韩语、德语、法语、西班牙语、葡萄牙语以及其他小语种; AI 总结翻译:提供优秀的 Open AI 技术,可用于总结视频内容并翻译字

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包