SoX管道操作和数据丢失

SoX管道操作和数据丢失

当使用 SoX 进行管道操作时,我注意到文件变得比它们应该的短:

工作正常:

sox -n -r 44100 silence.wav trim 0 1
sox --combine sequence silence.wav combined.wav
soxi -D combined.wav
> 1.000000

生成的文件变得更短:

sox -n -r 44100 silence.wav trim 0 1
sox --combine sequence "|sox silence.wav -p" combined.wav
soxi -D combined.wav
> 0.998549 seconds

在 Windows 7 64 Family Edition 上使用 SoX 版本 14.4.1 进行了测试。(在 Windows 上,创建一个名为 soxi.exe 的 sox.exe 副本以使 soxi 正常运行。)

我将省略其余细节,但基本上每个管道操作都会损失 0.001451 秒。(采样率越高损失越少。)对于任何注重准确性的事情,这些毫秒加起来确实很重要,从而造成音频预期位置和实际位置之间的滞后。

在向 SoX 团队提交错误报告之前,我想弄清楚它是否真的是一个错误或者与命令行无关。是否有人愿意在他们的系统上运行这两组命令并发布结果?

提前致谢 -

答案1

在 Windows 7 64 位上:

sox "|sox source -p trim 0 10" "|sox source -p trim 0 10" destination

确实给了我同样类型的错误结果(19.997s)。

sox -t sox "|sox source -p trim 0 10" -t sox "|sox source -p trim 0 10" destination

给我正确的结果(20.0秒)。

从我在一些网站上读到的内容来看,你应该指定你使用的管道类型。而且由于“-p”相当于“-t sox -”,你应该在“管道使用”sox 调用中添加“-t sox”。

相关内容