PulseAudio로 실시간 노이즈 제거?


66

PulseAudio를 사용하여 실시간 노이즈 제거를 수행 할 수 있으므로 나오는 사운드 출력이 더 매끄 럽습니까?


아마도 집중적 일 수 있지만 누군가가 필터를 작성해야 할 수도 있습니다.
RolandiXor

2
@Vadi-우분투 또는 다른 PulseAudio 기반 Distro를 계속 사용하는 경우 도움이 될만한 답변을 추가했습니다. 친구에게 도움이되기를 바랍니다.
Luis Alvarado

게시물 은 비슷한 일을하는 것 같습니다
22:24에

답변:


75

펄스 오디오 모듈 module-echo-cancel

PulseAudio와 "숨겨진"옵션에 대해 많이 읽기 시작하여이 질문과 비슷한 것을 찾을 수있었습니다. 내가 찾은 것은 잡음 제거 모듈입니다. 마이크의 정적 잡음과 배경 소음을 크게 줄입니다. 기본적으로 우수한 음질로 자신의 음성 만 녹음 할 수 있다는 이점이 있습니다 (오디오 녹음의 경우) 예를 들어). 이렇게하려면 다음 단계를 수행하십시오.

  1. sudo nano /etc/pulse/default.pa

  2. 파일의 아무 곳에 나 다음 줄을 추가하십시오. 그러나 거의 마지막에 Echo Cancellation에 관한 의견을 찾을 것을 권장합니다 (~ line 140).

    load-module module-echo-cancel
    
  3. PulseAudio ( pulseaudio -k)를 다시로드 하거나 컴퓨터를 다시 시작하십시오. 입력 장치 섹션에서 새로운 노이즈 제거 옵션을 선택할 수 있어야합니다.

    스크린 샷

자세한 내용은 에코 취소 모듈 페이지 에서 확인할 수 있습니다.

입력을 기본값으로 설정

반향 제거 장치 를 기본값 으로 설정 하려면 위의 행을 다음과 같이 바꾸십시오.

load-module module-echo-cancel source_name=logitechsource

그런 다음 파일 하단에 추가

set-default-source logitechsource

이 경우 source logitechsource이름을 지정했지만 원하는 이름을 지정하고 pulseaudio를 다시 시작할 수 있습니다.

장치 이름 바꾸기

마지막으로, 사운드 설정에서 매우 긴 이름을 원하지 않는 경우 (입력 / 출력 장치를 선택하려는 경우). 내 제안은 다음과 같이 입력 장치의 이름을 바꾸는 것입니다.

load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD

그리고 다시, pulseaudio를 다시 시작하십시오. 최종 결과는 다음과 같습니다.

스크린 샷


6
쉽게 할 수 있고 일을 중단하지 않는 것-감사합니다!
Vadim Peretokin

2
탁월한 솔루션, 저를 위해 즉시 사용 가능, 감사합니다
rancho

1
랩톱에서 발생하는 대부분의 팬 소음과 녹음 음질이 훨씬 좋아졌습니다!
PJ Brunet

1
홀리 몰리-eBay에서받은 5 달러짜리 라펠 마이크에서도 놀라운 결과를 얻습니다. 스튜디오 품질은 아니지만 VOIP 통화에는 완벽하게 적합합니다.
Raymond Morgan

2
에코 모듈이 볼륨 슬라이더를 자동으로 조정하지 못하게하려면 gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224에load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1" 따라 설정할 수 있습니다.
joelostblom

16

이것은 오래된 질문이지만 동일한 문제가 있었으며 일부 인터넷 검색 (주로 불가능하다고 동의 한 사람들을 찾았 음) 및 일부 맨 페이지를 읽은 후 user2330377의 아이디어를 기반으로 솔루션을 개발했습니다.

먼저 SoX에 대한 노이즈 프로파일을 작성해야합니다. 오디오 녹음 프로그램을 사용하여 몇 초 동안 소음을 녹음 한 다음 cd저장 한 디렉토리 에 녹음하십시오 sox noise.wav -n noiseprof noise.prof.

그런 다음 ALSA 루프백 장치를 만들어야합니다.

sudo modprobe snd_aloop

이는 Jack과 달리 pulseaudio가 오디오 소프트웨어를 직접 연결할 수 없기 때문에 필요합니다. 따라서 루프백 장치를 프록시로 사용합니다.

이제 paman마이크 (또는 다른 녹음 장치)와 방금 만든 루프백 장치의 이름 을 시작 하고 찾아야합니다. 해당 항목을 찾으면 다음 명령을 실행하여 마이크에서 사운드를 녹음하고 SoX를 통해 파이프 한 다음 루프백 장치에서 재생을 시작할 수 있습니다.

pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo --latency=1msec|sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - noisered noise.prof 0.2|pacat -p -d alsa_output.2.analog-stereo --latency=1msec

