29

最後に無音の MP3 ファイルがあります。この沈黙を自動的に削除したいと思います。私が言えることは、バックグラウンド ノイズではなく、「完全な」無音 (振幅 0) です。内容と沈黙の長さはさまざまです。

最初の 30 秒へのトリミング、またはを使用した X および X+N 秒へのトリミングに関する他の質問をいくつか見つけましたffmpeg。沈黙がいつ始まるかを見つける方法がある限り、同様のアプローチを使用できると思います。どうすればプログラムでそれを行うことができますか?

たとえば、考えられる解決策の 1 つは、「無音」の始まりを見つけるコマンドを用意することです。このようなシーケンスを期待します

end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3

ソリューションはを使用する必要はありませffmpegが、Ubuntu で使用できる必要があります。

4

3 に答える 3

44
sox inputfile.mp3 outputfile.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse

これにより、ファイルから 0.1 秒を超える無音部分が削除されます。端をトリミングすることだけが重要な場合は、次のように簡略化できます。

sox inputfile.mp3 outputfile.mp3 reverse silence 1 0.1 0.1% reverse

howsoxsilence作品の詳細については、こちらを参照してください。

于 2012-08-06T19:30:38.173 に答える
12

おそらく、ロスレスソリューション、つまり再エンコードを必要としない(品質が低下する)ソリューションを探しているでしょう。

mp3spltが探しているものだと思います。コマンドラインと GUI から使用できます。

sudo aptitude install mp3splt mp3splt-gtk

Debian と Ubuntu で動作するはずです。

マニュアルページから:

また、無音検出 (-s オプションを参照) を使用してファイルを自動的に分割したり、無音検出を使用してファイルをトリミングしたり(-r オプションを参照)、固定時間の長さ (-t オプションを参照) を試みることもできます。

于 2013-12-30T10:06:35.553 に答える
8

silencedetectFFmpeg オーディオ フィルターを見てください。

オーディオ ストリーム内の無音を検出します。

このフィルターは、入力オーディオ ボリュームが最小検出ノイズ持続時間以上の持続時間でノイズ許容値以下であることを検出すると、メッセージをログに記録します。

印刷された時間と期間は秒単位で表されます。

無音と見なすために必要な静寂の程度と、無音を記録する必要がある長さを調整するパラメーターがあります。

于 2012-08-06T19:28:46.460 に答える