長いオーディオファイルで無音間隔を検出し、soxまたはffmpegを使用してこれを0(背景ノイズ抑制とも呼ばれる)に置き換えるにはどうすればよいですか?

長いオーディオファイルで無音間隔を検出し、soxまたはffmpegを使用してこれを0(背景ノイズ抑制とも呼ばれる)に置き換えるにはどうすればよいですか?

複数の短いファイルをリンクして作成された長いオーディオファイルがあります。私は音声セグメント間のサイレントを検出し(私の目的にはしきい値だけで十分です)、これを絶対ゼロに置き換えて背景「ノイズ」がないようにしたいと思います。録音の長さを保存することが私にとって重要です。

私はsoxがファイルの始まりと終わりで無音を検出できることを知ってsilencereverseますpad。開始+終了だけでなく、ファイルのどこからでもこれを行う方法はありますか?

UPD:Linux用の音声アクティビティ検出ツールがあるかどうかを尋ねる非常に複雑な方法かもしれません。

答え1

ソックスsilenceオプションを使用してください:

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

ファイルの前の無音時間を1秒に短縮し、間隔を0.5秒に短縮します。私の場合、2%がノイズフロアを無視します。 0%があなたに役立ちます。

-1各インスタンスを処理するようsoxに指示します。

関連情報