Цифровой звук и lossless: что это, зачем это, с чем его едят

Информация для новичков.


Цифровой звук и lossless: что это, зачем это, с чем его едят

Сообщение t.i.t.a.n » Сб фев 09, 2008 9:36 pm

Автор статьи: dmvn

Для начала немного терминологии:
DAC (Digit-to-Analog Converter) -- аналого-цифровой преобразователь -- устройство, преобразующее цифровой сигнал в аналоговую волну (или наоборот). У нас приняты обе аббревиатуры "АЦП" и "ЦАП"; у буржуев, насколько я слышал, говорят "DAC", подразумевая и то и другое, в зависимости от контекста.

Итак, "lossless" переводится с английского как "без потерь". Для начала замечу, что это не согласуется с реальностью: звук в природе существует как таковой только в аналоговом виде, то есть в виде колебаний определённой частоты. Это чисто аналоговая сущность, и наивно было бы думать, что оцифрованный сигнал можно воспроизвести так же, как оно и звучало при записи. Причин тому очень много - от неточности работы тактовых генераторов DAC до помех, возникающих в проводах, по которым передаётся аналоговый сигнал. Качественная аудиотехника (и в том числе, качественные кабели) позволяют значительно снизить (но не исключить!) влияние всяких помех. Но это выходит за рамки обсуждения -- мы будем говорить о несжатом цифровом сигнале, который не страдает от помех, а то, что он искажается при воспроизведении, придётся, скрипя зубами, пережить.

Как вообще можно хранить звук? Беда в том, что аналоговый способ хранения имеет много плюсов, но вместе с тем имеет кучу разных минусов. А именно, плёнка теряет свои магнитные свойства, винил стареет и начинает скрипеть и "цык"ать. Поэтому звук принято оцифровывать. Как это делается? Да очень просто. Вот есть у нас звуковая волна -- по сути это график функции f: R -> R. А мы вместо того, чтобы хранить её целиком, натыкаем через равные малые промежутки времени точек и запишем значения функции в этих точках (округлив, естественно, потому что вещественное число в компьютер не запишешь). Если интервалы будут маленькие, то потом функцию можно будет почти точно восстановить, проведя кривую через эти точки на графике (это называется интерполяция). Чем их больше, тем точнее будет восстановлена волна и тем точнее будет передача.

Наверное, каждый видел аудио-компакт диск (CD-DA). Так вот, на этом диске (если плюнуть на некоторые мелочи, которые нам сейчас не очень важны) записаны звуковые отсчёты с частотой 44100 гЦ по каждому каналу, при этом сами значения функции-волны представляются целым числом со знаком от -32768 до 32767. По теореме из курса функционального анализа (теорема Шеннона-Котельникова), такое квантование позволяет адекватно передавать колебания с частотой до 44100/2=22050 герц. Этого вполне достаточно для большинства ушей, однако аудиофилы считают частоту дискретизации 44 кГц недостаточной. Так оно и есть, и цифровая обработка звука ведётся на бОльших частотах дискретизации, чтобы уменьшить искажения. Кроме того, используется не 16-битный звук, а 24-битный, то есть на значения функции-волны отводится 24 бита, а не 16, как в формате CDDA. Если угодно, то частота дискретизации и разрядность звука по сути сравнимы с разрешением сканирования изображения -- чем больше, тем точнее.

Данные, которые хранятся в WAV-файле формата PCM, по сути не отличаются от того, что записано на AudioCD. То есть если бы была возможность прочитать CD как диск с данными, то мы увидели бы в явном виде то же самое, что можно увидеть в WAV-файле после того, как диск "рипнули", то есть считали с него информацию. Забудем пока про то, что сам процесс чтения может проходить с ошибками - рассмотрим некоторую идеальную ситуацию. Тогда процесс копирования и хранения музыки лишён потерь качества полностью -- что записали, то и считаем (и то же самое и будем воспроизводить). Чтобы не было проблем с ошибками чтения, используйте EAC.

