Audio 转换采样率时减少/消除SoX中的限幅

Audio 转换采样率时减少/消除SoX中的限幅,audio,sox,Audio,Sox,我正在使用SoX将一组wav文件修剪成16kHz、16bit、单通道wav文件(这将是其中一个初始wav文件的子集)。大多数源wav文件已经设置为该规范,但是,我刚刚发现其中一些文件具有不同的采样率。由于它将使用ProcessBuilder在Java中实现自动化,我想我可以使用以下命令: sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime&g

我正在使用SoX将一组wav文件修剪成16kHz、16bit、单通道wav文件(这将是其中一个初始wav文件的子集)。大多数源wav文件已经设置为该规范,但是,我刚刚发现其中一些文件具有不同的采样率。由于它将使用ProcessBuilder在Java中实现自动化,我想我可以使用以下命令:

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

我应该如何在不降低音频质量的情况下处理这个问题?请注意,我对信号处理一无所知。

根据该工具的建议,尝试稍微减小音量,例如在前面加上-v 0.99(或0.98等)。如此微小的体积变化是难以察觉的

例如:

sox -v 0.99 <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>
sox-v 0.99-b 16通道1速率16000微调=
如果你仍然得到剪辑,那么音频很可能从一开始就被严重剪辑(即,中断)(这在现代音乐中很常见;参见维基百科:),因此警告可以忽略,不会引入额外的失真


如评论中所述,可以提供-G选项,该选项将自动对所需的卷进行任何调整,以避免剪切(以牺牲一点额外的CPU时间为代价,即使用-G时运行稍慢)。

我遇到了这个问题。更改wav文件的编码修复了它:

sox input.wav -e signed-integer output.wav

我重新阅读了文档,意识到我错过了自动修复增益的
-G
选项。我想避免设置任意数字,因此决定使用
-G
选项。如果你在回答中附加了guard选项,我很乐意告诉你,因为它提供了大量信息。你也可以使用'--norm'选项来防止剪辑,如果音频太安静,则增加音量,使其成为无剪辑的最大音量。
sox input.wav -e signed-integer output.wav