[Linux] hang bitmélység, mintavételezési frekvencia és mintavételező beállítása

írta: CPT.Pirk, 6 éve

Van nekem egy elég faja külső hangkártyám és egy nem rossz belső. A külsőt nem tudtam maximális beállítások mellett használni Windows10 alatt, mert csak a Youtube hangja szólalt meg vele, a videólejátszók viszont nem tudtak videót lejátszani. Viszont feltűnt, hogy Linux alatt nincs ilyen gond és kíváncsi lettem, hogy milyen beállításokban működnek a hangkártyák.

Rá kellett jönnöm, hogy ahogy Windows alatt sem, úgy Linux alatt sem maximális minőségre állítva működnek a hangkártyák alapesetben.

Hangeszközök lekérdezése:
$ pacmd list-sinks | grep alsa.card
driver: <module-alsa-card.c>
card: 0 <alsa_card.pci-0000_07_04.0>
alsa.card = "0"
alsa.card_name = "Xonar DX"
driver: <module-alsa-card.c>
card: 1 <alsa_card.pci-0000_08_00.1>
alsa.card = "1"
alsa.card_name = "HDA ATI HDMI"
driver: <module-alsa-card.c>
card: 2 <alsa_card.pci-0000_0a_00.3>
alsa.card = "2"
alsa.card_name = "HD-Audio Generic"
driver: <module-alsa-card.c>
card: 4 <alsa_card.usb-C-MEDIA_Inc._USB2.0_High-Speed_True_HD_Audio-00>
alsa.card = "3"
alsa.card_name = "USB2.0 High-Speed True HD Audio"

Innen már tudjuk, hogy melyik kártya melyik. Ez pedig kiírja az előzőnek megfelelő sorrendben, hogy mi milyen beállításokban működik:
pacmd list-sinks | grep sample
sample spec: s16le 2ch 44100Hz
sample spec: s16le 2ch 44100Hz
sample spec: s16le 2ch 44100Hz
sample spec: s16le 2ch 48000Hz

Hát ez elég soványka így...

Jelen esetben a Xonar hangkártyám és a C-Media külső hangkártyám is jelentősen többet tud az alapértelmezett beállításoknál. Ez utóbbi 32biten 352800Hz-es mintavételezésre képes, vétek lenne kihagyni! Állítsuk át!

Az /etc/pulse/daemon.conf fájlban, ebben a blokkban:
; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

Átírva így:
default-sample-format = s32le
default-sample-rate = 352800
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

A módosításokhoz újra kell indítani a pulseaudio-t:
$ pulseaudio -k
$ pulseaudio --start

Ez lett az eredmény:

$ pacmd list-sinks | grep alsa.card
driver: <module-alsa-card.c>
card: 1 <alsa_card.pci-0000_07_04.0>
alsa.card = "0"
alsa.card_name = "Xonar DX"
driver: <module-alsa-card.c>
card: 2 <alsa_card.pci-0000_08_00.1>
alsa.card = "1"
alsa.card_name = "HDA ATI HDMI"
driver: <module-alsa-card.c>
card: 3 <alsa_card.pci-0000_0a_00.3>
alsa.card = "2"
alsa.card_name = "HD-Audio Generic"
driver: <module-alsa-card.c>
card: 5 <alsa_card.usb-C-MEDIA_Inc._USB2.0_High-Speed_True_HD_Audio-00>
alsa.card = "3"
alsa.card_name = "USB2.0 High-Speed True HD Audio"

$ pacmd list-sinks | grep sample
sample spec: s32le 2ch 192000Hz
sample spec: s32le 2ch 192000Hz
sample spec: s32le 2ch 192000Hz
sample spec: s32le 2ch 352800Hz

További lehetőség a mintavételező minőségének emelése. Részletek itt: [link]

A fent említett fájlban a ; resample-method = speex-float-1 sort kell cserélni, 16 bitig soxr-vh -ra, az felett pedig vhq-ra így:
resample-method=soxr-vhq

A módosításokhoz szintén újra kell indítani a pulseaudio-t:
$ pulseaudio -k
$ pulseaudio --start

Meglepetésemre, Linux alatt a C-Media hangkártyám kiválóan működik 32bit 352800Hz-es beállításokban, minden tökéletesen megy vele.

Na most lehet tesztelni, megfelelő cuccal és felvételekkel! :)