Введение
Как известно, звуковые файлы имеют немалый размер, вследствие чего программистами и специалистами в области звука по всему миру постоянно предпринимаются попытки разработки алгоритма, который позволил бы максимально уменьшить размеры звуковых файлов, не потеряв при этом в качестве звучания.
Наиболее популярны на сегодня так называемые психоакустические алгоритмы сжатия, основанные на удалении из звукового потока слабо различимых человеческим слухом деталей, за счёт чего и достигается значительное (вплоть до десятикратного и даже более) сжатие. Одними из наиболее ярких представителей таких форматов являются всем известный формат MP3, а также новомодный Ogg Vorbis.
Однако из-за неизбежных потерь качества использование подобных форматов для хранения звуковой информации с возможностью её восстановления в оригинальном виде не подходит. Это приводит к необходимости использовать громоздкий PCM Wave (несжатый звуковой формат Microsoft) либо проводить обычную архивацию при помощи, например, WinRAR, с целью хоть немного сократить занимаемое звуковыми файлами дисковое пространство. Однако в последнем случае последующее воспроизведение архивного файла без предварительной распаковки невозможно.
Концепция аудиоархиватора
И вот задумался как-то ваш покорный слуга о том, почему бы не создать архиватор, изначально рассчитанный на Wave-формат, да чтобы при его использовании ещё и сохранялась возможность воспроизведения архивного файла. Вообще, идея применения специализированных алгоритмов для сжатия файлов каждого отдельного типа довольно популярна: например, для сжатия банков инструментов (сэмплов) в формате SF2 используются архиваторы SFPack и SFArk (последний, к слову, также поддерживает сжатие файлов в формате GIG); для сжатия звуковых файлов существуют специализированные архиваторы типа WaveZIP и т. д. В популярный архиватор WinRAR уже с версии 2.7 (а может, и раньше, точно не припомню) встроена возможность так называемого мультимедиа-сжатия, когда при сжатии графических, звуковых и видеофайлов в натуральном, так сказать, виде (BMP, PCM Wave и др. — т. е. к которым ещё не применены никакие алгоритмы сжатия), задействуются алгоритмы, учитывающие особенности структуры конкретных форматов, что позволяет добиться более высоких степеней сжатия файлов таких типов. Однако при архивации звукового файла при помощи того же WinRAR мы всё равно получаем файл, воспроизвести содержимое которого без его предварительной распаковки невозможно, что, мягко говоря, не совсем удобно.
Как оказалось, над созданием формата, ключевой особенностью которого и была бы возможность воспроизведения сжатого файла, уже относительно давно ломают головы программисты по всему миру, и весьма небезуспешно. Одним из решений, призванных совместить в одном формате отсутствие потерь качества, степень сжатия, не уступающую оной у архиватора типа WinRAR, сохранив при этом возможность воспроизведения архивных файлов подобно воспроизведению несжатых Wave-файлов, стали формат Monkey’s
Audio и одноимённая программа-конвертор, которые, кстати, являются совершенно бесплатными.
Алгоритм, заложенный в основу формата Monkey’s
Audio, способен обеспечить уменьшение размера звуковых Wave-файлов в среднем на 30—50 процентов. Более того, по заявлениям разработчика, в некоторых случаях может достигаться трёхкратное и более сжатие.
Monkey’s Audio изнутри
Возможности Monkey’s Audio
Программа, представляющая собой компрессор/декомпрессор, поддерживает моно- и стереофайлы с любыми частотами дискретизации, имеющие разрядность 8, 16 или 24 бит. Поддержка 24-разрядных звуковых файлов, хотя изначально формат и был ориентирован преимущественно на работу с файлами, имеющими параметры 44 кГц, 16 бит, стерео, позволяет применять формат Monkey’s
Audio и в профессиональной сфере для хранения звука с высоким качеством. Программа может работать под управлением операционных систем Windows 9x/NT/2000/XP. В будущем планируется также создать версию программы для Linux, а также обеспечить работоспособность на компьютерах от компании Apple, что существенно осложняется тем, что значительная часть кода написана на ассемблере.
При сжатии с помощью Monkey’s
Audio не происходит никаких потерь качества по сравнению с файлом-оригиналом. Более того, Monkey’s
Audio не только не снижает качество исходного файла, но и сохраняет дополнительную служебную информацию, к которой можно отнести информацию о маркерах, регионах (расставленных, например, при помощи редактора Sound Forge), а также параметры петли (loop) и проч., имеющие место в оригинальном файле. Фактически перед нами настоящий, полноценный архиватор, обладающий рядом преимуществ перед своими традиционными конкурентами типа WinRAR, как то:
более высокая степень сжатия;
более высокая скорость работы;
возможность воспроизведения сжатых файлов-архивов;
поддержка информационных тегов (подобно формату MP3) с вытекающей возможностью создания удобных в использовании и сортировке звуковых архивов.
Эффективность Monkey’s Audio
Доступно четыре различных уровня сжатия: от «Fast», соответствующего минимальной степени сжатия и максимальной скорости кодирования, до наиболее медленного «Extra High», соответствующего максимальной степени сжатия. Сравнение Monkey’s
Audio с десятком конкурентов по ряду критериев приведено в файле помощи к программе, так что те, кому интересно ознакомиться с очередной кучкой цифр, могут без труда это сделать, скачав дистрибутив программы либо отдельно Help-файл (160 КБ). Скажу лишь, что Monkey’s
Audio по степени сжатия обгоняет большинство аналогичных продуктов, включая WavPack, WaveZIP, не говоря уж о традиционных архиваторах типа WinZip и WinRAR. В рамках данной статьи, на мой взгляд, намного более целесообразным будет определить эффективность кодека на файлах с высокими параметрами звука, поскольку именно поддержка 24-битных файлов с любыми частотами дискретизации определяет перспективность формата в качестве универсального решения для хранения звука как для нынешних профессионалов в области звука, так и для более-менее рядового пользователя в не столь далёком будущем с учётом тотального перехода на формат 96 кГц, 24 бит среди производителей звуковых плат среднего ценового диапазона.
С этой целью мною был проведён эксперимент, в ходе которого сжатию подверглись два файла, содержащие одну и ту же песню (Nightwish — «Over the Hills And Far Away», если кому интересно), но записанную с разным сочетанием параметров: 44 кГц, 16 бит, стерео (качество Audio-CD, назовём кратко 16@44) и 96 кГц, 24 бит, стерео (кратко 24@96). За неимением источника с параметрами 24@96 для получения такого Wave-файла был использован оригинал 16@44, извлечённый при помощи Sound Forge 6 с соответствующего (лицензионного, разумеется) Audio-CD, в котором разрядность при помощи того же Sound Forge 6 была повышена до 24 бит, после чего была проведена передискретизация до частоты 96 кГц с максимальными установками качества.
Результат более чем убедителен: степень сжатия файла 24@96 не только не ниже, но и заметно превысила оную у файла 16@44 — размер архивного файла 24@96 составил 58,75% от размера исходного Wave-файла против 72,64% для файла 16@44 при максимальном («Extra High») уровне компрессии. Время создания сжатых файлов составило соответственно 36,82 и 82,42 секунды для файлов 16@44 и 24@96. Для сравнения: архивация файла 24@96 при помощи WinRAR 3.0 с максимальным сжатием заняла около 11 (!) минут, при этом степень сжатия составила всего 83%. Для файла 16@44 разница по сравнению с Monkey’s
Audio и не столь существенна (создание RAR-архива заняло 53 секунды, а степень сжатия составила 78%), но, как видите, перевес всё равно не в пользу традиционных архиваторов как по степени, так и по скорости сжатия. Более того, даже сжатие в режиме «Fast» (11,14 и 25,19 секунд для файлов 16@44 и 24@96 соответственно, т. е. протекающее более чем в три раза быстрее, нежели в режиме «Extra High») обеспечило степень сжатия более высокую (73,96% и 66,19% для файлов 16@44 и 24@96 соответственно), чем сжатие при помощи WinRAR 3.0, настроенного на максимально возможный уровень компрессии.
Загрузка процессора (Celeron 950) при проигрывании файлов Monkey’s
Audio посредством WinAmp 2.81 (работающего под управлением Windows XP) при помощи соответствующего плагина, входящего в дистрибутив Monkey’s
Audio, находилась в среднем на уровне 30% для 24@96-файла и 15—20% для 16@44-файла, поднимаясь до 80—90% при ручном произвольном позиционировании бегунка воспроизведения файла. Последний факт несколько настораживает, однако не стоит забывать, что основное предназначение Monkey’s
Audio всё-таки не в использовании его для хранения/коллекционирования музыки подобно формату MP3 (с сопутствующей работой в ряде других приложений параллельно с воспроизведением звуковых файлов), а в экономии места при хранении, например, мастер-копий музыкальных треков (что актуально для тех, кто серьёзно работает со звуком) на CD/DVD с сохранением возможности воспроизведения сжатых звуковых файлов. К тому же, с учётом постоянно растущих мощностей процессоров этот недостаток постепенно сам собой отойдёт на задний план.
Комплект поставки Monkey’s Audio
В комплекте с программой-конвертором Monkey’s
Audio поставляется плагин, позволяющий воспроизводить файлы в формате Monkey’s
Audio при помощи плеера WinAmp версий 2.x. Свою работу плагин выполняет добросовестно, проблем (включая поддержку кириллицы) не замечено. Из интересных особенностей плагина можно выделить возможность нормализации (т. е. подъёма громкости звука во всём файле до максимально возможного уровня) файлов в реальном времени (непосредственно во время воспроизведения). К сожалению, эта функция доступна только при воспроизведении файлов, созданных при помощи конвертора Monkey’s
Audio версий 3.0 и выше (ну не додумался разработчик раньше записывать в файл ещё и максимальное значение уровня сигнала в фонограмме

). Удобство от такой функции, по-моему, трудно переоценить.
Также плагин позволяет максимально сократить время звучания участков файла, содержащих только тишину. На практике это выглядит следующим образом: если в воспроизводимом звуковом отрывке встречается довольно продолжительный (к примеру, 20 секунд) участок, содержащий только тишину, то после включения упомянутой опции при воспроизведении тишина будет «звучать» лишь около секунды, после чего воспроизведение продолжится с момента, где снова слышен полезный сигнал. При этом за тишину принимается не только полное отсутствие сигнала, но и сигнал, очень незначительный по амплитуде. В этом плане расстраивает отсутствие возможности вручную задать пороговый уровень звукового сигнала, при котором он «считается» тишиной. Очевидно, появление такой возможности — дело времени. В настройках плагина можно задать маску, в соответствии с которой композиции будут отображаться в плэйлисте WinAmp, по умолчанию же она имеет традиционный вид «Исполнитель - Название_песни». О воспроизведении 24-битных файлов при помощи 16-битных звуковых плат и упоминать нет смысла — это уже умолчание для любого уважающего себя продукта — будь то плеер или плагин. Ну и, разумеется, имеется редактор информационных тегов, аналогичный оному у штатного MPEG-аудиоплагина WinAmp.
К сожалению, в комплекте поставки Monkey’s
Audio до сих пор отсутствует ACM-аудиокодек для использования сжатия Monkey’s
Audio в рамках формата Wave как одного из алгоритмов сжатия наряду с ADPCM, GSM и др. Наличие такого кодека позволило бы сделать использование формата Monkey’s
Audio «прозрачным» за счёт возможности работы с Wave-файлами, сжатыми по этому алгоритму, при помощи любой программы, предназначенной для работы со звуком, без дополнительных усилий со стороны разработчиков таких программных продуктов с целью реализации поддержки формата. Очевидно, следует ожидать появления такого кодека в ближайшее время. Разработчикам же программного обеспечения для добавления поддержки Monkey’s
Audio в их программные продукты пока предлагается использовать соответствующий SDK (комплект для разработки ПО) от разработчика Monkey’s
Audio. Сам разработчик объясняет факт отсутствия ACM-кодека своим желанием максимально усовершенствовать непосредственно ядро Monkey’s
Audio, воплотив в жизнь множество ещё не реализованных идей, прежде чем переходить к подобным, второстепенным, по его мнению, вопросам. При этом, однако, он не будет против, если какой-нибудь сторонний разработчик предпримет шаги в этом направлении.
Сервисные возможности Monkey’s Audio
Присутствует возможность shell-интеграции с Windows, благодаря чему возможен запуск программы-конвертора Monkey’s
Audio (с одновременным добавлением необходимого звукового файла в список файлов для сжатия/распаковки) при помощи контекстного меню, вызываемого щелчком правой кнопкой мыши на значке звукового файла. Кроме того, в программу-конвертор встроен собственный файловый менеджер. К сожалению, не предусмотрена возможность архивации без вызова программы-конвертора в соответствии с установками сжатия по умолчанию, как это реализовано, например, в WinRAR. Одним из элементов shell-интеграции является возможность просмотра свойств звуковых файлов в форматах Monkey’s
Audio (имеющих расширение *.ape — для файлов, созданных при помощи конвертора версий 3.x, или *.mac — для файлов, созданных в более ранних версиях программы) и Wave при помощи соответствующей команды контекстного меню, вызываемого при щелчке правой кнопкой мыши. Однако, на мой взгляд, нелишней была бы и просто ещё одна вкладка в стандартном диалоге свойств файла — аналогично тому, как это реализовано, например, в небольшой утилите mp3ext (
www.mutschler.de/mp3ext), предназначенной для просмотра информации об MP3-файлах, или во всё том же пресловутом WinRAR.
Поддерживается использование внешних программ-кодеров (часть из которых входит в дистрибутив) для кодирования в различные форматы, включая MP3 (при помощи lame.exe) и Ogg Vorbis (посредством oggenc.exe), хотя, на мой взгляд, востребованность такой возможности в рамках конкретного программного продукта весьма сомнительна, особенно, с учётом того, что работать с соответствующими консольными приложениями всё равно приходится фактически из командной строки.
Заключение
Несомненным плюсом формата Monkey’s
Audio и соответствующей программы-кодера от разработчика формата является их бесплатный статус. Возможность воспроизведения сжатых файлов при значительной степени сжатия выгодно выделяет этот формат среди прочих аналогов, включая традиционные архиваторы. А поддержка (встроенная либо при помощи сторонних плагинов) Monkey’s
Audio рядом популярных программных продуктов (Nero Burning ROM, BlindWrite Suite, Media Jukebox и др.) добавляет формату привлекательности. Таким образом, Monkey’s
Audio — отличный вариант для архивного хранения звуковых файлов.