Ubuntu音頻設(shè)備檢測

Linux Audio Stack

早期使用OSS(開放聲音系統(tǒng), Open Sound System),隨后ALSA (高級Linux聲音體系,Advanced Linux Sound Architecture)代替了OSS。鑒于ALSA無法共用設(shè)備,現(xiàn)代多數(shù)Ubuntu Desktop發(fā)行版底層使用ALSA,將Pulse Audio作為管理音頻的服務(wù)來共享音頻設(shè)備,APP通過Pulse Audio API使用設(shè)備。

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

查看音頻設(shè)備

ALSA提供了一個alsa-utils包,其含有arecord、aplay等工具來查看音頻設(shè)備信息。

首先,查看系統(tǒng)的音頻設(shè)備。如下,可以看到當(dāng)前有兩張卡:

  • 0: 系統(tǒng)自帶的HDA Intel PCH聲卡

  • 1: 外接的USB Camera-B4.09.24.1(PS3 EYE攝像頭和麥克風(fēng)陣列)

    $ 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命令可以看到,當(dāng)前有兩張音頻輸入卡,說明兩張音頻設(shè)備都有麥克風(fēng)輸入功能:

  • card 0: 系統(tǒng)自帶的HDA Intel PCH聲卡

  • card 1: 外接的USB Camera-B4.09.24.1(PS3 EYE攝像頭和麥克風(fēng)陣列)

    $ 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命令可以看到,當(dāng)前只有一張音頻輸出卡(card 0),說明另一張音頻設(shè)備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

檢測音頻設(shè)備-使用alsa-utils

這里使用alsa-utils的工具來檢測音頻設(shè)備。

檢測音頻輸出

可以使用speaker-testaplay。

  • 使用speaker-test測試默認(rèn)音頻輸出(alsa-utils安裝包已包含測試用的幾個短wav音頻),其默認(rèn)使用的輸出設(shè)備可能通過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個麥的麥克風(fēng)陣列:-c 4

  • -D 使用ALSA的哪個設(shè)備:-D hw:1,0表示使用card 0下的device 0設(shè)備

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

使用aplay測試

aplay a.pcm

檢測音頻設(shè)備-使用pavucontrol

PulseAudio提供一個GUI的工具pavucontrol(PulseAudio Volume Control)來配置與控制音頻設(shè)備。

1563776081051

檢測聲卡支持的最高輸入采樣頻率

要錄制指定采樣頻率、采樣位寬的音頻,需要聲卡設(shè)備與其驅(qū)動都支持。下文說明如何檢測Linux驅(qū)動所加載的音頻設(shè)備當(dāng)前能錄制的最高采樣頻率。

arecord

列出系統(tǒng)當(dāng)前所加載的音頻輸入設(shè)備。如下,card 0是Intel集成聲卡,card 1是一個USB麥克風(fēng):

$ 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...

如上,命令中斷,并提示所指定的設(shè)備只支持最高16000Hz的采樣率。

Audacity

通過Audacity查看錄制音頻的Spectrogram(Audio Track -> Spectrogram),可以檢測所錄音頻的采樣率。

在Audacity中配置使用高采樣率錄制音頻(如48000Hz),然后查看音頻的Spectrogram。如下,可以看到音頻高于8k區(qū)域的能量為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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容