Трубопроводы SoX и потеря данных


1

При выполнении операций с использованием 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

Протестировано с версией SoX 14.4.1 на Windows 7 64 Family Edition. (В Windows создайте копию sox.exe с именем soxi.exe для работы soxi.)

Я избавлю вас от остальных деталей, но в основном КАЖДАЯ труба работает с потерей 0,001451 сек. (Немного меньше при более высоких частотах дискретизации.) Для всего, где важна точность, эти миллисекунды суммируются и становятся значительными, создавая лаги между тем, где вы ожидаете, что аудио будет, и тем, чем оно является на самом деле.

Перед тем, как отправить отчет об ошибке в команду SoX, я бы хотел выяснить, действительно ли это ошибка или она не связана с командной строкой. Будет ли кто-нибудь достаточно любезен, чтобы запустить оба набора команд в своей системе и опубликовать результаты?

Заранее спасибо -


1
Я не вижу этой проблемы с sox v14.4.1, работающим в недавней системе GNU / Linux, то есть оба примера дают 1.000000,
Thor

Ответы:


0

На windows 7 64 бит:

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

Действительно дает мне тот же самый вид ошибок (19.997).

НО

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

Дает мне правильные результаты (20,0 с).

Из того, что я прочитал на некоторых сайтах, вы должны указать тип канала, который вы используете. А поскольку «-p» эквивалентно «-t sox -», вы должны добавить «-t sox» в «pipe с помощью» вызова sox.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.