Подтвердить что ты не робот

Уменьшение/удаление обрезки в SoX при преобразовании частоты дискретизации

Я использую SoX, чтобы обрезать набор wav файлов в 16 кГц, 16-битные, моно-канальные wav файлы (которые будут подмножествами одного из начальных wav файлов). Большинство исходных wav файлов уже установлены в этой спецификации, однако я только выяснил, что некоторые из них имеют разные частоты дискретизации. Поскольку он будет автоматизирован на Java с помощью ProcessBuilder, я решил, что могу использовать следующую команду:

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

и это изменит только частоту дискретизации, если она не равна 16000 Гц. Он делает то же, что и в файлах с той же спецификацией, но в файлах с разными частотами выборки я получаю:

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

Как я должен справиться с этим, не ухудшая качество звука? Обратите внимание, что я ничего не знаю о обработке сигналов.

4b9b3361

Ответ 1

Как предложено инструментом, попробуйте уменьшить объем немного, например. предшествующим -v 0.99 (или 0.98 и т.д.). Такие небольшие изменения в объеме незаметны.

Пример:

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

Если вы по-прежнему получаете клиппинг, звук, скорее всего, сильно обрезается (т.е. отключается) для начала (это распространено в современной музыке, см. Википедия: Громкость война), и поэтому предупреждения можно игнорировать - никаких дополнительных искажений не вводится.

Как упоминалось в комментариях, может быть задана опция -G, которая автоматически сделает любую корректировку объема, необходимого для предотвращения отсечения (за счет небольшого дополнительного времени процессора, то есть он работает немного медленнее с -G).

Ответ 2

У меня была проблема. Изменение кодировки WAV файла исправлено:

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