32

私はSoXを使用して、一連のwavファイルを16kHz、16ビットのモノチャネルwavファイル(最初のwavファイルの1つのサブセットになります)にトリミングしています。ほとんどのソースwavファイルはすでにこの仕様に設定されていますが、サンプルレートが異なるものがあることがわかりました。ProcessBuilderを使用してJavaで自動化されるため、次のコマンドを使用できると考えました。

sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>

16000 Hzでない場合にのみ、サンプルレートが変更されます。同じ仕様のファイルで想定されていることを実行しますが、サンプルレートが異なるファイルでは、次のようになります。

sox WARN rate: rate clipped 48 samples; decrease volume?
sox WARN dither: dither clipped 44 samples; decrease volume?

オーディオの品質を低下させることなく、これにどのように対処する必要がありますか?私は信号処理について何も知らないことに注意してください。

4

2 に答える 2

42

ツールで提案されているように、たとえば-v 0.99(または0.98など)を前に付けて、音量を少し下げてみてください。このような小さな音量の変化は感知できません。

例:

sox -v 0.99 <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>

それでもクリッピングが発生する場合は、オーディオが最初からひどくクリッピングされている(つまり、歪んでいる)可能性があります(これは現代の音楽では一般的です。Wikipedia:ラウドネスウォーを参照)。したがって、警告は無視できます。追加の歪みは導入されていません。

コメントで述べたように、-Gオプションを指定すると、クリッピングを回避するために必要なボリュームが自動的に調整されます(CPU時間が少し余分にかかります。つまり、-Gを使用すると実行速度が少し遅くなります)。

于 2011-07-31T15:06:46.893 に答える
0

問題がありました。wavファイルのエンコーディングを変更すると修正されました:

sox input.wav -e signed-integer output.wav
于 2016-05-12T11:53:56.837 に答える