ALSA: 특정 오디오 장치에서 WAV 파일을 재생할 때 재생 속도 오류가 발생합니다.

ALSA: 특정 오디오 장치에서 WAV 파일을 재생할 때 재생 속도 오류가 발생합니다.

Ubuntu 22.04 설정에는 헤드폰, HDMI 모니터 및USB 오디오 잭(오실로스코프에 연결됨) 오실로스코프에서 볼 수 있도록 USB 오디오 잭에서 .WAV 파일을 재생하려고 합니다.

플래그 없이 aplay를 사용하면 기본 오디오 장치에서 .WAV 파일이 재생됩니다.

aplay stereo_1kHz_sine_1sec.wav

Ubuntu 설정->사운드->출력->출력 장치를 열고 출력 장치를 "AB13X USB 오디오"로 변경하면 오실로스코프에 1kHz 사인파가 표시됩니다. 마찬가지로 출력 장치를 모니터나 헤드폰으로 변경하면 해당 장치에서 1kHz 톤이 들립니다. 그래서 모든 하드웨어가 제대로 작동한다는 것을 알고 있습니다.

사운드 설정 GUI를 조작할 필요 없이 .WAV 파일을 재생하기 위해 aplay 명령에 플래그를 추가하고 싶습니다. 나의 궁극적인 목표는 자동화된 오디오 테스트를 실행하는 것이므로 스크립트로 작성할 수 있는 CLI 명령을 사용하고 싶습니다. 보고 있다aplay 매뉴얼 페이지, 대상 PCM 장치를 지정하는 -D 플래그가 있으므로 그것을 사용하기 시작했습니다.

aplay -l을 실행하여 사용 가능한 PCM 장치를 나열합니다.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 11: HDMI 5 [HDMI 5]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Generic_1 [HD-Audio Generic], device 0: ALC897 Analog [ALC897 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 4: Audio [AB13X USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

내 설정에는 통합 그래픽과 GPU가 모두 포함되어 있으므로 HDMI 옵션이 그렇게 많은 것은 놀라운 일이 아닙니다. 몇 가지 실험을 통해 내 장치가 어디에 있는지 알아냈습니다. 그러나 특정 대상 장치로 aplay를 호출하면 모니터와 헤드폰에서 재생 피치가 훨씬 높아집니다. 또한 환율이 정확하지 않다는 경고 메시지를 받았습니다.

# Right monitor, recorded as freq 2kHz
$ aplay -D hw:0,3 stereo_1kHz_sine_1sec.wav
Playing WAVE 'stereo_1kHz_sine_1sec.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
Warning: rate is not accurate (requested = 16000Hz, got = 32000Hz)
         please, try the plug plugin

# Left monitor, recorded as freq 2kHz
$ aplay -D hw:0,8 stereo_1kHz_sine_1sec.wav
Playing WAVE 'stereo_1kHz_sine_1sec.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
Warning: rate is not accurate (requested = 16000Hz, got = 32000Hz)
         please, try the plug plugin

# Headphones, recorded as freq 2.75kHz
$ aplay -D hw:2,0 stereo_1kHz_sine_1sec.wav
Playing WAVE 'stereo_1kHz_sine_1sec.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
Warning: rate is not accurate (requested = 16000Hz, got = 44100Hz)
         please, try the plug plugin

기록 빈도의 차이는 보고된 속도 오류와 일치하므로 놀랄 일이 아닙니다. 그러나 aplay가 기본 장치로 사용될 때 올바른 주파수로 .WAV 파일을 재생할 수 있지만 재생 장치가 명령줄에 지정되면 잘못된 속도/주파수를 재생하는 이유가 명확하지 않습니다.

또한 모노 .WAV 파일을 재생하는 데 문제가 있습니다. 기본 장치에서 재생할 수 있는 모노 wav 파일을 얻을 수 있으며 스테레오 버전과 동일한 사운드를 제공합니다. 그러나 재생 장치를 지정하면 모노 버전이 전혀 재생되지 않습니다.

$ aplay -D hw:2,0 1kHz_sine_1sec.wav
Playing WAVE '1kHz_sine_1sec.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
aplay: set_params:1358: Channels count non available

$HOME/.asoundrc또는 와 같은 ALSA용 구성 파일을 만들 수 있다는 내용을 읽었습니다 /etc/asound.conf. 현재 내 컴퓨터에는 해당 파일이 없습니다. 기본 오디오 장치에 배후에서 어떤 역할을 하는 ALSA 프로필이 있으면 찾을 수 없습니다. 가능하다면 추가 구성 파일을 설정하고 싶지 않습니다.

현재 선택된 기본 오디오 장치를 변경하지 않고 명령줄에서 특정 오디오 장치로 .WAV 파일을 재생하려면 어떻게 해야 합니까?

이를 수행하려면 새 프로필을 추가해야 합니까?

관련 정보