(여기서 -d 매개 변수의 올바른 장치 이름을 대체해야합니다. 첫 번째 pacat 호출의 입력 장치와 두 번째의 루프백 장치 출력입니다.)

거의 다 왔습니다! 마지막 단계로, 원하는 응용 프로그램으로 사운드 녹음을 시작한 다음 시작 pavucontrol하여 "레코딩"탭으로 변경하고 녹음에 사용 된 오디오 장치 (오른쪽에 회색 버튼으로 표시)를 "루프백 오디오 모니터"로 설정하십시오. 장치". 이제 깨끗하고 노이즈없는 녹음이 가능합니다!



2

조사에 따르면 Linux 하위 시스템에서 실시간 노이즈 감소 필터링을 수행하는 알려진 방법은 없습니다. 일부 웹 사이트는 소프트웨어 필터를 사용하는 것보다 훨씬 더 나은 기술을 구입해야하는 하드웨어를 가리 킵니다.

또는 이것이 녹음 용인 경우 Audacity를 통해 사운드를 전달하고 노이즈 필터를 사용할 수 있습니다.


동정, 왜 안 되겠 어? 조사해 주셔서 감사합니다.
Vadim Peretokin

확실한! 노이즈 제거에 대한 정보는 모듈 문서 페이지에 없습니다. 내부에는 AEC (Acoustic Echo Cancellation) 알고리즘 만 module-echo-cancel있으며 webrtc | 스핑크스.
vskubriev

1

여기에 희박한 방법으로 webrtc-aec을

http://wiki.gentoo.org/wiki/PulseAudio

webrtc-aec 가능 webrtc.org AudioProcessing 라이브러리를 사용하여 음향 반향 제거, 아날로그 게인 제어, 노이즈 억제 및 기타 처리를 수행하여 VoIP를 지원하는 응용 프로그램에서 VoIP 통화를 크게 향상시킵니다.

다음은 주제에 관한 2013 년 날짜의 논문입니다 (특히 webrtc-aec가 아닌 펄스 오디오로 노이즈 제거) http://lac.linuxaudio.org/2013/papers/37.pdf

"우리는 PulseAudio를 기반으로 구축 된 다중 채널 잡음 / 에코 감소 솔루션의 첫 번째 결과를 제시하고 설계 결정에 동기를 부여했습니다.이 작업으로 인해 PulseAudio 에코 제거 및 신호 처리 프레임 워크가 크게 개선되었습니다. "버전 3.0 / 4.0 개발주기에 기여했으며 향후 임베디드 Linux 오디오 솔루션을 용이하게해야합니다. 추가 작업에는 오디오 스트림 믹싱을위한 코드 최적화,보다 효율적인 리샘플링 방법 및 다중 채널 처리 파이프 라인에서 효율적인 AEC 구현이 포함됩니다."


내가 간략하게 생각한 것은 노이즈 프로파일을 처리하고 sox를 ​​사용하여 실시간 노이즈 제거를 수행 한 다음 펄스의 입력 스트림으로 사용할 수있는 오디오 출력을 재생하는 것이 었습니다. 펄스가 이러한 방식으로 입력 및 출력 스트림을 생성하고 리디렉션 할 수 있다고 생각합니다. 즉, 재생 스트림은 입력 스트림으로 다른 응용 프로그램으로 리디렉션 될 수 있으며 재생 스트림은 장치 별이 아닌 응용 프로그램 당이므로 장치 하드웨어로 라우팅 될 필요가 없습니다.
user2330377 2016 년

pacmd를 사용하여 펄스 오디오 장치를 나열하고 pacat을 사용하여 녹음 및 재생하고 sox를 ​​사용하여 스트림에서 실시간 효과를 수행합니다.
user2330377 2016 년

스크립트를 게시하고 싶습니까?
Vadim Peretokin 2016 년

0

노이즈 제거에 대한 정보는 모듈 문서 페이지에 없습니다. module-echo-cancel에는 AEC (Acoustic Echo Cancellation) 알고리즘 만 있으며 webrtc | 스핑크스.

따라서 노이즈 제거 기능이 내장 된 마이크를 가능한 한 많이 구입해야합니다.

우분투에서 음성 녹음을 테스트하면서 몇 가지 특별한 특성을 발견했습니다.

  • Skype, Telegram은 기본 장치 (필자의 경우 front-in-mic | backward-mic 잭)의 원시 입력을 사용합니다. 이 앱에서 노이즈를 취소해야하는 경우 노이즈 제거 기능이 통합 된 헤드셋 만 사용해야합니다.

  • 브라우저에서 음성 통화를 사용해야하는 경우 브라우저에는 WebRTC와 같은 자체 음성 처리 알고리즘 구현이 있음을 명심해야합니다.

  • 또한 웹 애플리케이션 (토키, 행 아웃, appear.in 등의 사이트)은 webrtc 행 아웃 분석을 기반으로 할 수 있음에도 불구하고 자체 음성 처리 알고리즘 구현을 가질 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.