긴 오디오 파일에서 무음 간격을 감지하고 sox 또는 ffmpeg를 사용하여 이를 0(배경 소음 억제라고도 함)으로 바꾸려면 어떻게 해야 합니까?

긴 오디오 파일에서 무음 간격을 감지하고 sox 또는 ffmpeg를 사용하여 이를 0(배경 소음 억제라고도 함)으로 바꾸려면 어떻게 해야 합니까?

여러 개의 짧은 파일을 연결하여 만든 긴 오디오 파일이 있습니다. 나는 음성 세그먼트 사이의 침묵을 감지하고(내 목적에는 임계값만으로도 충분함) 이를 절대 0으로 대체하여 배경 "잡음"이 없도록 하고 싶습니다. 녹음 길이를 보존하는 것이 나에게 중요합니다.

나는 sox가 파일의 시작과 끝에서 무음을 감지할 수 있다는 것을 알고 있으며 등을 사용하여 샘플을 제거하고 0으로 채울 수 silence있다는 reverse것을 pad알고 있습니다. 시작+끝뿐만 아니라 파일의 모든 곳에서 이 작업을 수행할 수 있는 방법이 있나요?

UPD: Linux용 음성 활동 감지 도구가 있는지 묻는 매우 복잡한 방법일 수 있습니다.

답변1

삭스 silence옵션을 사용하세요:

sox [input] [output] silence 1 1 2% -1 0.5 2%

파일의 이전 무음 시간을 1초로 줄이고 간격을 0.5초로 줄입니다. 내 경우에는 2%가 노이즈 플로어를 무시합니다. 0%가 당신에게 도움이 될 수 있습니다.

-1각 인스턴스를 처리하도록 sox에게 지시합니다.

관련 정보