6

次のように、SoX を使用して 2 つのオーディオ ファイルを結合してクロスフェードすることができます。

sox file1.wav file2.wav outfile.wav splice -q `soxi -D file1.wav`,0.5

ここで、soxi 置換は file1 の継続時間を取得し、0.5 はクロスフェードの長さです。これを任意の数のファイルに拡張して、間に短いクロスフェードを入れてそれらをつなぎ合わせようとしています。パイプとスクリプトの 2 つのアプローチがあるようです。Sox には -p オプションがあり、(ファイルを書き込む代わりに) 出力をパイプとして処理するように指示します。しかし、コマンドごとに多くの入力と引数があるため、その出力 (および入力? ) が後続のコマンドでどのように割り当てられるかは明確ではありません。これまでのところ、3 つのファイルに拡張しようとしている以下の行がありますが、これは機能しません。

sox -p file1.wav file2.wav splice -q `soxi -D file1.wav`,0.5 | sox -p file3.wav outfile.wav splice -q `soxi -D file3.wav`,0.5

sox のパイピングとスクリプトに関するヒントをいただければ幸いです。

4

1 に答える 1

3

私はそこにほとんどの道を歩んできました

sox --combine concatenate *.wav _merge.wav splice -q 3,1

最後のスプライス エフェクトは、最初のファイルの 3 秒にクロスフェードの開始を配置し、クロスフェードの持続時間として 1 秒を使用します (2 つのファイルの開始と終了で 0.5 秒)。出力に 3 秒以内のファイルのみを含めることを選択できるため (他の方法を使用して)、この方法は一時的な修正です。より良い答えは、現在のファイルの期間を取得し、3 の代わりにそれを置き換える方法を見つけ出すことです。

sox --combine concatenate *.wav _merge.wav splice -q $(soxi −D {}),1

ここで {} が現在のアイテムを選択した場合 ( のようにfind)、それが実行されます。しかし、それはうまくいかないようです。

于 2012-01-22T21:30:15.467 に答える