🎶

ffmpegでmp3のノイズを除去する方法

2022/11/17に公開

音声ファイルのノイズを除去しようと思って調べました。コマンドラインでできる方法がよかったのでffmpegのコマンドを探したところ、

https://www.amirsharif.com/using-ffmpeg-to-reduce-background-noise/

こちらでffmpegをつかって動画から音声ファイルを切り離しノイズ除去までやっていました。当方macOSなのでffmpeghomebrewでインストールしました。音声除去コマンドは↓

ffmpeg -i <audiopath> -af arnndn=m=<path to model> <output file>

(リンク先のコマンドに<output file>を追加しました)
<path to model>に入るのはなんでしょうか。-afオプションはffmpegのfiltergraphをつくるようです(公式)。いろいろなフィルターがあると思いますが、ニューラルネットワークでトレーニングされたものがありました。

https://github.com/GregorR/rnnoise-models

このリポジトリをローカルにクローンします。このリポジトリには5種類のフィルターがあります。

General Voice Speech
General marathon-prescription leavened-quisling orig
Recording conjoined-burgers beguiling-drafter somnolent-hogwash

注意事項として、Speechは「話し声」、Voiceが「笑い声などをふくむ人間の発する音」とされています。それぞれの名前に意味はないそうです。

具体例
変換するファイルが~/audio.mp3で、フィルターのリポジトリを~/rnnoise-models/にクローンしたとすると、

ffmpeg -i ~/audio.mp3 -af arnndn=m=~/rnnoise-models/conjoined-burgers-2018-08-28/cb.rnnn

この例ではconjoined-burgersのフィルタを使っています。5つのフィルターを試しましたが、今回はconjoined-burgersがいちばん聞きやすかったです。

Discussion