コマンドラインで録音を整理しますか?

コマンドラインで録音を整理しますか?

使った大胆に騒音を遮断する以前の履歴を見ると、コマンドラインの使用は非常に制限されています。今後数ヶ月間視聴する約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

お役に立てば幸いです。

関連情報