Ubuntu音频设备检测

Linux Audio Stack

早期使用OSS(开放声音系统, Open Sound System),随后ALSA (高级Linux声音体系,Advanced Linux Sound Architecture)代替了OSS。鉴于ALSA无法共用设备,现代多数Ubuntu Desktop发行版底层使用ALSA,将Pulse Audio作为管理音频的服务来共享音频设备,APP通过Pulse Audio API使用设备。

http://pc-freak.net/images/how-to-boost-increase-sound-in-linux-audio-stack-illustrated.png

查看音频设备

ALSA提供了一个alsa-utils包,其含有arecordaplay等工具来查看音频设备信息。

首先,查看系统的音频设备。如下,可以看到当前有两张卡:

  • 0: 系统自带的HDA Intel PCH声卡

  • 1: 外接的USB Camera-B4.09.24.1(PS3 EYE摄像头和麦克风阵列)

    $ cat /proc/asound/cards
    0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xdf120000 irq 126
    1 [CameraB409241  ]: USB-Audio - USB Camera-B4.09.24.1
                      USB Camera-B4.09.24.1 at usb-0000:00:14.0-6, high speed
    

查看音频输入

通过arecord命令可以看到,当前有两张音频输入卡,说明两张音频设备都有麦克风输入功能:

  • card 0: 系统自带的HDA Intel PCH声卡

  • card 1: 外接的USB Camera-B4.09.24.1(PS3 EYE摄像头和麦克风阵列)

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 0: PCH [HDA Intel PCH], device 2: ALC662 rev3 Alt Analog [ALC662 rev3 Alt Analog]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 1: CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    

查看音频输出

通过aplay命令可以看到,当前只有一张音频输出卡(card 0),说明另一张音频设备USB Camera-B4.09.24.1不带有音频输出功能。

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

检测音频设备-使用alsa-utils

这里使用alsa-utils的工具来检测音频设备。

检测音频输出

可以使用speaker-testaplay

  • 使用speaker-test测试默认音频输出(alsa-utils安装包已包含测试用的几个短wav音频),其默认使用的输出设备可能通过aplay -L查看

    $ aplay -L                            
    default
      Playback/recording through the PulseAudio sound server
    null
      Discard all samples (playback) or generate zero samples (capture)
    pulse
      PulseAudio Sound Server
    sysdefault:CARD=PCH
      HDA Intel PCH, ALC662 rev3 Analog
      Default Audio Device
    front:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      Front speakers
    surround21:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      2.1 Surround output to Front and Subwoofer speakers
    surround40:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      4.0 Surround output to Front and Rear speakers
    surround41:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      4.1 Surround output to Front, Rear and Subwoofer speakers
    surround50:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      5.0 Surround output to Front, Center and Rear speakers
    surround51:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      5.1 Surround output to Front, Center, Rear and Subwoofer speakers
    surround71:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
    hdmi:CARD=PCH,DEV=0
      HDA Intel PCH, HDMI 0
      HDMI Audio Output
    dmix:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      Direct sample mixing device
    dsnoop:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      Direct sample snooping device
    hw:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      Direct hardware device without any conversions
    plughw:CARD=PCH,DEV=0
      HDA Intel PCH, ALC662 rev3 Analog
      Hardware device with all software conversions
    
  • 使用aplay指定测试音频来测试,例如

    aplay test.wav -D plughw:CARD=PCH,DEV=0
    

检测音频输入

使用arecord录制音频输入

  • -f 表示音频格式。cd (16 bit little endian, 44100, stereo)

  • -d 录制几秒

  • -c 几个通道,如录制4个麦的麦克风阵列:-c 4

  • -D 使用ALSA的哪个设备:-D hw:1,0表示使用card 0下的device 0设备

    arecord -f cd -d 5 -c 4 -D hw:1,0 > a.pcm
    

使用aplay测试

aplay a.pcm

检测音频设备-使用pavucontrol

PulseAudio提供一个GUI的工具pavucontrol(PulseAudio Volume Control)来配置与控制音频设备。

1563776081051

检测声卡支持的最高输入采样频率

要录制指定采样频率、采样位宽的音频,需要声卡设备与其驱动都支持。下文说明如何检测Linux驱动所加载的音频设备当前能录制的最高采样频率。

arecord

列出系统当前所加载的音频输入设备。如下,card 0是Intel集成声卡,card 1是一个USB麦克风:

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 2: ALC662 rev3 Alt Analog [ALC662 rev3 Alt Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

这里拿card 1device 0做测试,命令中使用一个比较高的,如-r 60000

$ arecord -f S16_LE -r 60000 -D hw:1,0 -d 5 test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 60000 Hz, Stereo
Warning: rate is not accurate (requested = 60000Hz, got = 16000Hz)
         please, try the plug plugin (-Dplug:hw:0,0)
Aborted by signal Interrupt...

如上,命令中断,并提示所指定的设备只支持最高16000Hz的采样率。

Audacity

通过Audacity查看录制音频的Spectrogram(Audio Track -> Spectrogram),可以检测所录音频的采样率。

在Audacity中配置使用高采样率录制音频(如48000Hz),然后查看音频的Spectrogram。如下,可以看到音频高于8k区域的能量为0,说明音频录制的采样率只有16k。

1563537080712

Ref

http://www.voxforge.org/home/docs/faq/faq/linux-how-to-determine-your-audio-cards-or-usb-mics-maximum-sampling-rate

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352