ffmpeg를 사용하여 배경 소음을 줄이고 오디오 클립에서 음성을 최적화


30

음성 인식을 위해 비디오 파일에서 오디오 클립을 추출합니다. 이 비디오는 모바일 / 기타 핸드 메이드 장치에서 가져 오므로 많은 노이즈가 있습니다. 음성 인식 엔진에 전달하는 음성이 선명하도록 오디오의 배경 소음을 줄이려고합니다. ffmpeg를 사용 하여이 모든 작업을 수행하고 있지만 노이즈 감소 단계에 갇혀 있습니다.

지금까지 다음 필터를 시도했습니다.

ffmpeg-20140324-git-63dbba6-win64-static\bin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav

ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav

ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav

그러나 결과는 매우 실망 스럽다. 내 추론은 음성이 300-3000 hz 범위 아래에 있기 때문에 다른 모든 주파수를 필터링하여 배경 소음을 억제 할 수 있다는 것입니다. 내가 무엇을 놓치고 있습니까?

또한 음성 향상에 사용할 수있는 weiner 필터에 대해 읽었으며 이것을 발견 했지만 사용 방법을 잘 모르겠습니다.

답변:


35

가청 음성을 분리하려면 저역 통과 필터와 고역 통과 필터를 결합하십시오. 사용 가능한 오디오의 경우 200hz 이하를 필터링 한 다음 3000hz 이상을 필터링하면 사용 가능한 음성 오디오를 유지하는 것이 좋습니다.

ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>

이 예에서는 먼저 고역 통과 필터를 추가하여 저주파수를 차단 한 다음 저역 통과 필터를 사용하여 고주파수를 차단하십시오. 필요한 경우 컷 주파수 범위 내에서 더 높은 db 주파수를 정리하기 위해 파일을 두 번 이상 실행할 수 있습니다.


미안하지만 이것은 눈에 띄는 노이즈 감소를 보이지 않습니다.
Angad

이는 낮은 수준의 배경 소음 (팬, 윙윙 거리는 소리 등)을 줄이는 데 매우 효과적이지만 오디오 품질이 약간 저하 될 수 있지만 나중에 다른 필터를 적용하면 다소 완화 될 수 있습니다.
Iain Collins

3
제 경우에는 원래의 오디오가 너무 나빴 기 때문에 백그라운드에서 약간의 물이 떨어지기 때문에 음성을 듣는 것이 거의 불가능했습니다. 나는 다음을 사용했다. 그것은 좋은 품질은 아니지만 원본보다 1000 배 더 좋습니다. -af "highpass=f=200, lowpass=f=1000"
Eric

위의 또는 오히려 ffmpeg에서 경고하는 오류가 발생합니다. [Parsed_highpass_0 @ 0x1524780] 클리핑 52 회. 게인을 줄이십시오.
shevy

6
필터를 미리보기ffplay <input file> -af lowpass=3000,highpass=200
Björn

11

FFmpeg에는 이제 노이즈 배경을 처리하기위한 2 개의 기본 필터가 있습니다.

또한, FFmpeg와 함께 ( ladspa노이즈- lv2억 제기 검색 ) 및 / 또는 (음성 잡음 제거기 검색) 필터를 어느 정도 사용할 수 있습니다 .


9

ffmpeg에는 노이즈 감소를위한 알맞은 오디오 필터가 내장되어 있지 않습니다. Audacity는 상당히 효과적인 NR 필터를 갖지만, 노이즈 샘플과 입력만으로 2 패스 작동에 사용하도록 설계되었습니다.

https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp 상단에있는 설명은 작동 방식을 설명합니다. (기본적으로 임계 값 미만인 모든 FFT 빈을 억제합니다. 따라서 해당 주파수 대역의 노이즈 플로어보다 큰 경우에만 신호를 통과 할 수 있습니다. 문제를 일으키지 않고 놀라운 작업을 수행 할 수 있습니다. 적응 형 대역 통과 필터와 같습니다. 잡음의 에너지가 전체 스펙트럼에 걸쳐 확산되기 때문에, 좁은 대역을 통과시키는 것만으로도 총 잡음 에너지는 LOT이 줄어 듭니다.

참조 오디오 노이즈 감소 : 어떻게 대담 다른 옵션 비교합니까? 작동 방식에 대한 자세한 내용과 FFT 빈 임계 값은 일반적인 상업용 노이즈 감소 필터의 기본입니다.

해당 필터를 ffmpeg로 포팅하는 것은 약간 어색합니다. 2 패스 필터 대신 2 개의 입력을 가진 필터로 구현하는 것이 가장 좋습니다. 노이즈 프로파일을 얻는 데 몇 초 밖에 걸리지 않기 때문에 전체 파일을 읽어야하는 것은 아닙니다. 그리고 어쨌든 전체 오디오 스트림에 노이즈 샘플을 공급해서는 안됩니다. 각 FFT 빈에 대한 임계 값을 설정하려면 JUST 노이즈 샘플을 확인해야합니다.

예, 2 패스가 아닌 2 차 입력이 의미가 있습니다. 그러나 이는 대부분의 ffmpeg 필터보다 사용하기가 훨씬 쉽습니다. 스트림 분할 / 시간 범위 추출 기능이있는 많은 부두가 필요합니다. 물론 여러 입력 파일에 적합한 별도의 파일에 노이즈 샘플이없는 경우 수동 개입이 필요합니다. (동일한 마이크 / 설정의 노이즈 샘플 하나가 해당 설정의 모든 클립에 적합해야합니다.)

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