Таким образом, если мы хотим хранить музыку в неизменном виде, по идее нам достаточно только уметь сграбить её в WAV-формат. Но беда в том, что стерео-аудиосигнал занимает довольно много места -- 80 минут -- около 700 мб. Поэтому придумали различные алгоритмы сжатия этого сигнала, чтобы поменьше занимало места. Так вот, все алгоритмы сжатия звука можно разделить на lossy (с потерями) и lossless (без потерь). Вот теперь название lossless полностью оправдано. Когда мы говорим lossless -- это означает, что при сжатии звука не было использовано алгоритмов, которые теряют информацию. Это значит, что мы имеем возможность восстановить цифровой сигнал до последнего бита из упакованного формата таким же, каким он и был до сжатия, а потом уже и воспроизвести его. То есть о потерьности и беспотерьности надо говорить не на уровне преобразования цифра-аналог-цифра, а на стадии хранения и упаковки цифровых данных.

Ну а что такое lossy? Разберём на примере mp3 как наиболее популярного формата. Это формат хранения звуковых данных, в котором при сжатии происходит потеря информации. Например, из спектрального разложения выбрасываются верхние частоты, потому что человек их, видите ли, плохо слышит (кстати "не слышит" не означает "не воспринимает"). Я уже писал вкратце о том, что именно происходит при сжатии в mp3, не буду повторяться -- нам важно то, что нет никакой гарантии, что исходный сигнал будет восстановлен точно.

Упражнение:
Возьмите WAV-файл, сконвертируйте в mp3 разного битрейта, потом декодируйте обратно в WAV и вычтите из одного другой, используя Adobe Audition или Sound Forge. Проверьте, что при вычитании точного нуля не получилось.

-- "И что делать?" - спросите Вы. Не хранить же теперь 700 мегов ради какой-то там разницы, которую еле слышно? Отвечаю: во-первых, не еле слышно, а очень даже -- просто послушайте Ваши mp3 на нормальной аппаратуре, почистив уши. Качество звука будет несравнимое. Во-вторых, не всё так плохо, и держать именно 700 мб на самом деле не обязательно.

Я думаю, все пользовались архиваторами. Работает проще простого -- выделяем файлы и запаковываем в архив, который чудесным образом оказывается порой заметно меньше оригинала. Однако потом (о чудо!) мы можем извлечь оттуда все файлы в целости и сохранности, не потеряв ни бита информации. Так вот, все lossless-кодеки построены по тому же принципу. Это ЗВУКОВЫЕ АРХИВАТОРЫ. Они приспособлены именно для сжатия звука без потерь. То есть в процессе работы набор отсчётов хитроумно преобразуется, но так, что можно его полностью восстановить.

Следствие.
Раздавая аудио-диск, можно смело запаковать его чем-нибудь (lossless-кодеком). Опасения типа "ну вот он же меньше стал занимать, стало быть что-то пропало" не канают! Распаковав его, мы получим точную копию того, что Вы запаковали! Так что не стесняйтесь, жмите.

Таких кодеков сейчас уже понаписано море разливанное. Перечислю самые популярные:
APE (Monkey's Audio)
FLAC (Free Lossless Audio Codec)
WAVPack (WAVPack)
и так далее -- приводить все я даже не считаю нужным. Отмечу только, что APE - довольно популярный, хотя и не кроссплатформенный, медленный и нелокальный, FLAC -- имеет поддержку многими железными устройствами, а WAVPack -- универсальный кодек, который позволяет работать с многоканальным звуком и так далее. Чуть позже мы добавим сюда ссылки на разные сравнительные таблицы и прочее.
Последний раз редактировалось t.i.t.a.n Вс фев 10, 2008 12:43 am, всего редактировалось 1 раз.
Аватара пользователя
t.i.t.a.n
Пользователь
 
Сообщения: 58
Зарегистрирован: Пт фев 01, 2008 12:00 am
Откуда: RU

Вернуться в Правила,инструкции,советы,FAQ

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8