ALSA 설정 조정을 통해 Ubuntu 24.04의 소리 왜곡 문제를 해결하세요

Ubuntu 24.04에서 발생하는 소리 왜곡은 애플리케이션, PipeWire, WirePlumber, ALSA, 커널 드라이버 또는 오디오 하드웨어 자체 등 여러 요인에서 비롯될 수 있습니다. 효과적인 해결 방법은 먼저 문제가 발생하는 장치를 파악한 후, 버퍼 또는 장치 설정을 하나씩 변경하는 것입니다. 일반적인 Ubuntu 24.04 데스크톱 환경에서 PipeWire는 ALSA 위에 위치하고 WirePlumber는 ALSA 장치를 관리하므로, 대부분의 사용자는 시스템의 기본 ALSA 설정을 변경하기 전에 WirePlumber를 통해 노출되는 ALSA 속성을 조정해야 합니다.

Ubuntu 24.04에는 원래 PipeWire 1.0.4가 포함되어 있었고, 현재 Ubuntu의 Noble 패키지는 최신 0.5 구성 형식 대신 WirePlumber 0.4.17을 계속 사용하고 있습니다. 이 버전 정보는 WirePlumber 0.4가 Lua 코드 조각을 사용하기 때문에 중요합니다 ~/.config/wireplumber/main.lua.d/. 최신 공식 문서에서 볼 수 있는 새로운 wireplumber.conf.d구문은 WirePlumber 0.5 이상 버전에 적용됩니다. 구성 파일을 복사하기 전에 설치된 버전을 확인하십시오.

공식 참조: Ubuntu 24.04 LTS 릴리스 노트 , Ubuntu의 Noble 업데이트용 WirePlumber 패키지 , WirePlumber 0.4 ALSA 구성 참조 및 ALSA PCM 플러그인 참조 .

빠른 참조: 먼저 시도해 볼 만한 것

징후첫 번째 실용 점검잠재적 수정 사항
CPU 부하 시 잡음 발생올바른 싱크대를 확인하고 물이 빠지는 곳이 없는지 살펴보세요.ALSA 주기 크기를 1024프레임 또는 2048프레임과 같이 더 크게 설정하여 테스트해 보세요.
왜곡 현상은 하나의 USB DAC에서만 발생합니다.정확한 ALSA/PipeWire 노드를 식별하십시오.해당 노드에만 규칙을 적용하고, 전체 노드에 적용되는 규칙은 피하십시오.
기기가 유휴 상태에서 깨어날 때 발생하는 소음몇 초간의 침묵 후 재생해당 노드의 일시 중단 시간 제한을 늘리거나 비활성화하십시오.
ALSA만 사용하는 레거시 애플리케이션의 문제점앱을 테스트할 때 aplay또는 명시적인 PCM을 사용하십시오./를 사용 ~/.asoundrc하여 사용자별 설정을 사용하세요.plugdmix
하나의 샘플링 속도에서의 왜곡44.1kHz 및 48kHz 재료를 테스트합니다.지원되는 하드웨어 샘플링 속도를 선호하고 필요할 때 PipeWire가 리샘플링하도록 하십시오.

1. ALSA 하드웨어와 오디오 스택을 식별합니다.

먼저 재생 장치 목록을 확인하고 어떤 오디오 서버가 활성화되어 있는지 확인하십시오. 활성화된 서버가 hw:0,0스피커라고 단정하지 마십시오. HDMI, USB 헤드셋, 웹캠 및 도킹 스테이션은 부팅할 때마다 카드 번호가 변경될 수 있습니다.

aplay -l
wpctl status
pactl info
wireplumber --version
pipewire --version
내장 아날로그 장치와 HDMI 재생 장치를 연결했을 때 Ubuntu 터미널에서 aplay -l 명령의 출력 결과가 표시됩니다.

설명: 이 aplay -l목록은 내장 아날로그 재생 장치와 HDMI를 구분하여 표시하므로, 잘못된 카드에 ALSA 설정을 적용하는 것을 방지할 수 있습니다.

"PulseAudio (on PipeWire)"라는 메시지가 표시되는 것은 pactl infoUbuntu 24.04에서 정상적인 현상입니다. PulseAudio 호환 인터페이스는 PipeWire에서 제공됩니다. 기본 Ubuntu 24.04/Noble에서는 wireplumber --version다른 빌드를 설치하지 않은 경우 일반적으로 0.4.x 시리즈가 표시됩니다.

2. 설정을 변경하기 전에 왜곡을 확인하십시오.

