sox:ミュートするとオーディオは分割されますが、ミュートは維持します。

sox:ミュートするとオーディオは分割されますが、ミュートは維持します。

私は大きなmp3に保存された複数のオーディオブックを持っています。私はこれらの大容量mp3をいくつかの小さなファイルに分割しようとしています。

オーディオファイルから無音を検出し、この「区切り記号」に基づいてオーディオファイルを分割するツールが見つかりました。

例は次のとおりです。

sox -V3 audiobook.mp3 audiobook_part_.mp3 \
silence 1 0.5 0.1% 1 0.5 0.1% : newfile : restart

audiobook.mp3これは基本的に、、、audiobook_part_001.mp3...で分割され、audiobook_part_002.mp3ここで沈黙> = 0.5秒です。

これで問題は、このコマンドがファイルを分割するだけでなく、無音も削除することです。

したがって、プレイリストで新しいファイルを再生すると、トラック/セクションが一緒に圧縮されて聞こえます。

soxそれでは、ファイルを分割するだけで(各トラックの終わりに)サイレントを維持するようにどうやって知ることができますか?

ベストアンサー1

わずかな変更で分割セクションのすべての無音を維持することができます。元のコマンドで始めます。

silence 1 0.5 0.1%   1 0.5 0.1% 

最初の三重項値は、サウンドが0.1%以上のときに0.5秒まで最初に無音(存在する場合)を削除することを意味します。 2番目の三重項は、無音時間が少なくとも0.5秒間0.1%未満の場合の停止を意味します。その後、コマンドの残りの部分は: newfile : restart新しい出力ファイルを開始し、最初からサウンドの検索を開始します。したがって、無音が始まると最初のファイルが終了し、無音が終わると2番目のファイルが始まります。

これを改善する最も簡単なオプションはsilence -l。ファイルの終わりをトリガーする0.5秒の無音が維持されます。残念ながら、より長いサイレントは次のファイルの始まりなので削除されます。間隔を長く保つ簡単な方法は、これを-lより長い検出時間(例えば2秒)と組み合わせることです。

silence -l  1 0.5 0.1%   1 2.0 0.1%

これで、少なくとも2秒のサイレントがある場合にのみ分割されますが、最初の2秒の間隔は維持されます。すべてのサイレントを失わないようにするには、最初にサイレント検出を削除します。トリプルを単一に置き換える必要があります0

silence -l  0   1 2.0 0.1%

簡単なサウンドファイルで状況の対処方法を確認したい場合は、sox1秒のトーンと1秒の無音を含む2つのサウンドファイルを簡単に作成し、それらを組み合わせて結果を発表できますsilence。効果入力。たとえば、次のように生成します。

sox -n gap.wav   trim 0 1
sox -n tone.wav  synth 1.001t sine C5

その後、ギャップサウンドを追加し、out.wav効果を作成して結果を聞きます。

sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1%
play out.wav

おすすめ記事