Audacity, формат WAV и сохранение без потерь

А вы знаете, что Audacity при каждом пересохранении файла WAV (PCM) теряет качество?

«Что за глупости?» — скажете вы, — «Ведь WAV PCM не имеет сжатия, а значит должен сохраняться без потерь.»

Всё так, да не совсем.

Предположим, открыли вы  какой-то файл WAV в Audacity, ничего не меняли и сразу сделали экспорт. Пример, конечно, совершенно невменяемый, могут быть другие лучшие примеры типа WAV->FLAC->WAV (см. пример в конце) или вырезание кусочков из файла, но я специально беру этот, как самый тривиальный.

Так вот, открыли и сразу экспортировали. Если проверить md5sum у файла до и после экспорта, то они будут разные. Я не сравнивал волну визуально, но уверен, что она тоже будет другая.

В чём же дело?

Дело в том, что по-умолчанию в Audacity включена опция «Подмешивать шум» при экспорте.

Это нужно для того, чтобы скрыть  дефекты при ресэмплировании в более низкую частоту дискретизации. Но проблема в том, что примешивание шума происходит даже тогда, когда частота дискретизации не меняется. Поэтому и файлы различаются даже после тривиального пере-экспорта.

Если для опции поставить значение «Нет», то после открытия и экспорта получается идентичный файл.

Как я на это наткнулся и почему это важно?

Случай из жизни:

Нужно было передать приятелю по интернету очень длинный WAV-файл, качество необходимо было сохранить один-в-один. Интернет-канал был жёстко ограничен. Решил сжать с помощью FLAC.

Казалось бы чего проще — открыл WAV в Audacity, экспортировал в FLAC, отправил. Приятель получает файл и делает то же самое в обратном порядке — открывает FLAC в Audacity, сохраняет как WAV. Проверяем md5-сумму — файлы разные!

В итоге можно было передать и через ZIP, но из интереса начали ковырять и доковырялись до опции «Подмешивание шума». Поставили значение «Нет» и получили идентичные файлы.

Вот такие вот грабли.

Подробнее об этом здесь — https://manual.audacityteam.org/man/dither.html#Dither_applied_on_Export_-_detailed_explanation

If you have recorded in 16-bit and are only doing simple editing (cut, delete, paste, trim…) and not doing any processing (amplify, equalize, frequency filter…) then for highest accuracy dither can be set to «none». In this case, because there are no 32-bit operations prior to export there is no benefit to using dither. Exporting a 16-bit track to 16-bit with dither set to «none» will be lossless. The same applies if exporting from a 24-bit track to an uncompressed 24-bit file format with dither disabled.


Комментарии:

Добавить комментарий