무작위 웹 동영상으로 변화를 판단하기보다는 반복 가능한 테스트를 사용하세요. 짧은 WAV 파일 speaker-test이나 잘 알려진 음악 트랙을 사용하면 전후 비교가 더 의미 있게 이루어집니다. 또한 아날로그 출력, HDMI, 블루투스, USB에서 문제가 동일하게 발생하는지 확인하세요. 특정 경로에서만 문제가 발생한다면 해당 경로에 대한 해결책을 찾아야 합니다.

speaker-test -c 2 -t wav
aplay /usr/share/sounds/alsa/Front_Center.wav

USB 장치의 경우 커널은 스트림 정보를 아래에 노출합니다 /proc/asound/. 정확한 경로는 카드마다 다르므로 /proc/asound/cards카드 번호를 무턱대고 복사하지 말고 먼저 경로를 확인하십시오.

우분투 터미널에 ALSA PCM 스트림 정보가 표시됩니다. 여기에는 48000Hz 주파수, 두 개의 채널, S16_LE 형식이 포함됩니다.

캡션: ALSA 스트림 정보는 재생 스트림의 활성 샘플 속도, 채널 수 및 샘플 형식을 나타낼 수 있습니다. 카드 번호는 하드웨어에 따라 다릅니다.

3. 현재 사용자 구성을 백업합니다.

/usr/share편집하기 전에 기존 ALSA 또는 WirePlumber 재정의 설정을 모두 보존하십시오. 패키지 업그레이드 시 시스템 파일이 덮어쓰여질 수 있으므로 사용자 수준 변경이 하위 파일 편집보다 안전합니다 .

cp -a ~/.asoundrc ~/.asoundrc.backup 2>/dev/null || true
mkdir -p ~/.config/wireplumber/main.lua.d
cp -a ~/.config/wireplumber/main.lua.d ~/.config/wireplumber/main.lua.d.backup 2>/dev/null || true

만약 이전에 WirePlumber 0.5용 가이드에서 설정 파일을 복사했다면, Ubuntu 24.04 순정 버전에서 테스트하기 전에 해당 파일을 삭제하거나 다른 위치로 옮겨주세요. WirePlumber 0.4와 0.5는 설정 파일 형식이 다릅니다.

4. WirePlumber 0.4를 통해 ALSA 버퍼 동작을 조정합니다.

Ubuntu 24.04에서는 WirePlumber가 ALSA 기반 PipeWire 노드를 생성하고 구성하기 때문에 이 설정이 ALSA 수준에서 가장 중요한 조정 사항입니다. WirePlumber 공식 문서에서는 api.alsa.period-size주기 크기를 샘플 단위로, api.alsa.headroom하드웨어 및 소프트웨어 포인터 간의 추가 버퍼링으로 설명합니다. 대부분의 USB 장치는 배치 장치로 처리되며, 주기 크기는 인터럽트 빈도와 버퍼링 동작 모두에 영향을 미칩니다.

사용자 규칙을 생성하세요:

nano ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua

wpctl status문제가 있는 출력 노드만 대상으로 하는 규칙을 사용하세요. 먼저 또는 를 사용하여 노드 이름을 가져옵니다 pw-cli list-objects Node. 그런 다음 다음 예제를 적용하세요.

local rule = {
  matches = {
    {
      { "node.name", "matches", "alsa_output.*" },
    },
  },
  apply_properties = {
    ["api.alsa.period-size"] = 1024,
    ["api.alsa.headroom"] = 0,
  },
}

table.insert(alsa_monitor.rules, rule)

1024를 보편적인 마법의 값으로 간주하지 마십시오. 이는 보수적인 테스트 기준점일 뿐입니다. 왜곡이 지속되면 512, 1024, 2048을 차례로 비교해 보십시오. 주기를 길게 하면 일부 시스템에서 스케줄링 지연에 대한 허용 오차가 향상되지만 지연 시간이 증가합니다. 반대로 주기를 짧게 하면 지연 시간은 줄어들지만 인터럽트 빈도가 증가하고 부하가 걸린 시스템에서 언더런이 발생할 수 있습니다. 작업 부하에 대해 안정적인 가장 작은 값을 유지하십시오.

기기에서 메모리 맵 I/O에 문제가 발생하면 WirePlumber는 해당 기능도 노출합니다 api.alsa.disable-mmap. 상위 문서에서는 이를 호환성 유지를 위한 대체 기능으로 명시적으로 설명하고 있으며, 읽기/쓰기 접근 속도가 느려지므로 문제가 mmap 동작과 명확하게 연관되지 않는 한 이 기능을 활성화하지 말 것을 권고합니다.

["api.alsa.disable-mmap"] = true,

