명령줄에서 녹음을 정리하시겠습니까?

명령줄에서 녹음을 정리하시겠습니까?

나는 사용했다과감하게 소음을 차단하세요이전 기록을 보면 명령줄 사용이 매우 제한되어 있습니다. 앞으로 몇 달 동안 시청할 약 100개의 짧은 강의 비디오가 있는데 시청하기 전에 한꺼번에 또는 필요에 따라 정리할 수 있는 쉬운 방법을 원합니다.

이 작업을 수행하는 데 사용할 수 있는 명령줄 도구나 널리 사용되는 언어 라이브러리가 있습니까?

답변1

허용된 답변은 실제적인 예를 제공하지 않았으므로(첫 번째 댓글 참조) 여기에 예를 들어보려고 합니다. 적절한 Ubuntu에서는 sox오디오 형식 지원을 설치해야 합니다.

sox

처음 설치sox형식 지원(mp3 포함):

sudo apt install sox libsox-fmt-*

그런 다음 파일에 대해 명령을 실행하기 전에 먼저 프로필을 작성하고 노이즈 샘플을 만들어야 합니다. 이것이 가장 중요한 부분입니다. 노이즈가 발생하는 가장 좋은 시간을 선택해야 하며 말이 없는지 확인해야 합니다. 이 예에서는(또는 음악/신호를 보존하려고 시도합니다):

ffmpeg -i source.mp3 -ss 00:00:18 -t 00:00:20 noisesample.wav

이제 해당 소스를 기반으로 구성 파일을 만듭니다.

sox noisesample.wav -n noiseprof noise_profile_file

마지막으로 파일에서 노이즈 감소를 실행합니다.

sox source.mp3 output.mp3 noisered noise_profile_file 0.31

noise_profile_file윤곽이 있는 곳에 0.30가치가 있습니다. 값은 0.20에서 0.30 사이가 가장 좋으며, 0.3보다 큰 값은 매우 공격적이며, 0.20보다 작은 것은 약간 부드러워 시끄러운 오디오에 적합합니다.

사용해 보시고 다른 설정 팁을 찾으면 댓글을 달아 설정을 찾아 조정해 보세요.

일괄 처리하는 방법

소음이 비슷하면 모든 mp3 파일에 동일한 프로필을 사용할 수 있습니다.

ls -r -1 *.mp3 | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31

또는 폴더 구조가 있는 경우:

tree -fai . | grep -P ".mp3$" | xargs -L1 -I{} sox {}  {}_noise_reduced.mp3  noisered noise_profile_file 0.31

답변2

보세요sox

인용하다 man sox:

SoX - Sound eXchange, the Swiss Army knife of audio manipulation

[...]

SoX is a command-line audio processing  tool,  particularly  suited  to
making  quick,  simple  edits  and to batch processing.  If you need an
interactive, graphical audio editor, use audacity(1).

따라서 audaciy의 명령줄 대체 명령으로 매우 적합할 것입니다!


noisered녹음을 정리하는 실제 작업과 관련하여 다음과 같은 필터를 살펴보세요.소음 감소 필터 대담성:

man sox | less -p 'noisered \['

           [...]
   noisered [profile-file [amount]]
           Reduce noise in the audio signal by profiling and filtering.
           This effect is moderately effective at  removing  consistent
           background  noise such as hiss or hum.  To use it, first run
           SoX with the noiseprof effect on a  section  of  audio  that
           ideally  would  contain silence but in fact contains noise -
           such sections are typically found at the  beginning  or  the
           end  of  a recording.  noiseprof will write out a noise pro‐
           file to profile-file, or to stdout if no profile-file or  if
           `-' is given.  E.g.
              sox speech.wav -n trim 0 1.5 noiseprof speech.noise-profil
           To  actually remove the noise, run SoX again, this time with
           the noisered effect; noisered will reduce noise according to
           a  noise  profile  (which  was generated by noiseprof), from
           profile-file, or from stdin if no profile-file or if `-'  is
           given.  E.g.
              sox speech.wav cleaned.wav noisered speech.noise-profile 0
           How  much  noise  should be removed is specified by amount-a
           number between 0 and 1 with a default of 0.5.   Higher  num‐
           bers will remove more noise but present a greater likelihood
           of removing wanted components of the audio  signal.   Before
           replacing  an  original  recording with a noise-reduced ver‐
           sion, experiment with different amount values  to  find  the
           optimal one for your audio; use headphones to check that you
           are happy with the results, paying particular  attention  to
           quieter sections of the audio.

           On  most systems, the two stages - profiling and reduction -
           can be combined using a pipe, e.g.
              sox noisy.wav -n trim 0 1 noiseprof | play noisy.wav noise
           [...]

답변3

또는 무인 방법을 사용할 수 있습니다. IMHO, 사용자가 30시간의 오디오를 가지고 있다고 주장하기 때문에 더 좋습니다(아마도 소리가 없고 소음만 있는 부분을 찾기 위한 많은 파일이 있을 것입니다).

내 접근 방식:

  • 설치하다소음
  • 설치하다소음 감소
  • 설치하다ffmpeg(필요하다면)
  • 쉘 스크립트를 작성하십시오(또는 아래와 같이 필요에 맞게 조정하십시오).
#!/bin/bash
for input_file in "$@"; do
    file_name="${input_file%.*}"
    # Convert file to ".wav" 48k (needed by rnnnoise)
    ffmpeg -threads 2 -y -i "$input_file" -vn -ar 48000 "${file_name}.48k.wav"
    # Actual denoise
    denoiseit "${file_name}.48k.wav" "${file_name}.rnnoise.wav";
    
    # Convert to ogg
    ffmpeg -threads 2 -y -i "${file_name}.rnnoise.wav" "${file_name}.rnnoise.ogg"
    
    # Remove wav temporary files
    rm "${file_name}.48k.wav"
    rm "${file_name}.rnnoise.wav"
done;

Bash/셸에서의 사용법:

$ sh denoise.script.sh *.mp4
$ sh denoise.script.sh *.mp3
$ sh denoise.script.sh *.mkv
$ sh denoise.script.sh *.avi

도움이 되었기를 바랍니다.

관련 정보