버그 수정: 오디오 왜곡 및 PipeWire 중단(Linux)¶
이 문서에서는 OBS, AnyDesk 또는 고주파수 TTS 스트림과 같은 다른 미디어 애플리케이션과 함께 SL5-aura-service를 사용할 때 발생할 수 있는 오디오 왜곡(“klirren”), 로봇 음성 아티팩트 및 시스템 오디오 중단을 해결하는 방법을 설명합니다.
증상¶
음성 출력/입력 소리가 왜곡되거나 금속성 또는 “클리링”으로 들립니다.
‘PulseAudio 연결 설정 중’ 또는 ‘잠시 기다려주세요’라는 메시지와 함께 시스템 오디오가 중단됩니다.
높은 CPU 부하 또는 동시 스트림 사용 후 총 오디오 손실.
저널 로그에는
spa.alsa: hw:X: snd_pcm_status error: No such device가 표시됩니다.
근본 원인¶
Manjaro 및 기타 최신 Linux 배포판에서는 PipeWire가 오디오를 관리합니다. 왜곡은 일반적으로 다음에서 비롯됩니다.
버퍼 언더런: 동시 스트림 간의 충돌(예: TTS/OBS가 실행되는 동안 AnyDesk가 오디오를 캡처함)
샘플링 속도 불일치: 44.1kHz와 48kHz 사이를 자주 전환합니다.
USB 타이밍 문제: 높은 버스 부하로 인해 USB 헤드셋(예: Plantronics/Poly)의 연결이 일시적으로 끊어집니다.
솔루션¶
1. 즉시 복구(“핵” 재설정)¶
오디오 스택이 고정되거나 왜곡되면 모든 오디오 관련 프로세스를 종료합니다. 즉시 자동으로 다시 시작됩니다.
# Force kill PipeWire and its PulseAudio compatibility layer
killall -9 pulseaudio pipewire pipewire-pulse
2. 예방 및 안정성 설정¶
AnyDesk 오디오 비활성화¶
AnyDesk는 종종 오디오 장치에 연결하려고 시도하여 하드웨어 충돌을 일으킵니다.
작업: AnyDesk 설정 열기 -> 오디오 -> “오디오 전송” 및 **”오디오 재생”**을 비활성화합니다.
PipeWire 샘플링 속도 수정(권장)¶
TTS 재생 중에 리샘플링 아티팩트를 방지하려면 PipeWire를 48kHz로 유지하세요.
구성 디렉터리를 생성합니다:
mkdir -p ~/.config/pipewire기본 구성
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/를 복사합니다.~/.config/pipewire/pipewire.conf를 편집하고 다음을 설정합니다.default.clock.rate = 48000
서비스 다시 시작:
systemctl --user restart pipewire pipewire-pulse wireplumber
3. 제작 후 복구(FFmpeg)¶
세션을 녹음했는데 오디오가 왜곡(“클리링”)된 경우 다음 ffmpeg 필터 체인을 사용하여 파일을 복구하세요.
권장 복구 명령¶
이 명령은 디클리퍼, 노이즈 감소 및 저역 통과 필터를 적용하여 비디오를 다시 인코딩하지 않고도 고주파수 디지털 아티팩트를 제거합니다.
테스트를 거쳤으며 매우 좋습니다.
ffmpeg -i input_video.mp4
-af "adeclip, afftdn, lowpass=f=5000, volume=1.5" \
-c:v copy reparatur_output.mp4
다음을 사용하면 더 나을 수 있습니다(테스트되지 않음).
ffmpeg -i input_video.mp4 \
-af "adeclip, afftdn, lowpass=f=3500, volume=1.8" \
-c:v copy repaired_audio_output.mp4
테스트되지 않음:
ffmpeg -i input_video.mp4 -af "arnndn=m=cb.rnnn, lowpass=f=5000" -c:v copy ki_reparatur.mp4
필터 분석:
adeclip: 디지털 클리핑 스파이크를 반올림합니다.afftdn: FFT 기반 디지털 노이즈를 줄입니다.lowpass=f=3500: 대부분의 “클리링”이 발생하는 3.5kHz 이상의 주파수를 차단합니다(목소리를 더 선명하고/따뜻하게 만듭니다).volume=1.8: 필터링 중 볼륨 손실을 보상합니다.-c:v copy: 원본 비디오 품질을 유지합니다(매우 빠름).
디버깅 도구¶
개발 중에 실시간으로 오디오 상태를 모니터링하려면:
pw-top: 실시간 오류(ERR 열) 및 버퍼 상태를 표시합니다.journalctl --user -u Pipewire: 하드웨어 연결 끊김을 확인합니다.