또 다른 장치별 옵션은 다음과 같습니다 session.suspend-timeout-seconds. DAC가 절전 모드에서 깨어날 때마다 팝 노이즈나 왜곡이 발생하는 경우, 타임아웃 시간을 늘리거나 0해당 노드의 절전 기능을 비활성화하여 원인을 파악하는 데 도움이 될 수 있습니다. 절전 기능을 비활성화하면 ALSA 장치가 계속 작동하게 되므로 기본 권장 사항이 아니라 절충안으로 고려해야 합니다.

5. .asoundrc 파일은 애플리케이션이 ALSA를 직접 사용하는 경우에만 사용하십시오.

사용자별 설정은 ~/.asoundrcPipeWire를 우회하고 ALSA PCM을 직접 여는 구형 애플리케이션에 유용할 수 있습니다. 또한 고정 샘플 속도 또는 소프트웨어 믹싱 동작을 테스트하는 데에도 유용할 수 있습니다. 그러나 ALSA 기본값을 전역적으로 재정의하면 PipeWire ALSA 플러그인과 충돌할 수 있으므로 가능하면 .을 교체하는 대신 명명된 PCM을 사용하는 것이 좋습니다 pcm.!default.

예를 들어, ALSA의 dmix플러그인은 명시적인 rate, period_size, 및 buffer_size값을 지원합니다. 명명된 테스트 PCM은 다음과 같은 형식을 가질 수 있습니다.

pcm.stable_test {
    type plug
    slave.pcm "stable_dmix"
}

pcm.stable_dmix {
    type dmix
    ipc_key 2048
    ipc_key_add_uid true
    slave {
        pcm "hw:0,0"
        rate 48000
        period_time 0
        period_size 1024
        buffer_size 4096
    }
}

hw:0,0[실제 카드 및 장치 정보]로 교체한 aplay -l다음 시스템 기본 설정을 변경하지 않고 테스트하십시오.

aplay -D stable_test /usr/share/sounds/alsa/Front_Center.wav
우분투에서 GNU nano를 사용하여 하드웨어 PCM, 48000Hz 주파수, 주기 크기 1024, 버퍼 크기 4096으로 사용자 .asoundrc 파일을 편집하는 모습입니다.

캡션: 사용자별로 .asoundrc제어된 테스트를 위해 고정된 ALSA 매개변수를 정의할 수 있습니다. 직접 hw대상은 자동 형식 변환을 건너뛰므로 사용 시 주의해야 합니다.

ALSA 프로젝트는 dmix슬레이브 정의에서 값을 지정하지 않으면 기본 구성이 고정되어 있다고 언급하며, plug플러그인은 형식 및 속도 변환을 수행할 수 있다고 설명합니다. 따라서 모든 프로그램이 하드웨어에 직접 접근하도록 하는 것보다 명명된 plugPCM과 별도로 튜닝된 dmixPCM을 결합하는 것이 실험에 더 안전합니다.

6. 사용자 오디오 서비스를 재시작하고 다시 테스트하십시오.

WirePlumber 규칙을 변경한 후에는 사용자 오디오 스택을 다시 시작하십시오. 오디오를 활발하게 사용 중인 애플리케이션은 먼저 종료하십시오.

systemctl --user restart wireplumber pipewire pipewire-pulse

변경 전 사용했던 테스트 자료를 다시 재생합니다. 설정 > 소리를 열고 예상 출력 장치와 프로필이 여전히 선택되어 있는지 확인합니다.

우분투 설정의 소리 패널에서 아날로그 스테레오 출력 프로필이 선택된 내장 스피커가 표시됩니다.

캡션: 오디오 서비스를 재시작한 후, 왜곡 문제가 해결되었는지 확인하기 전에 Ubuntu가 의도한 출력 장치와 프로필을 여전히 선택하는지 확인하십시오.

수정 사항이 효과가 있었는지 판단하는 방법

  • 동일한 테스트 파일이 잡음, 윙윙거리는 소리, 잘림 또는 짧은 끊김 없이 반복 재생됩니다.
  • 기기가 대기 상태였다가 다시 활성화된 후에도 왜곡 현상은 재발하지 않습니다.
  • 일반 데스크톱 애플리케이션, 브라우저 및 화상 통화는 여전히 예상되는 출력 장치를 사용합니다.
  • 지연 시간은 사용 사례에 허용 가능한 수준입니다. 음악 재생은 라이브 모니터링이나 게임보다 버퍼링에 더 민감하게 반응할 수 있습니다.
  • 이 수정 사항은 로그아웃 후 다시 로그인하거나 재부팅해도 안정적으로 유지됩니다.

ALSA 설정 변경이 적절한 해결책이 아닐 때

