web-dev-qa-db-ja.com

SoXを使用してオーディオファイルの終わりをどのようにトリミングしますか?

Soxを使用して、オーディオファイルを最後からトリミングして5秒短縮するにはどうすればよいですか?

たとえば、これはファイルを最初からトリミングする方法です。

    sox input output trim 5000

これは、最後に5秒の無音を追加する方法です。

    sox input output pad 0 5000
29
get8p

構文はsox input output trim <start> <duration>です

例えばsox input.wav output.wav trim 0 00:35は、最初の35秒をoutput.wavに出力します。

(長さがsox input -n statを使用していることがわかります)

trimコマンドの SoXドキュメント から:

オーディオの一部を切り取ります。任意の数のpositionsを指定できます。オーディオは、最初のpositionに達するまで出力に送信されません。エフェクトは、各positionでオーディオのコピーと破棄を交互に行います。最初のpositionパラメーターに値0を使用すると、オーディオの先頭からコピーできます。

例えば、

sox infile outfile trim 0 10

最初の10秒間をコピーしますが、

play infile trim 12:34 =15:00 -2:00

そして

play infile trim 12:34 2:26 -2:00

両方とも、オーディオの12分34秒からオーディオの15分まで(つまり、2分26秒)再生し、オーディオの終了2分前に再生を再開します。

dpweのコメント ごとに、position値は前のpositionに相対的であると解釈されます、ただし、=(この場合はファイルの開始に関連する)または-(その場合は終了に関連する)で始まらない限りファイル)。

そのため、最後から5秒のトリミングはsox input output trim 0 -5になります

43
yonix

上記のコマンドは間違っています。最後の5秒間しか表示されません。実際に使用する必要があります:

sox input output reverse trim 5 reverse 

ファイルの最後から5秒をカットします。

9
tamerzg

私はSoXを初めて使用しますが、このページがオーディオトリミングの検索結果に頻繁に表示され、同様のことをしようとする多くの人に見られることに気付きました。

そういうものとして、私は個人的に最高の解決策であることがわかったものを提供したかったのです。

John Smith Optional で言及した同じ「クリック」をファイルエンドで経験しました。これは、短いフェードアウトで、オーディオの終了時に不具合のあるアーティファクトを削除でき、十分に機能することを確認できます。オーディオの終了がキーになるまでの時間を示すために、フェードアウト位置パラメーターの負の値を受け入れます。

だから私はこれよりもOPの目的を達成するためのより良い方法を見ることができません:

sox full_length.wav trimmed.wav fade 0 -5 0.01

パラメーター1は「0」なので、フェードインはありません。パラメーター2は最後の5秒間を削除します。パラメーター3は10ミリ秒のフェードを使用します

5
dingles