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

コマンドラインで音声ファイルのノイズを除去する方法

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

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

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

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がいちばん聞きやすかったです。