증상이 하드웨어 클리핑, 케이블 느슨함, 아날로그 입력 과다, USB 허브 고장 또는 스피커 불량인 경우 버퍼 값을 계속 늘리지 마십시오. 또한 믹서 레벨을 확인하십시오 alsamixer. 볼륨이 거의 100%에 가까울 때만 발생하는 왜곡은 스케줄링 문제가 아니라 게인 관련 문제일 수 있습니다.

커널 또는 펌웨어 업데이트 후 문제가 발생했다면, 오디오 규칙을 점점 더 복잡하게 만들기 전에 GRUB 메뉴에서 지원되는 다른 커널을 테스트해 보세요. 블루투스만 문제가 있는 경우, ALSA 주기 설정보다는 블루투스 코덱/프로필에 집중하세요. HDMI만 문제가 있는 경우, 먼저 HDMI 프로필과 수신기/모니터를 확인하세요.

롤백 체크리스트

  • 삭제하거나 이름을 변경하세요 ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua.
  • 백업에서 복원 ~/.asoundrc하거나 테스트 전용 파일을 삭제하세요.
  • 재시작 wireplumber, pipewire, 및 pipewire-pulse.
  • 기본 동작이 복원되었는지 확인하기 위해 wpctl status다시 실행하십시오 .speaker-test

결론적으로

Ubuntu 24.04의 경우, 시스템 전체를 교체하기보다는 WirePlumber 0.4 ALSA 규칙을 특정 노드에 적용하는 것부터 시작하십시오 .asoundrc. 정확한 출력 노드를 식별하고, 한 번에 하나의 속성만 변경하면서, 변경 후 동일한 테스트 오디오를 비교하십시오. 주기 크기는 1024와 같은 값이 적절한 진단 시작점이지만, 정확한 값은 장치와 작업 부하에 따라 달라집니다. 테스트 결과가 특정 동작을 나타내는 경우에만 disable-mmap변경 사항을 일시 중지하거나 사용자 지정 PCM을 사용하는 것을 고려하십시오.dmix

댓글 남기기

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

TestDisk와 PhotoRec을 사용하여 손실된 파티션과 파일을 복구하는 방법을 알아보세요. 원본 드라이브를 보호하고 안전하게 스캔한 다음 복구된 데이터를 다른 디스크에 저장하세요.

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

웹캠이나 이미지 파일을 사용하여 CoBang으로 Linux에서 QR 코드를 스캔하세요. Flatpak 카메라 접근 관련 설치 옵션, 설정 단계 및 문제 해결 방법을 참조하세요.

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하세요. 노출, 색상, 깜빡임 감소 및 기타 지원되는 제어 기능을 조정하고 호환되는 비디오 모드를 확인하세요.

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하려면 JetBrains Toolbox 또는 독립 실행형 tar.gz 아카이브를 사용하세요. Snap 및 Arch AUR 옵션도 제공됩니다. Java는 이미 포함되어 있습니다.

리눅스에 Cisco Packet Tracer를 설치하는 방법

리눅스에 Cisco Packet Tracer를 설치하는 방법

Cisco Packet Tracer 9.0.1 for Ubuntu 64비트 버전을 다운로드하고, APT를 사용하여 DEB 패키지를 설치한 다음, 터미널에서 라이선스에 동의하고 로그인하여 실습을 시작하십시오.

XFCE 4에서 듀얼 패널을 설정하는 방법

XFCE 4에서 듀얼 패널을 설정하는 방법

각 디스플레이마다 별도의 XFCE 4 패널을 생성하고, 두 번째 패널을 올바른 출력에 할당하고, 위치와 크기를 조정한 다음, 필요한 실행기와 상태 항목을 추가합니다.

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

GNOME Disks 또는 dd 명령어를 사용하여 Linux에서 CD-ROM ISO 파일을 생성합니다. 광학 드라이브를 식별하고, 복사 과정을 모니터링하고, 이미지 유효성을 검사하고, 손상된 디스크나 오디오 디스크에 다른 도구가 필요한 경우를 알 수 있습니다.

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

GIMP를 사용하여 Linux에서 사진 배경 제거하기: 피사체를 따라 그리고, 선택한 배경을 삭제하고, 투명도를 유지한 다음, 재사용 가능한 PNG 파일로 내보낼 수 있습니다.

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear를 공식 사이트에서 무료로 다운로드하세요. Windows, macOS, Linux 패키지를 비교하고, 데이터 파일을 설치한 후 첫 비행을 시작하세요.

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

브라우저에서 Google Tasks를 열거나, Chrome 바로가기 또는 앱 스타일 실행을 추가하고, 캘린더 및 Gmail을 통해 날짜별 할 일을 관리하세요.