Console Audio Tools — пакет утилит для проверки и конвертации аудиофайлов



    Здравствуй, уважаемый Хабр!

    Многие из нас проводили разного рода манипуляции с аудиофайлами. Часто тут хочется намного большего, чем позволяет стандартный инструмент Windows под названием «Звукозапись». Тут на помощь приходят специализированные инструменты, платные и бесплатные, которые найти не проблема. Но что делать, если требуется выполнение очень специфичных операций? Настолько специфичных, что инструменты для их выполнения стоит еще поискать? Что это могут быть за операции? Какие для этого используются инструменты? Об этом пойдет речь в этой статье, она же — обзор моего нового продукта.

    Интро


    Мне хотелось бы начать свое повествование с преамбулы, которая хорошо объяснит предпосылки, которые сподвигли меня к разработке данного ПО. В процессе же оказалось, что оно не имеет аналогов. Но об этом позже…

    Я работаю программистом и несмотря на это слушаю тяжелую музыку (да-да, существуют программисты, слушающие тяжелую музыку), и в силу этих обстоятельств уже долгое время имею достаточно дорогое хобби — коллекционирование ее на физ. носителях. И так как некоторые вещи слишком редки для какого-либо воздействия на них, кроме как хранения в коробке, я создаю копии дисков и кассет для прослушивания их на компьютере с жесткого диска, что исключает такой неприятный момент, когда последний оставшийся во всем мире альбом оказался заслушан до дыр и просто истерся лазером привода.



    Данный не очень легкий процесс осуществляется программами-рипперами, которые, по сути дела, просто снимают с диска звук в формате WAV, и, как правило, для экономии места, сжимают его без потерь (FLAC, ALAC, APE), или с потерями (mp3, ogg, wma и другие менее распространенные). Этот процесс можно сравнить с получением всем известных образов дисков. По сути, процесс снятия образов с аудио-дисков похож на снятие образов с дисков с данными, но в случае с аудио программа-риппер еще и осуществляет контроль ошибок и целостности данных и создает карту CUE, что позволяет резать один большой образ на отдельные треки на лету прямо при воспроизведении, поэтому преимущество снятия образов рипперами (что требует некоторых знаний и опыта), над простым образом диска даже не предусматривает какой-либо дискуссии и является стандартом де-факто в мире музыки. Полученные файлы называются рипами, откуда и идет название этой группы программ. Нет нужды говорить, что для того, чтобы таким образом сохранить свою коллекцию от уничтожения безжалостным временем, необходимы 100% копии материалов. Особенно при оптимальной настройке используемого для этого кодека можно добиться почти 50% сжатия аудио-материала с последующей распаковкой без каких-либо потерь в качестве (по принципу zip-архивов).

    Мда… Это, пожалуй, очень важно… И чем это можно осуществить?


    Данных программ существует не так много, ибо немногих заботит сохранение аудиоматериалов (очевидно, что нечего сохранять). В любом случае, безусловным и бессменным уже на протяжении нескольких лет лидером тут является программа Exact Audio Copy, благодаря своей просто параноидальной тонкости настроек. Действительно, данный продукт исключительно сложен в настройке для новичков, его оптимальные параметры для снятия самых точных рипов занимают несколько страниц, и при первом запуске нужно тщательно сверяться с ними как с предполетным журналом. Но это того стоит, ибо тут вы уверены, что ничто не осталось за бортом, и процесс пойдет так, как решили вы.

    Ну отлично, программа настроена, рип сделан. Но для того, чтобы не быть коричневой массой, иногда стоит своими вещами делиться с другими (оставим за кадром возгласы правообладателей и скажем, что речь идет о большинстве редчайших вещей, которые уже и вовсе не имеют правообладателей, и это — единственный способ уберечь их от уничтожения временем или от банального небытия. Но более-менее современные и известные вещи копировать и выкладывать в интернет мало того, что незаконно, но это еще и является демонстрацией неуважения к творчеству этих коллективов). Как правило (кроме отправки в личку «В Контакте» своей девушке) это осуществляется путем выкладывания в каких-нибудь известных файлобменных сетях и торрент-трекерах, где очень заботятся о качестве сделанных рипов.

    Дак о чем вообще статья?


    Да-да, я чувствую, что вам уже не терпится начать работать с образами дисков из вашей коллекции, но мы уже постепенно раскрываем основные функции данного ПО. Часто бывает так, что под файлом в формате WAV выкладывают mp3, накачанные с халявного интернета у папы с работы. Особенно это практиковалось несколько лет назад, когда на RuTracker'е еще существовал рейтинг, который удваивался у автора, если его раздача была популярной и хорошо раздавалась. Поэтому под видом хороших и качественных рипов выкладывался такой шлак, который даже моя мамка слушать не будет! Такие случаи иногда бывают и ныне, но из-за более тщательной проверки качества рипов данное явление в целом сошло на нет.

    Существует проблема и другого рода. Вполне логично, что на качество снимаемых рипов влияет корректность настройки риппера. При неправильной настройке рип может быть снят не верно, что будет чревато при произведении довольно неприятными для слуха посторонними звуками в виде щелчков (из-за пропуска или наслоения семплов), повторениями звуковых участков через определенное время (при повреждении разметки диска toc) и другими моментами, которые могут сильно мешать при наслаждении самой лютой жестью, которую только можно себе представить, так часто льющейся во время работы из моих мощных колонок! :/

    И мы пришли к самому главному: как после снятия рипа с диска быть уверенным, что он снят верно? И как админу (или пользователям) какого-нибудь популярного ресурса понять, что %username% льет шлак в виде совершенно неслушабельных вещей, и незамедлительно настучать о нем администрации, что, мол, дескать, %username%-то балуется старыми диктофонными записями! Не проблема, скажете вы, ведь админ может скачать выложенные пользователем %username% записи и прослушать их вечерком, расслабившись после работы, на которой он тоже особо-то и не напрягался… Но вот незадача, админ слушает исключительно музыку для настоящих мужиков, поэтому наотрез отказывается слушать рипы дисков Филиппа Киркорова!



    Пичаль. Может тогда попробовать проверить качество этих рипов, не слушая их? Конечно! Для этого и существуют утилиты, называемые чекерами. Основное их предназначение ясно из их названия — попытаться максимально, насколько это возможно, определить качество рипа. Одной методики для этого нет, так как проверяются несколько факторов различными методами: это считывание и сравнение контрольных сумм файлов, создание аудио-спектров и анализ частоты получаемого аудио-потока. Если рип уже создан неправильно, ни одна программа не сможет точно определить проблему (это может сделать только человеческое ухо), но определенно, при наличии соответствующих знаний и опыта, умении читать получаемые спектры частот и анализа выходных данных, можно определить, что проблема имеется. Иногда для этого достаточно даже просто просмотреть лог, который создается программой-риппером для каждого сделанного им рипа. Он может показать, что программа настроена не верно, что уже недвусмысленно намекает, что рип не отличается высокой степенью верности.

    Имеет место также явление, называемое «апконверт», при котором обычные mp3-файлы просто конвертируются в WAV и даже могут сжиматься соответствующими кодеками. С виду все выглядит вполне достойно, но вот характеристики выходного файла остаются неизменными. В этом случае чекеры практически со 100% вероятностью помогут нам определить, что файл WAV на самом-то деле не является тем, чем усердно пытается себя выставить.



    Отлично! Цель у нас имеется. Теперь разберемся с инструментами для ее достижения. Только вот незадача: часто все они консольные, а также сильно разрознены. Можно сказать, не существует нормального инструмента для таких целей. Они конечно же есть, но как правило требуют множества подчас ненужных действий, ибо операции такого рода как правило однообразны, и не требуют постоянного изменения условий. Но нам же не терпится слушать музыку, нам ведь некогда возиться с утилитами для крутых компьютерщиков, правда? Поэтому буду краток: однажды я решил, что почему-бы не объединить необходимые для этого консольные утилиты в одну удобную и простую оболочку? Сказать честно, я сам сторонник максимального удобства при работе и минимального количества действий. Поэтому помимо тяжелой музыки, я очень люблю консольные утилиты! Посудите сами: кидаем утилитку куда надо, пишем для нее простенький батник, тянем на него нужный файл, открывается консоль и выполняются нужные действия. Красота! Ну максимум можно понажимать y/n или цифры для выбора нужного действия… В общем, результатом этих исследований и манипуляций явилось ПО для работы с аудио-файлами Console Audio Tools.

    Что-то еще?


    Да, как-то так получилось, что речь в статье шла только о неизвестных большинству вещах типа проверки качества аудио-рипов, поэтому что бы устранить этот досадный недостаток, стоит рассказать, что она умеет еще:

    Конвертирование аудиофайлов (инструмент convert пакета SoX). Хоть я и ярый сторонник оригинального качества без потерь, но иногда приходится прибегать к его конвертации, хоть и при неминуемых потерях. Например, ваша девушка просто без ума от коллектива романтичных молодых мальчиков из коллектива Cannibal Corpse, поющих про лубофф. Но досадно, что она никак не может освоить достаточно специфичные методы работы с образами аудио-дисков, предпочитая слушать старые добрые mp3, отказываясь даже слушать, какое это лютейшее зло! Но мы же не хотим портить с ней отношения из-за такой мелочи, правда? Не проблема, перекиньте ей их в mp3 парой кликов. В прямом смысле парой :/

    Проверка качества аудио-файлов. Для рипов операция выполняется в несколько этапов, которые несколько отличаются в зависимости от формата файла, открытого в программе:

    1) Осуществляется декодирование сжатого файла в WAV (если необходимо) утилитами flac или ape, в зависимости от формата рипа.
    2) Выполняется получение и запись в файл хэша sha1 аудиофайла. Данный процесс осуществляется оболочкой самостоятельно.
    3) Полученный файл режется на треки по карте CUE, если таковая имеется.
    4) Выполняется проверка каждого трека утилитой auCDtect на соответствие формату WAV. Запись результата для аудио-рипов записывается в файл. Если осуществляется проверка обычного аудиофайла — полученные ею данные выводятся на экран.
    5) Осуществляется создание спектра аудиофайла инструментом spectrum утилиты SoX в формате png.
    6) Производится анализ лога снятия рипа на соответствие необходимым параметрам настройки риппера. Данный процесс осуществляется оболочкой самостоятельно. Для этого достаточно просто открыть в программе файл лога.

    Создание спектров аудиофайлов. Если Вы любитель анализировать чего либо — эта функция Вам подойдет как нельзя кстати. Кстати, эта возможность — то, с чего все начиналось.

    Создание профилей для внешних кодировщиков рипперов. Все вышеперечисленные действия возможно проделывать автоматически прямо при снятии рипа диска.

    Нарезка аудиофайлов по CUE (инструмент split пакета shntool). Возможно скажу об этом позднее…

    И чтобы как-то разбавить обзор, вашему вниманию предлагаются ее скриншоты. Вы же любите скриншоты? Я тоже люблю скриншоты. Скриншоты полиграфии моих любымых дисков! Но я отвлекся…



    Главное окно программы. Это первое, что вы видите, открыв в программе какой-либо аудиофайл.
    Тот минимализм, который мне так нравится!



    Проверяем лог сделанного рипа аудиофайла. Сколько ошибок! Наверное, этот рип скачан с такого же некачественного файлобменника! Спасибо! Лучше я закажу диск на Амазоне и сделаю рип с него сам…



    Проверяем качество отдельного аудиофайла. Вот безобразие! Под видом WAV нам подсунули мерзкий mp3! Причем программа даже не сомневается в этом (95%)!



    Попробуем еще? Отлично! Вот тут нам просто несказанно повезло! Перед нами оказался чистой воды WAV!



    Для любителей воспринимать звук не только ушами: SoX строит отличные спектры! Изображение кликабельно.

    Ну и какой же обзор программы может обойтись без ссылки на проект в SourceForge?

    Аутро


    Вот такой получился обзор, он же — мои мемуары, и он же — небольшой экскурс в интересный и познавательный музыкальный мир.

    Слушайте и любите музыку и программирование!

    Увидимся.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 31

      +1
      Как по мне, было бы удобней, так же, выбирать режимы работы через командную строку (например --create, --check и т.д.) тогда на куждую команду можно было бы создать по батнику.
        0
        То есть еще проще?) Ну в дальнейшем это можно будет, пожалуй… Просто я люблю, чтобы все было под рукой в одном месте, а не думать, для какого действия, какой батник у меня имеется…
        +2
        <offtop>Программисты, слушающие тяжелую музыку, не такая уж и редкость ;-)</offtop>
          +2
          Более того — я бы сказал, что это практически стандарт =)
            0
            Включаешь Death.FM на задник и садишься работать ;-)
              0
              Сказать честно, вы прямо таки сообщили новость для меня! Как-то так получается, что в моем окружении нет таких людей, поэтому я считал себя уникальным в этом роде) Ну что же, я рад) А-то я и думаю, почему я всегда был не таким, как все… И это, кстати, подтверждает мою теорию, о том, что такой расклад — причина сбитых биоритмов головного мозга в результате того, что человек пока еще не привык обрабатывать такие большие объемы информации. Ну а так, как мозг работает не так, как у всех, часто хочется чего-нибудь пожощще)
                0
                Или darksoul7.com \m/
                  0
                  А там глэма не много крутят?

                  P. S. И как приятно видеть таких разносторонних людей, если честно! ;)
                    0
                    Глема там практически не бывает — доминируют дез и блек (смотрите сами — история треков: www.darksoul7.com/last20.php ). То, что доктор прописал.

                    P.S. Спасибо, взаимно (-:
                      0
                      О, и правда, отличные коллективы! Правда иногда трешак и хэви проскакивает, ну да ладно… Им бы что-то типа подкастов создать.
            0
            Автор, а на чём собственно написана программа?
              0
              однажды я решил, что почему-бы не объединить необходимые для этого консольные утилиты
                0
                Это я понял. Но консольная морда писалась на чем-то. Интересуюсь на чём.
                  0
                  а, там какая-то обертка есть? пропустил, хотя видел на скрине.

                  У меня кстати не запустилась на Вин8. Выбросило исключение и все.
                    0
                    Подтверждаю, выбивает следующее:

                    Необработанное исключение: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "PhpNetCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=0 a8e8c4c76728c71" либо одну из их зависимостей. Не удается найти указанный файл. в <Global>.Run(String[] )
                      +2
                      По ходу забыл вложить пару библиотек в архив. На то оно и тестирование) Благодарю.
                        0
                        У языков такого рода имеется один недостаток (пока?): для запуска программ нужно иметь установленный компилятор специально для десктопных приложений. Благо весит он не больше 20 Мб и подойдет для запуска приложений любых версий. Положил инсталлятор в архив и сделал соответствующее пояснение при установке. Его установка будет произведена автоматически после установки основного ПО. Верю, что теперь работа не омрачится ничем)
                          0
                          Пишу на питоне, в связи с чем очень омрачен тем, что писать под винду — заранее обрекать себя на страдания с установкой у каждого пользователя интерпретатора питона. А реакция у всех одна — как это не из коробки работает? Непорядок…
                          А со сборкой в бинарник тащится куча хлама.
                            0
                            О, значит по этой части будем с вами коллегами) Да, согласен, но не так уж много языков, на которых пишут под винду, поэтому можно и поставить все на все случаи жизни.
                            Тем более, не все так плохо. Я, например, для PHP пользуюсь компилятором Phalanger (это благословленная мелкософтом польская разработка). Дак вот, при установке он предлагает, что нужно поставить: его с модулем для Visual Studio, или его отдельно. Так как я не сторонники каких-либо KDE, а пользуюсь чисто Notepadd++, я ставлю только консольный (разумеется!) компилятор. Как я уже говорил, он отдельно весит 20 Мб, и ничего не ставится дополнительно. С ним лежит множество библиотек, но они просто лежат. Их всех нужно подключать дополнительно для каждого проекта. Например, для этого проекта я подключил iconv, так как не все логи, например, в кодировке utf-8; и mbstring для многобайтовых кодировок. Так что сборка девственно чиста… И да, как-то я уже привык, что вместе с какой-то программой нужно ставить сторонние проги дополнительно. Так даже и не вижу особой проблемы)
                0
                Ах да, действительно) На компьютере :D А если серьезно, то первые версии на плюсах, потом переписал на PHP (как это ни странно, ибо работаю на нем), ибо его нынешнее развитие позволяет и не такое :/
                  0
                  А исходный код не выложен? Не нашёл ссылки на репозиторий в sourceforge.
                    0
                    Да, вы правы, ссылки на репозиторий нет. Да и там нечего редактировать. Пока жив разраб, конечно :D
                0
                Да, это тихий ужас, некоторые приличные диски имеют треки с полоской на 15кГц — типичная запись с ТЕЛЕВИЗОРА. Ну как так, а?
                  0
                  О, это и правда ужас! Срез по 16кГц уже считается лютым mp3, а уж менее — вообще идет в утиль!) И такое бывает даже официально, некоторые группы и лейблы издают в mp3 с качественной полиграфией! :/ На Рутрекере даже темка соответствующая имеется.
                    0
                    Не срез, впрочем звук туда и не добирается, а именно полоса… узкополосный писк есть от импульсов строчной развертки. Иногда, его даже слышно неискушенным ухом…
                      0
                      А. Я имел ввиду именно срез по спектру. Например, у mp3 с максимальным битрейтом 320 срез спектра идет как раз по 16кГц. А уж выше 16кГц звук доходит частенько и еще как!)
                  0
                  Новые программы, это, конечно, здорово, особенно для работы со звуком, но, автор, боюсь, есть уже куча удобных инструментов, беда в том, что вы их не нашли.

                  Я пользуюсь, например, whatmp3. Он умеет удобно транскодировать в mp3/aac/flac/alac/ogg с сохранением встроенных картинок, метаданных и .log, разбивать cue на треки, если это требуется, создавать торрент-файл с релизом. Работает под cygwin, насколько мне известно, хотя могу и ошибаться.

                  Есть еще split2flac, которой я пользовался раньше. Несмотря на название, она может резать и просто конвертировать альбом или сразу несколько во flac, aac, ogg, tta, wavpack.
                    0
                    cygwin — это, конечно, очень хорошо, но как у нее с проверкой качества рипов, которой я посвятил 90% обзора?
                      0
                      Для этого есть отдельные утилиты, вроде AuCDtect или Spectro (правда, он не автоматический). В любом случае, я не говорю, что ваша разработка бесполезна, напротив.
                        0
                        Спасибо, приятно) Только мне кажется (хотя могу и ошибаться), что вы не очень внимательно читали статью. В ней я описывал процесс, который она производит при проверке аудиофайлов, и достаточно открыто писал, что некоторые действия она выполняет через сторонние утилиты, в том числе и через auCDtect.
                          0
                          И да, проблему того, что все инструменты для таких задач сильно разрознены, я освещал так же. А тут при разработке стояла проблема их объединения в один удобный комплекс с дописыванием и вовсе несуществующих утилит.

                  Only users with full accounts can post comments. Log in, please.