大きな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
にファイルを分割するだけで、(各トラックの終わりに)沈黙を保つように指示するのですか?
いくつかの小さな変更で、分割された部分のすべての無音を保持できます。元のコマンドから始めます:
silence 1 0.5 0.1% 1 0.5 0.1%
最初の3つ組の値は、0.1%を超える.5秒の音が出るまで、開始時に無音を取り除くことを意味します。 2番目のトリプレットは、0.1%未満の沈黙時間が0.5秒以上ある場合に停止することを意味します。コマンドの残りの: 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%
シンプルなサウンドファイルを再生してsox
が状況をどのように処理するかを確認する場合は、2つのサウンドファイルを簡単に作成できます。1つは1秒のトーンで構成され、もう1つは1秒の無音で構成され、それらを結合します。 silence
エフェクトへの入力として結果を表示する前に、必要に応じて一緒に。たとえば、次のように作成します。
sox -n gap.wav trim 0 1
sox -n tone.wav synth 1.001t sine C5
次に、gap-tone-gap-toneに参加し、エフェクトを使用してout.wav
を作成し、結果を聞きます。
sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1%
play out.wav