WebSound.ru Home
    Главная | Комментарии | Архив выпусков | Форум и чат | AudioTag.info | Музоблог | reTracked | Авторский блог  



  Поиск:

Поиск по WebSound.Ru:
Поиск в Интернете:
Powered by




  Партнеры, реклама:




Audio watermarking
TrustedAudio.com



 

"Заметки на полях" (FAQ)
Часто задаваемые вопросы (и ответы) на околозвуковые темы технического характера

Дата создания: 25.Apr.2000
Последнее обновление: 26.Jan.2008

Автор: Александр Радзишевский (Alex Y. Radzishevsky)
Copyright (C) 1998-2007, Alex Y. Radzishevsky

Все права в отношении данного документа принадлежат автору. При воспроизведении данного текста или его части сохранение Copyright обязательно. Коммерческое использование допускается только с письменного разрешения автора.


Содержание:

- Алгоритмы кодирования аудио:
О стандартах MPEG и об их истории (updated)
Что такое CBR и VBR?
Каковы отличия режимов CBR, VBR и ABR применительно к кодеру Lame?
Какие методы кодирования стерео информации используются в алгоритмах MPEG (и других)?
Какие параметры предпочтительны при кодировании MP3?
Какие алгоритмы компрессии существуют (альтернативы MP3 и др.)?
Как соотносятся сложность музыкальной композиции и сложность кодирования с потерями?
Что такое "эффект пустышки"?

- Другие вопросы:
Можно ли осуществить преобразование из одного потокового формата аудио данных в другой?
Можно ли осуществить преобразование WAV в MIDI, WAV в трекерный модуль?
Можно ли выделить/убрать из аудио потока звучание конкретного инструмента или голоса?
Какие существуют способы преобразования MIDI в WAV?
Какой метод сравнения двух аудио сигналов можно признать наиболее точным?
Что такое стеганография?
Задача: оцифровать материалы со множества аудио кассет и отреставрировать. Как?
Что такое оконная функция в анализе Фурье, какие типы оконных функций существуют?
Каковы принципы работы динамического и компандерного шумоподавителей для магнитофонов?
Что такое DVD-A (или кратко о стандарте DVD Audio)?
Что такое SACD?
Чем отличаются CD-DA, DVD-A и SACD?
Что такое LFE?
Что мы слышим?

 

 

О стандартах MPEG и об их истории

Аббревиатура MPEG расшифровывается как "Moving Picture Coding Experts Group", дословно - "Группа экспертов по кодированию подвижных изображений". MPEG ведет свою историю с января 1988 года, она была создана Международной организацией стандартов (International Standards Organization или сокращенно ISO) и Международной электротехнической комиссией (International Electro-Technical Commission или сокращенно IEC). Группа была образована для создания стандартов кодирования подвижных изображений и аудио информации. Начиная с первого собрания в мае 1988 года группа начала расти и выросла до необычайно плотной группы специалистов. Обычно, в собрании MPEG принимают участие около 350 специалистов из более чем 200 компаний. Встречи проводятся около трех раз в году. БольшАя часть участников MPEG - это индивидуальные специалисты, занятые в тех или иных научных и академических учреждениях. Это из области истории. Теперь о практике. На сегодняшний день MPEG разработаны следующие стандарты и алгоритмы:

  • MPEG-1 (ноябрь 1992) - стандарт кодирования, хранения и декодирования подвижных изображений и аудио информации;
  • MPEG-2 (ноябрь 1994) - стандарт кодирования для цифрового телевидения;
  • MPEG-4 - стандарт для мультимедиа приложений: версия 1 (октябрь 1998) и версия 2 (декабрь 1999);
  • MPEG-7 - универсализованный стандарт работы с мультимедиа информацией, предназначенный для обработки, фильтрации и управления мультимедиа информацией. Не является новым стандартом кодирования, а представляет собой лишь переработанный и измененный набор инструментов для работы с мультимедиа данными.

По порядку.

1) Рассмотрим комплект MPEG-1 (ISO/IEC 11172-3). Этот комплект, в соответствии со стандартами ISO, включает в себя три алгоритма различного уровня сложности: Layer (уровень) I, Layer II и Layer III. Общая структура процесса кодирования одинакова для всех уровней. Вместе с тем, не смотря на схожесть уровней в общем подходе к кодированию, уровни различаются по целевому использованию и внутренним механизмам (что во многом определяет степень схожести алгоритмов, "вышедших" из MPEG-1). Для каждого уровня определен свой формат записи бит-потока и свой алгоритм декодирования. Алгоритмы MPEG основаны в целом на изученных свойствах восприятия звуковых сигналов слуховым аппаратом человека (то есть кодирование производится с использованием так называемой "психоакустической модели").

Комплект MPEG-1 предусмотрен для кодирования сигналов, оцифрованных с частотой дискретизации 32, 44.1 и 48 КГц. Как было указано выше, комплект MPEG-1 имеет три уровня (Layer I, II и III). Эти уровни имеют различия в обеспечиваемом коэффициенте сжатия и качестве звучания получаемых потоков. Layer I позволяет сигналы 44.1 КГц / 16 бит хранить без ощутимых потерь качества при скорости потока 384 Кбит/с, что составляет 4-х кратный выигрыш в занимаемом объеме; Layer II обеспечивает такое же качество при 194 Кбит/с, а Layer III – при 128 (или 112). Выигрыш Layer III очевиден, но скорость компрессии при его использовании самая низкая (надо отметить, что при современных скоростях процессоров это ограничение уже не заметно). Фактически, Layer III позволяет сжимать информацию в 10-12 раз без ощутимых потерь в качестве.

Кратко об алгоритме кодирования. Входной цифровой сигнал сначала разбивается на частотные подполосы. Дальнейший процесс зависит от Layer'a.

В случае Layer III сигнал раскладывается на частотные составляющие в каждой полосе (косинусное преобразование, MDCT). Дальнейшая обработка сигнала нацелена на упрощение сигнала с целью переквантования коэффициентов спектра. Полученный спектр очищается от заведомо неслышных составляющих – низкочастотных шумов и наивысших гармоник, то есть фактически фильтруется. На следующем этапе производится значительно более сложный психоакустический анализ слышимого спектра частот. Это делается в том числе с целью выявления и удаления «замаскированных» частот (частот, которые не воспринимаются слуховым аппаратом в виду их приглушения другими частотами), резких всплесков и проч. После всех этих манипуляций из цифрового аудио сигнала исключается больше половины информации. Кроме этого, базируясь на том, что человеческое ухо способно различать направление звучания только средних частот, то в случае, когда кодируется стерео сигнал, его можно превратить в совмещенный стерео (joint stereo). Это значит, что фактически происходит отделение верхних и нижних частот и их кодирование в моно варианте (средние частоты остаются в режиме стерео). Далее, в случае появления, например,  «тишины» в одном из каналов, «пустующее» место заполняется информацией либо повышающей качество другого канала, либо просто не поместившейся до этого. В довершение ко всему проводится сжатие уже готового бит-потока упрощенным аналогом алгоритма Хаффмана (Huffman), что позволяет также значительно уменьшить занимаемый потоком объем.

В случае Layer II идея упрощения сигнала остается той же, однако переквантованию подвергаются не коэффициенты MDCT, а амплитудный сигнал в каждой частотной подполосе.

В июле 2001 компании Coding Technologies и Tomson Mulimedia анонсировали продолжение кодека MP3 (MPEG-1 Layer III) - MP3 Pro. Этот кодек представляет собой доработанный вариант MP3. Подробнее об этом кодеке можно прочесть в обсуждении вопроса о существующих аудио кодеках.

 

2) Стандарт MPEG-2 был специально разработан для кодирования ТВ сигналов вещательного телевидения, поэтому на рассмотрении MPEG-2 мы бы не останавливались, если бы в апреле 1997 этот комплект не получил «продолжение» в виде алгоритма MPEG-2 AAC (MPEG-2 Advanced Audio Coding – продвинутое аудио кодирование, ISO/IEC 13818-7). Стандарт MPEG-2 AAC стал результатом кооперации усилий института Fraunhofer, компаний Sony, NEC и Dolby. MPEG-2 AAC является технологическим приемником MPEG-1. Поскольку между опубликованием MPEG-2 AAC и его стандартизацией прошло достаточно времени, свет увидели несколько разновидностей этого алгоритма: Homeboy AAC, AT&T a2b AAC, Astrid/Quartex AAC, Liquifier AAC, FAAC (Freeware Audio Coder), Mayah AAC, PsyTEL AAC, QuickTime AAC, Sorenson и другие (некоторые из этих кодеров даже не полностью соответствовали стандарту - например, Astrid/Quartex и HomeBoy AAC). Процесс стандартизации AAC был достаточно длинным, поэтому многие из приведенных кодеров первоначально были (а, многие, и до сих пор) не совместимы между собой в формате выходного потока.

Надо сказать, что помимо MPEG-2 AAC, стандарт MPEG-2 предусматривает MPEG-2 BC (backward compatible - обратно совместимый), являющийся фактически многоканальной версией (до 5 каналом + 1 дополнительный) аудио кодека MPEG-1.

Также, как и в комплекте аудио стандартов кодирования MPEG-1, в основе алгоритма AAC лежит психоакустический анализ сигнала. Вместе с тем, алгоритм AAC имеет в своем механизме множество дополнений, направленных на улучшение качества выходного аудио сигнала. В частности, используется другой тип преобразований, улучшена обработка шумов, изменен банк фильтров, а также улучшен способ записи выходного бит-потока. Кроме того, AAC позволяет хранить в закодированном аудио сигнале т.н. «водяные знаки» (watermarks) – информацию об авторских правах. Эта информация встраивается в бит-поток при кодировании таким образом, что уничтожить ее становится невозможно не разрушив целостность аудио данных. Эта технология (в рамках Multimedia Protection Protocol) позволяет контролировать распространение аудио данных (что, кстати, является препятствием на пути распространения самого алгоритма и файлов, созданных с помощью него). Следует отметить, что алгоритм AAC не является обратно совместимым (NBC – non backwards compatible) с уровнями MPEG-1 не смотря на то, что он представляет собой продолжение (доработку) MPEG-1 Layer I, II, III.

MPEG-2 AAC предусматривает три различных профиля кодирования:
1. Main
2. LC (Low Complexity)
3. SSR (Scalable Sampling Rate).

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

Профиль SSR (Scalable Sampling Rate) кодирует данные в несколько "слоев" (layers) от очень низкого битрейта к высшим битрейтам (вплоть до lossless-компрессии). Такой подход позволяет, например, транслирующим серверам передавать пользователям аудио на нужном битрейте без необходимости транскодирования данных.

Говоря о качестве звука, можно сказать, что поток AAC (Main) 96 Кбит/с обеспечивает качество звучания, аналогичное потоку MPEG-1 Layer III 128 Кбит/с. При компрессии AAC 128 Кбит/с, качество звучания ощутимо превосходит MPEG-1 Layer III 128 Кбит/с.

 

3) Стандарт MPEG-4 - это особая статья. MPEG-4 не является просто алгоритмом сжатия, хранения и передачи видео или аудио информации. MPEG-4 - это новый способ представления информации, это - объектно-ориентированное представление мультимедиа данных. Стандарт оперирует объектами, организует из них иерархии, классы и прочее, выстраивает сцены и управляет их передачей. Объектами могут служить как обычные аудио или видео потоки, так и синтезированные аудио и графические данные (речь, текст, эффекты, звуки...). Такие сцены описываются на специальном языке. Не будем останавливаться подробно на этом стандарте - это тема отдельного обширного обсуждения. Следует только сказать, что в качестве средств компрессии аудио в MPEG-4 (ISO/IEC 14496-3) используется комплекс нескольких стандартов аудио кодирования: улучшенный алгоритм MPEG-2 AAC, алгоритм TwinVQ, а также алгоритмы кодирования речи HVXC (Harmonic Vector eXcitation Coding) - для битрейтов 2-4 Кбит/с и CELP (Code Excited Linear Predictive) - для битрейтов 4-24 Кбит/с. Кроме того, MPEG-4 предусматривает множество механизмов обеспечения масштабируемости и предсказания. Однако в целом, стандарт MPEG-4 AAC, предусматривающий правила и алгоритмы кодирования аудио, является продолжением MPEG-2 AAC. MPEG-4 AAC стандартизует следующие типы объектов (именно так называются профили в MPEG-4 AAC):

MPEG-4 AAC LC (Low Complexity)
MPEG-4 AAC Main
MPEG-4 AAC SSR (Scalable Sampling Rate)
MPEG-4 AAC LTP (Long Term Prediction)
MPEG-4 Version 2
MPEG-4 Version 3 (включая HE-AAC)
MPEG-4 ALS (Audio Lossless Coding)
MPEG-4 SLS (Scalable Llossless coding)

Как видно, первые три позаимствованы у MPEG-2 AAC, четвертый же является новшеством.
LTP основан на методах предсказания сигнала и является более сложным алгоритмом, нежели остальные, что сильно сказывается на скорости компрессии.
Version 2 - это пакет стандартов, расширающих некоторые механизмы кодирования стандарта MPEG-4.
Version 3 - это еще одно расширение стандарта MPEG-4. Основным нововведением в стандарт MPEG-4, введенным Version 3, является стандартизация (в мая 2003) алгоритма HE-AAC (High Efficiency AAC), известного также под именем aacPlus (подробнее об этом стандарте). Существуют две версии HE-AAC: HE-AAC v1 (базисная версия, включающая технологию aacPlus), а также HE-AAC v2 - расширение HE-AAC с поддержкой Parametric Stereo (PS).

Инструментарий MPEG-4 AAC содержит несколько интересных технологий. Напримери, PNS - Perceptual Noise Substitution. Суть PNS довольно проста. Основываясь на идее, что один шум можно подменить другим, искусственным, PNS предполагает подмену шума, присутствующего в кодируемом сигнале, другим шумом, искусственным. Это позволяет генерировать искусственный шум на стадии декомпрессии сигнала (воспроизведении) и не передавать настоящий шум сигнала. Иными словами, при кодировании исходного сигнала происходит регистрация шума и запоминание его основных параметров (вместо непосредственного кодирования шумового сигнала), а на стадии воспроизведения - генерация искусственного шума вместо настоящего.

 

MPEG-4 ALS - стандарт беспотерьного кодирования, утвержденный и включенный в MPEG-4 в конце 2005 года. MPEG-4 ALS разработан корпорацией NTT, его разработка велась с 2002 года. Цитата с iXBT: "В MPEG-4 ALS включен ряд технологий, в том числе коэффициенты PARCOR, предложенные NTT более 30 лет назад, а также технологические новшества, созданные в рамках сотрудничества между NTT и Токийским университетом. Партнерами NTT в процессе стандартизации выступили Технический Университет Берлина, североамериканская корпорация RealNetwoks и сингапурская I2R." Основные характеристики MPEG-4 ALS:

• Поддержка PCM (ИКМ)-потоков с разрешением до 32 бит и самыми разными частотами дискретизации (включая 16/44.1, 16/48, 24/48, 24/96, 24/192);
• Многоканальная/мультитрековая поддержка до 65536 каналов;
• Поддержка данных в формате 32-bit IEEE с плавающей точкой.

Важно заметить, что стандарт MPEG-4 AAC расширяется. К нему добавляются и наверняка еще будут добавлены дополнительные типы объектов.

Немаловажно заметить, что по состоянию на март 2006 года можно сказать, что внедрение и использование различными разработчиками профайлов Main и LTP остановлено или прекращено. Основным "рабочим" профайлом можно считать профайл LC.

 

MPEG-4 SLS (Scalable Lossless coding) - совместная разработка Infocomm Research и института Fraunhofer. MPEG-4 SLS никак не связан с MPEG-4 ALS. Расширение SLS предусматривает аудио поток с несколькими уровнями данных, позволяющий его декодирование как в беспотерьном виде (точное декодирование исходного аудио потока), так и в потерьном виде на низком битрейте. Иными словами, поток в формате SLS легко масштабируем в том смысле, что качество декодируемого сигнала находится в зависимости от того, "сколько данных" из этого потока, было использовано для декодирования. Поток MPEG-4 SLS стандартным неспециализированным MPEG-4-плеером воспринимается как в формате MPEG-4 AAC LC. Более того, из файла в формате SLS можно извлечь файл в формате AAC LC без необходиомсти перекодирования, а лишь просто средствами извлечения одного слоя данных и большого файла. Чуть подробнее о кодеке SLS:
http://www.chiariglione.org/mpeg/technologies/mp04-sls/

 

4) Стандарт MPEG-7 вообще в корне отличается от всех иных стандартов MPEG. Стандарт разрабатывался не для установления каких-то рамок для передачи данных или типизации и описания данных какого-то конкретно рода. Стандарт предусмотрен как описательный, предназначенный для регламентации характеристик данных любого типа, вплоть до аналоговых. Использование MPEG-7 предполагается  в тесной связи с MPEG-4.

 

Для удобства обращения со сжатыми потоками, все алгоритмы MPEG разработаны таким образом, что позволяют осуществлять декомпрессию (восстановление) и воспроизведение потока одновременно с его получением (download) – потоковая декомпрессия «на лету» (stream playback). Эта возможность очень широко используются в Интернет, где скорость передачи информации ограничена, а с использованием подобных алгоритмов появляется возможность обрабатывать информацию прямо во время ее получения не дожидаясь окончания передачи.

Вернуться к "Содержанию"

Что такое CBR и VBR? 

Как известно, результатом кодирования сигнала с помощью такого алгоритма, как, например, MPEG-1 Layer III (MP3) (и множества других алгоритмов), является бит-поток с фреймовой (блочной) структурой. Это объясняется тем, что кодирование исходного потока производится не целиком, а по частям. То есть фактически исходный поток разделяется на блоки определенной фиксированной длины, затем каждый блок (фрейм) в отдельности подвергается кодированию и результат (кодированный блок информации) направляется в результирующий поток (будь то файл или поток данных).

CBR (Constant Bit Rate - постоянный битрейт) - это такой способ кодирования исходного аудио потока, при котором все его блоки (фреймы) кодируются с одинаковыми параметрами (с одинаковым битрейтом). Иными словами, битрейт на всей протяженности (всех фреймов) результирующего потока является постоянным.

VBR (Variable Bit Rate - переменный битрейт) - это такой способ кодирования исходного аудио потока, при котором каждый отдельный блок (фрейм) кодируется со своим битрейтом. Выбор битрейта, оптимально подходящего для кодирования данного фрейма, осуществляется самим кодером путем анализа "сложности сигнала" в каждом отдельном фрейме.

Вернуться к "Содержанию"

Каковы отличия режимов CBR, VBR и ABR применительно к кодеру Lame? 

Прежде чем начать разговор, уточним две детали:

1. Кодирование в MP3 происходит поблочно: кодируемый файл разбивается на фреймы (кадры) с одинаковым интервалом, каждый кадр кодируется и записывается в выходной поток; таким образом, выходной поток также имеет кадровую структуру.

2. Фреймы могут быть закодированы не на любом битрейте, а только на одном из входящих в таблицу стандартных для MPEG1 Layer III битрейтов: 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320. Кодирование на любых промежуточных битрейтах ("freeformat") стандартом не предусмотрено.

Вступление

Люди, использующие VBR в Lame, обычно аргументируют это фразой: "я хочу получать постоянное качество, а не постоянный битрейт". Действительно, ведь в музыке бывают простые пассажи, на которые вполне хватает и 128 Кбит/сек (например паузы между песнями), а бывают и сложные, на которых человек с хорошим слухом, хорошей аудио картой и прочей аудиоаппаратурой услышит дефекты компрессии даже на 320 Кбит/сек. На самом деле такой аргумент не совсем правомочен.

CBR

Даже в режиме CBR, mp3-кодер может перераспределять биты во времени, выделяя большее или меньшее количество бит во время сложного или простого пассажей, что позволяет в целом улучшить качество звучания. Такое перераспределение бит делается за счёт так называемого резервуара бит: во время кодирования простых пассажей кодер тратит на них не весь заданный пользователем битрейт, а лишь около 90%, около 10% экономится в резервуаре для кодирования сложных мест (изначально резервуар пуст). При кодировании сложных пассажей кодер будет использовать все 100% указанного битрейта и добавлять дополнительные биты из резервуара (если таковые имеются, то есть если резервуар не пуст). К сожалению, в соответствии со стандартом, размер резервуара ограничен. Это означает, что если простой сигнал продолжается достаточно долго, резервуар накапливает свой объем до определенных максимально допустимых пределов и далее кодирование идёт уже с использованием всех 100% битрейта. И обратная ситуация: если сложный сигнал продолжается достаточно долго, из резервуара (постепенно) забираются все сэкономленные биты и далее кодирование идёт с использованием уже теперь всех 100% битрейта.

ABR: Пояснение

Можно было бы сказать что резервуар неплохо справляется со своей основной обязанностью - накопление "лишних" битов во время простых пассажей и их выдача в качестве дополнительных при кодировании сложных пассажей, если бы не одно "но": он обладает конечным и причём весьма ограниченным размером, что означает, что копить его можно лишь до определенных пределов, и вынимать, соответственно, тоже, пока резервуар не опустошится. Именно для того чтобы убрать этот главный недостаток резервуара и был разработан ABR.

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

ABR: Механизм

Допустим, что пользователь указал режим ABR и определенный битрейт B (пользователь может указывать абсолютно любой битрейт от 32 до 320, даже не из стандартной сетки битрейтов, например можно указать в качестве желаемого среднего битрейта 129). Кодер принимает кусок аудио (фрейм), который необходимо закодировать. Таким же образом, как и в CBR, определяет его сложность (об этом мы поговорим ниже). Если пассаж сложный, то кодер также берёт на него больше битов, но уже не из резервуара (как в CBR), а просто на просто увеличивая битрейт на необходимое количество ступеней (выбранный битрейт должен входить в сетку стандартных), создавая таким образом "виртуальный резервуар" (поднять битрейт здесь можно - это не CBR). Что значит "виртуальный резервуар"? Это просто: мы предположили, что указанного пользователем битрейта B кодеру мало, ему нужно K бит (K > B), тогда кодер подбирает такой минимальный стандартный битрейт N, при котором выполняется: N >= K (такой выбор битрейта мы и называем "виртуальный резервуар"). Затем происходит кодирование с помощью K бит взятого куска аудио. Однако N >= K, то есть мы использовали меньше бит, чем есть во взятом фрейме, так не будем же мы выбрасывать эти лишние биты? Вот эти лишние биты мы и записываем в уже настоящий резервуар. Так как в ABR есть возможность использовать "виртуальный резервуар" не имеет смысла строить стандартный резервуар, поэтому когда придет следующий кусок аудио, для его кодирования сначала будут использованы биты из резервуара, а потом кодер решит какой битрейт необходим дальше. Другими словами, если в CBR кодер все время старается накопить как можно больше бит в резервуаре, то в ABR кодер наоборот, старается избавиться от бит в резервуаре, так как копить их незачем - можно просто поднять битрейт.

Простые пассажи кодируются меньшим количеством бит, на них берётся примерно 95% от указанного битрейта B, но теперь остаток не откладывается в резервуар, кодер просто берёт фрейм с меньшим битрейтом. Возникающая разница (оставшиеся биты) записывается в стандартный резервуар (не выбрасывать же оставшиеся биты...). Пример. Допустим пришел "простой" пассаж. Тогда кодер берет все биты (если таковые есть) в резервуаре (настоящем), потом ищет ближайший стандартный битрейт, при котором суммарное количество бит, получившееся для этого фрейма (все биты из резервуара + взятый битрейт), составит 95% от заданного пользователем битрейта B, производит кодирование, а лишние биты (если они остались) снова сохраняет в резервуаре.

ABR: Итог

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

VBR

VBR - переменный битрейт. Пользователь указывает желаемое качество. Lame опираясь на свою психоакустическую модель выделяет для каждого фрейма ровно то количество бит, которое необходимо для достижения заданного качества. В выходном потоке фреймы соответственно имеют разные битрейты (которые всегда ложатся в таблицу стандартных битрейтов). Использование резервуара в VBR абсолютно идентично ABR - туда попадают только неиспользованные хвостики фреймов.

Методы оценки сложности сигнала

Таким образом, основное отличие CBR, ABR и VBR, как вы уже наверное поняли из сказанного выше, состоит в использовании разных методов подсчёта необходимого для кодирования каждого фрейма количества бит.

Методы оценки сложности сигнала: метод 1 (VBR)

Первый метод основан на вычислении "психоакустической маскировки" и "ошибки кодирования". Этот метод используется в VBR и теоретически должен был бы давать максимальное качество если бы психоакустическая модель Lame'а была идеальна. В основе этого метода лежит очень простая идея: на кодирование выделяется минимальное количество бит, необходимое для выполнения условия: [ошибка_кодирования] < [порога_маскировки] (то бишь дефекты кодирования должны маскироваться основным сигналом и не должны быть различимы на слух).

Пояснение по поводу маскировки. Основная масса "аудио компрессоров с потерями" использует для сжатия аудио сигнала особенности человеческого слуха (в противовес существуют аудиокомпрессоры использующие особенности звукоизвлечения), а именно его не идеальность. Можно указать несколько основных "дефектов" слуха используемых в сжатии звука: 1) ограниченный динамический диапазон. Человек не слышит слабых сигналов или иначе говоря существует некий порог слышимости. 2) громкие сигналы (особенно шумовые, а не тональные) обладают маскирующим действием, при чем как во временной, так и в частотной области (если кто-то "жахнул" из пушки вы можете и совсем слух потерять 8-) ), т.е. любой мощный, особенно шумовой сигнал определённой частоты маскирует достаточно слабый сигнал, особенно если он лежит в близком частотном диапазоне и такой замаскированный сигнал можно не кодировать, ведь человек его не слышит. Порог маскировки может быть увеличен на несколько децибел уменьшением качества кодирования (объяснение этому: чем хуже качество кодирования, тем больше артефактов и помех в звучании, и тем более мощный сигнал необходим, чтобы замаскировать эти помехи).

Плюс такого метода: теоретически максимальное качество. Минусы: невысокая скорость а также то, что из-за не идеальности психоакустической модели в Lame, постоянно занижается битрейт, соответственно не рекомендуется использовать без фиксированной нижней границы около 112- 128 кБ/с, а следовательно режим VBR вообще не рекомендуется использовать на низких средних битрейтах. Резервуар в VBR минимизирован, а следовательно не рекомендуется использовать ограничение битрейта сверху (объяснение: так как практически резервуара в VBR нет, если ограничить битрейт сверху, то некоторым фреймам со "сложной" музыкой может оказаться недостаточно бит для кодирования звука, поскольку дополнительные биты взять неоткуда - резервуара нет и битрейт ограничен; такие фреймы будут кодироваться только тем количеством бит, которое имеется в наличии - то есть на максимально допустимом битрейте, что может привести к плохому качеству кодирования).

Методы оценки сложности сигнала: метод 2 (ABR / CBR) Второй метод основан на вычислении Perceptual Entropy (PE), характеризующей сложность кодируемого сигнала (чем сложнее сигнал, тем PE больше). Этот метод используется при кодировании CBR и ABR. Механизм расчета сложности сигнала с помощью PE полностью отличается от механизма, использованного в VBR. Не вдаваясь глубоко в подробности следует сказать, что если в первом методе расчет сложности сигнала проводился опираясь на свойства маскировки, то в данном методе сложность сигнала оценивается путем попытки его предсказания: чем более сложный сигнал (огибающая ведет себя хаотично), тем труднее он предсказуем и, соответственно, тем больше бит требуется для кодирования сигнала. Во время кодирования кодер пытается предсказать сигнал, затем сравнивает предсказанный сигнал с оригиналом, чем менее предсказанный сигнал совпадает с оригиналом, тем больше бит уходит на кодирование. Очень важно отметить, что используемые методы вычисления сложности сигнала принципиально влияют на отличия использующих их механизмов. Так, принципиальная разница между ABR/CBR (использующих описываемый метод) и VBR (который использует метод 1, описанный выше) заключаются еще и в том, что выбор битрейта в ABR/CBR лежит не на кодере, а на пользователе, при этом Lame лишь добавляет/отнимает небольшое количество бит во время кодирования сложных/простых мест соответственно (для чего и рассчитывается PE). Другими словами, в зависимости от рассчитанного PE, к выбранному пользователем битрейту добавляется (или отнимается от него) нужное число бит, что реализуется с помощью механизма работы с резервуаром (виртуальным или настоящим). Таким образом, при использовании второго метода именно пользователь выбирает битрейт (когда в VBR кодер сам решает величину битрейта), PE же лишь корректирует его с помощью резервуара в зависимости от сложности музыки. Происходит это примерно следующим образом.

CBR. для каждого фрейма выделяется "основное", постоянное количество бит, 90% от указанного битрейта и "дополнительное", переменное. Простые пассажи кодируются с помощью этих 90-а процентов, а оставшиеся 10% процентов накапливаются в резервуаре битов (как было описано вначале), вплоть до его заполнения, после чего на кодирование простых пассажей уходит весь битрейт (так как экономить биты некуда). Сложные пассажи кодируются используя полный битрейт плюс из резервуара изымаются дополнительные биты, если только в нём ещё есть биты. Плюсы: совместимость, минусы: из-за малого размера резервуара очень часто нахватает дополнительных бит для кодирования сложных мест.

ABR. При кодировании ABR использование резервуара минимизировано, он просто на-просто не нужен, ведь в ABR мы можем использовать фреймы с разным битрейтом и, соответственно, не накапливать биты в резервуаре (механизм работы ABR пояснен на примере выше). После вычисления PE и необходимого "дополнительного количества" бит, Lame просто выбирает минимальный битрейт в который укладывается полное необходимое количество бит (битрейт выбирается из таблицы). Остаток бит не выбрасывается, а накапливается в резервуаре.

Замечание: неправильно было бы думать, что в CBR и ABR совсем не используется психоакустика - конечно же это не так. Такая вещь как перераспределение битов отведённых на кодирование фрейма между всеми частотными полосами лежит именно на психоакустике.

Заключение

Итак, кратко. CBR/ABR и VBR в Lame отличаются разными методами подсчёта необходимого для кодирования количества бит и, как следствие, разной "философией" использования резервуара. В CBR и ABR основное количество бит выделяемых на кодирование фрейма определяется пользователем при запуске программы: ключами -b или --abr для CBR или ABR соответственно. Количество дополнительных бит необходимых для кодирования сложных мест рассчитывается по одинаковой формуле на основе расчета PE. Разница между CBR и ABR лишь в том, что в режиме CBR битрейт постоянен и возможности кодера по использованию дополнительных битов из резервуара сильно ограничены размером резервуара, в режиме же ABR у кодера есть возможность изменять битрейт, как бы используя "виртуальный резервуар" неограниченных размеров, а настоящий резервуар используется лишь для хранения невостребованных бит.

В VBR используется абсолютно другой метод. Пользователь задаёт качество, а LAME самостоятельно, на основании психоакустической модели (порою не совершенной), рассчитывает количество бит, необходимых для кодирования с заданным качеством каждого отдельного фрейма. Работа с резервуаром в ABR и VBR одинакова.

Таким образом, в режиме VBR кодер сам выбирает битрейт для фреймов, в ABR/CBR кодер выбирает лишь дополнительное количество бит к указанному пользователем битрейту.

Вернуться к "Содержанию"

Какие методы кодирования стерео информации используются в алгоритмах MPEG (и других)? 

Существуют несколько методов кодирования стерео аудио информации в стандарте ISO11172-3 (MPEG-1 Layer 1,2,3).

Dual Channel. Этот режим предполагает кодирование стерео каналов, как абсолютно независимых. Иными словами, в этом режиме кодирование аудио информации происходит отдельно в каждом канале без использования корреляций между ними. Как и следует из названия, этот режим главным образом предназначен для кодирования двух параллельных но различных каналов (например, речь на английском и немецком языках), а не стерео (т.е. не два канала, несущих информацию о стерео картине). Этот режим не рекомендуется использовать для кодирования стерео сигнала, так как существуют проигрыватели (например, madplay), проигрывающие по умолчанию только один канал если поток помечен как Dual Channel.

Stereo. Этот режим отличается от предыдущего только тем, что в режиме Dual Stereo во время кодирования для каждого канала используется свой резервуар (об этом в обсуждении вопроса об отличиях ABR/VBR/CBR), а в этом режиме оба канала кодируются с использованием общего резервуара. Иных различий между режимами нет.

Joint Stereo - это общее определение методов кодирования стерео информации, основанных на использовании избыточности последней. Другими словами, все методы кодирования, основанные на использовании корреляций между двумя стерео каналами, подпадают под определение Joint Stereo.
При кодировании в MPEG-1 имеются две разновидности этого метода.

MS Stereo. В данном режиме кодируются не левый и правый канал, а их суммарная составляющая и разностная. При этом перед кодированием сигнал в каждом отдельном фрейме разбивается на частотные полосы (что, собственно, происходит всегда, то есть не только в Joint Stereo). Затем производится вычисление суммарной и разностной составляющей каналов, что математически выглядит так: Mi=(Li+Ri)/sqrt(2), Si=(Li-Ri)/sqrt(2), где i - номер частотной полосы на которые разбивается сигнал перед кодированием, M и S - Mid (сумма) и Side (разность) каналы соответственно, L и R - левый и правый каналы. При таком кодировании о какой-то деградации качества говорить не приходится, поскольку ничего кроме простейших арифметических операций здесь нет. Тяжело говорить про все MP3- кодеры, но именно так делается в Lame Encoder в режиме VBR. В кодерах от Fraunhofer и в Lame CBR (возможно и в других кодерах, так как этот метод описан в стандарте) в Joint Stereo применяется дополнительный механизм, называемый "Sparsing of side channel". Суть этого метода заключается в более жёстком кодировании side-канала, на который, в этом случае, как правило, выделяется меньшее количество бит, что приводит к деградации звучания в side канале, но улучшению качества кодирования в mid.

Intensity Stereo. В этом режиме в верхнем частотном диапазоне так же происходит кодирование общей составляющей обоих каналов, как и в случае MS Stereo, но вместо кодирования разностной составляющей в верхнем диапазоне частот происходит просто регистрация и запись мощностей сигналов в левом и правом каналах в каждой частотной полосе начиная с некоторой определенной. Иными словами весь сигнал разбивается на полосы, фактическому кодированию подвергается только нижний диапазон частот side-канала, а в верхнем частотном диапазоне начиная с определенной полосы происходит не кодирование сигнала в каждой полосе, а лишь регистрация мощностей сигнала в каждой полосе. Кодирование стерео сигнала в нижнем частотном диапазоне осуществляется в режиме MS Stereo или просто Stereo.

Таким образом, в режиме Intensity Stereo фактически происходит кодирование лишь общей составляющей каналов, а стерео на высоких частотах "воссоздается" (если такой термин здесь уместен, а лучше "синтезируется") в соответствующем канале путем умножения общего сигнала на известные (сохраненные при кодировании) значения мощностей частотных участков в соответствующем канале.

Parametric Stereo (PS). В этом режиме производится кодирование моно-сигнала, однако в выходной поток записывается не только моно информация, но и некоторая дополнительная параметричекая информация, используемая при воспроизведении с целью воссоздания (точнее, имитации) стерео картины из закодированных данных одного канала.

Можно предположить, что приблизительно аналогичные методы кодирования стерео аудио информации применяются и в других алгоритмах компрессии аудио.

Вернуться к "Содержанию"

Какие параметры предпочтительны при кодировании MP3? 

Этот вопрос не имеет однозначного ответа. Каждый человек подбирает параметры кодирования в зависимости от конкретной задачи. Если речь идет о кодировании голоса или другой звуковой информации при малых требованиях к качеству, то кодирование можно производить на минимальных битрейтах, вплоть до 8 Кбит/с (при данном битрейте полоса частот ограничивается 2,5 КГц, что сравнимо с телефонной линией).

Если же стоит вопрос о кодировании аудио данных с CD (44.1 KГц / 16 бит / стерео), то на этот счет существует масса мнений. Большинство пользователей почему-то убеждено, что битрейта 128 Кбит/c достаточно для кодирования аудио CD-качеcтва без потерь. На самом деле это не так. В этом легко убедиться, если прослушать (даже на аппаратуре среднего качества) сначала оригинал, а затем полученный MP3. MP3 будет отличаться как минимум "сухостью" звучания, не говоря уже о появлении некоторых посторонних "позвякиваний", скрежета и других помех.. Это обусловлено тем, что используемая при кодировании психоакустическая модель оставляет только "жизненно необходимые" частоты, отфильтровывая замаскированные и слабослышимые. Причем это проявляется тем больше, чем с меньшим битрейтом производится кодирование. Основываясь на опыте можно предположить, что битрейт, достаточный для "точной" передачи CD-звучания, лежит в пределах от 192 до 320 Кбит/с (в зависимости от кодируемого аудио сигнала и, конечно, самого слушателя). Безусловно, при таком кодировании объем, занимаемый полученным MP3-потоком, увеличивается пропорционально поднятию битрейта.

Найти компромисс можно, конечно, всегда. Лично я при создании своей аудиотеки использую для компрессии переменный битрейт в режимах VBR (variable bit rate) и ABR в пределах от 160 до 320 Кбит/c (об отличиях этих режимов читайте в обсуждении выше). Кодирование с VBR/ABR возможно как следствие фреймовой структуры MP3-потока. Аудио поток при компрессии в MP3 разбивается на мелкие отрезки (фреймы) после чего происходит кодирование каждого фрейма в отдельности. В случае обычного CBR (Constant Bit Rate - постоянный битрейт) кодирование всех фреймов производится с одинаковыми параметрами. В случае же VBR и ABR,  каждый фрейм кодируется со своим битрейтом. То есть при использовании VBR и ABR кодер сам подбирает битрейт, который в наибольшей степени подходит для кодирования данного фрейма. Кодирование на ABR и VBR осуществляется, например, кодером Lame. Все известные мне современные проигрыватели аудио нормально "понимают" MP3, кодированные на VBR и ABR. Об отличиях VBR и ABR можно почитать подробнее выше. При кодировании с использованием кодерами Lame рекомендуется использовать так называемые пресеты - предустановленные настройки кодера. Выбор пресета следует производить в соответствии с требованиями, предъявляемыми к качеству звучания кодированного материала.

Вернуться к "Содержанию"

Какие алгоритмы компрессии существуют (альтернативы MP3 и др.)? 

Существует два основных типа компрессии данных.

--- кодирование с потерями качества / lossy coding ---

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

Многие пользователи даже не догадываются, что помимо пресловутого MP3-формата (MPEG-1 Layer III) в области кодирования аудио с потерями качества существует множество других форматов и кодеков. Параллельно MP3 появились и успешно развиваются не менее, а иногда, и более прогрессивные алгоритмы компрессии звука по своим возможностям и качеству во многом превосходящие MP3. Один из таких алгоритмов это MPEG-2/4 AAC.

MPEG-2/4 AAC. Подробнее о самом кодеке можно прочитать в обсуждении вопроса об истории MPEG.  Ниже представлена информация о существующих разновидностях этого кодека и типов файлов.

Впервые пользователи столкнулись с MPEG-2/4 AAC в виде файлов *.AAC, когда появились всякие самодельные кодировщики вроде Astrid/Quartex, HomeBoy AAC, а также в виде файлов .LQT от Liquifier AAC. Astrid/Quartex, вообще говоря, со стандартом MPEG-2 AAC ничего общего не имел, потому что не соответствовал спецификации (это означает, что закодированные им файлы сегодня перекодировать в стандартный MPEG-4 AAC без потерь невозмоно). Другие же кодеры имели частичную совместимость со стандартом MPEG-2 AAC.

Позднее появились кодеры PsyTel и FAAC/FAAD, которые создавали файлы, содержащие, вобщем-то, стандартный поток MPEG-2 AAC. Позже с помощью этих кодеров стало возможным создавать файлы с потоком MPEG-4 AAC, однако с некоторыми недочетами в самом потоке - у PsyTel были проблемы с синхро-битами, а FAAC несколько неверно выставлял поля в заголовке (примерно до апреля 2003 года, позднее это было исправлено).

После того, как компания Apple лицезировала MPEG-4, стандарт начал свое активное продвижение в массы и пользователи все чаще стали сталкиватся с действительно соответствующими стандарту файлами, уже с расширением .MP4. MP4 - это формат контейнера (такой же как .AVI, .MPG, Matroska - .MKV, .MKA, Ogg - .OGM, .OGG, Quicktime - .MOV, Realmedia - .RM, .RMV) и является частью стандарта MPEG-4 (ISO 14496-1). При разработке контейнера MP4 использовались наработки Apple по разработке контейнера MOV. Однако стандарт контейнера MP4 вышел за пределы контейнера MOV. MP4 позволяет хранить в себе несколько потоков MPEG-4-совместимого видео, аудио (MPEG-4 AAC), а также субтитры, картинки, DVD-подобные меню и проч. MP4 стандартизует использование следующих расширений файлов:
- .MP4: официальное расширение и для аудио, и для видео.
- .M4A: придумано Apple для звуковых файлов, созданых iTunes. Файлы .M4A совершенно идентичны файлам .MP4 и различаются лишь непосредственно самим расширением.
- .M4P: шифрованные с помощью DRM, защищенные файлы (также "выдумка" Apple)
- .MP4V, .M4V: для хранения только "сырого" видео, сжатого MPEG-4
- .3GP, .3G2: расширение для мобильных телефонов. Такие файлы могут содержать дополнительный, не стандартный для .MP4 контент (например, H.263, AMR, TX3G).

Файлы с расширением .AAC (от устаревших кодеров) существуют в двух вариантах: RAW AAC и AAC с ADTS заголовком. Файлы .AAC - это не контейнеры с потоком в каком-то формате, а сами потоки (например, тот же .MP3 - это тоже не контейнер, а поток в формате MPEG-1 Layer III). Потоки MPEG-2 AAC и MPEG-4 AAC различаются только заголовком, поэтому перед конвертацией таких файлов в .MP4 лучше поменять заголовок потока на заголовок стандартный для потока MPEG-4. Это можно сделать например с помощью утилиты AACPatch (http://rarewares.hydrogenaudio.org/files/AACPatch.zip). Такое преобразование желательно поскольку некоторые программы "не принимают" файлы .MP4, содержащие поток в формате MPEG-2 AAC.

Таким образом, стандартный MPEG-4 аудиофайл - это файл контейнера .MP4, содержащий AAC поток с MPEG-4 заголовком. Сам AAC поток может быть закодирован в одном из стандартных профайлов MPEG-4 AAC (LC/Main/SSR/LTP/...). Что касается тэгов внутри файлов .MP4, то стандарт тэгов был взят из Apple iTunes (как самый старший). Нужно заметить, что заявленная поддержка в плеере N файлов стандарта MPEG-4 AAC не означает, что плеер обязательно поддерживает воспроизведение файлов-контейнеров .MP4 - возможно плеер умеет читать только чистые файлы-потоки, вне контейнера (.AAC). И наоборот.

 

9 октября 2002 года компания Coding Tech. анонсировала выход нового кодека AACPlus. AACPlus основан на совершенно аналогичной MP3Pro (см. ниже в этом вопросе) идее использования технологии SBR. Разница заключается лишь в том, что в MP3Pro основной поток кодируется в MP3 (MPEG-1 Layer III), а в AACPlus – в AAC (MPEG-2/4 AAC). ААС является младшим и намного более развитым кодеком, чем MP3, что позволяет говорить о том, что AACPlus дает, конечно, лучшие чем MP3Pro результаты кодирования. AACplus также может встречаться под именем HE-AAC (High Efficiency AAC) или просто как AAC+SBR. При этом нужно учитывать, что HE-AAC - это утвержденное стандартом имя, тогда как AAC+, AACPlus и подобные обозначения - это лишь торговые имена.
Расширение технологии HE-AAC - HE-AAC v2 включает применение дополнительного механизма для имитации стерео звучания при фактическом кодировании лишь одного канала (этот механизм называется Parametric Stereo, сокращенно PS).

 

Несколько слов необходимо сказать и о другом алгоритме TwinVQ (Transform-domain Weighted Interleave Vector Quanization), разработанном фирмой Nippon Telegraph and Telephone Corp. (NTT) в Human Interface Laboratories и лицензированном фирмой Yamaha (продукты от Yamaha, основанные на TwinVQ, распространяются под торговой маркой SoundVQ). Этот метод позволяет сжимать цифровые потоки с коэффициентом компрессии до 1:20. При этом качество звучания потока TwinVQ при 96 Кбит/с практически идентично качеству звучания потока MPEG-1 Layer III (при 128 Кбит/с) и MPEG-2 AAC (при 96 Кбит/с). Алгоритм TwinVQ позволяет кодировать данные во всем диапазоне слышимых частот (до 22 КГц) и, также как и MPEG, производить декодирование и воспроизведение потока одновременно с его получением (stream playback). Кстати, говоря об алгоритме TwinVQ следует сказать также, что трудоемкость этого алгоритма намного выше трудоемкости, например, алгоритма MPEG-1 Layer III, так что программы-компрессоры, основанные на алгоритме TwinVQ работают в 5-10 раз медленнее, чем Layer III-компрессоры. Следует сказать также, что наработки TwinVQ используются в стандарте MPEG-4. По различным оценкам, TwinVQ в нижнем диапазоне частот превосходит по качеству MPEG-1 Layer III, уступая ему на верхних частотах. TwinVQ поддерживает кодирование с переменным битрейтом (VBR), а также имеет поддержку т.н. несимметричного битрейта, когда разные каналы кодируются с отличными битрейтами.

 

Алгоритм (кодек) Windows Media Audio (WMA) от Microsoft (есть еще WMV - Windows Media Video - его мы здесь не обсуждаем). Алгоритм WMA, также как и все рассмотренные ранее, позволяет потоковое воспроизведение (stream playback). Качество WMA (если говорить о WMA 7, 8 и 9) при скорости потока 96 Кбит/с может превосходить MPEG-1 Layer III & MPEG-2 AAC на 128 Кбит/с ("может"- не значит "всегда", то бишь, речь идет о субъективно воспринимаемом качестве звучания и критически зависит как от аппаратуры, так и от характера аудио материала и самого слушателя). Для хранения потока в формате WMA используется универсальный потоковый файловый формат .ASF (Advanced Audio Streaming), пришедший на замену .WAV. Вообще говоря, .ASF - это универсальный формат для хранения аудио и видео информации, сжатой с помощью самых разнообразных кодеков. .ASF имеет также и свою несколько сокращенную разновидность .WMA. Файлы .WMA предназначены исключительно для хранения аудио данных. Говоря о WMA как о кодеке, следует сказать, что в последнее время он становится все более популярным, так как Microsoft встроила его в Windows'2000 и Windows XP, превратив его таким образом в стандарт. Следует отметить также, что сохранить поток WMA в .WAV-структуру невозможно (возможно, по чисто политическим причинам). На сегодняшний день существует несколько версий WMA: v1, v2, v7, v8 и v9. V7 отличается от младших собратьев поддержкой битрейтов до 192 Kbps (в отличие от 164 Kbps в V1 и V2), несколько худшим качеством кодирования и иной структурой данных. Версия 8 отличается от всех предыдущих явно переработанной психоакустической моделью кодека, за счет чего качество кодирования сильно возросло. Так, при 64-96 Kbps WMA v8.0 на не сильно требовательных к качеству композициях (поп-музыка, например) может приближаться по качеству к MP3 при 128 Kbps, хотя, опять же, все зависит от конкретной композиции и аппаратуры, на которой осуществляется прослушивание. WMA 9 является логическим продолжением восьмой версии. Разработчики утверждают заметное повышение качества кодирования по сравнению с WMA 8. В версии 9 применена новая технология Fast Streaming, призванная сильно сократить время буферизации передаваемого конечному пользователю WMA-контента. Помимо этого, WMA 9 имеет фактически несколько "подкодеков". Так, WMA 9 имеет помимо привычного lossy-кодера, также и lossless кодер (кодер без потерь), а также специальный речевой кодер. Изначально, обсуждаемый кодек разрабатывался фирмой Voxware и имел название Voxware Audio Codec. Впоследствии компания забросила его доработку остановившись на v4.0, но кодек не остался гнить и был полностью куплен фирмой Microsoft. Программисты сильно доработали этот кодек, а фирма Microsoft переименовала кодек в Windows Media Audio, не забыв позаботиться о том, чтобы он был бесплатным.

 

Алгоритм PAC (Perspective Audio Coding) от Bell Labs & Lucent Technologies. По различным данным обеспечивает аналогичное (или выше) MPEG-1 Layer III 128 Кбит/с качество звучания при 64 Кбит/с. Поддерживаются также 96 и 128 Кбит/с. Алгоритм позволяет осуществлять потоковое воспроизведение (stream playback). Имеет встроенный механизм защиты. Обладает высокой скоростью компрессии. На сегодняшний день кодек PAC "пропал из поля зрения".

Еще один кодек: Ogg Vorbis, вышел в свет в июне 2000. Этот формат является частью проекта Ogg Squish по созданию полностью открытой системы мультимедиа. Иными словами, и сам проект, и Ogg Vorbis в частности являются открытыми и свободными для распространения, а также разработки на его основе нового программного обеспечения. В FAQ от разработчика (группа Xiphophorus) написано, что механизм кодера Ogg Vorbis схож с механизмом MPEG-1 Layer II, однако кодек использует оригинальный математический алгоритм и собственную психоакустическую модель, что освобождает его от необходимости выплачивать какие-то лицензионные отчисления и производить иные выплаты сторонним фирмам-изготовителям аудио форматов. Алгоритм Ogg Vorbis рассчитан на сжатие данных на всех возможных битрейтах без ограничений, то есть от 8 Kbps до 512 Kbps, но при этом только в режиме переменного битрейта (VBR). Алгоритм предусматривает хранение внутри файлов подробных комментариев об исполнителе и названии композиции. В алгоритме предусматривается также возможность кодирования нескольких каналов аудио (более двух, теоретически до 255), возможность редактирования содержимого файлов, а также так называемый "масштабируемый битрейт" - возможность изменения битрейта потока без необходимости декодирования. Поддерживается потоковое воспроизведение (streaming). Для хранения данных используется собственный универсальный формат bitstream Ogg Squish, рассчитанный на хранение любой информации мультимедиа системы Ogg Squish (идея реализация универсального формата bitstream Ogg Squish аналогична идее ASF от Microsoft).

Помимо официально разрабатываемого кодера Ogg Vorbis, в Интернете можно найти альтернативный вариант: OGG GT3. Это "доведенная до ума" сторонняя разработка оригинального OGG'а версии 1.0. GT3 "заточен" для кодирования аудио на высоких битрейтах. Важно заметить, что GT3 хоть и является "доводкой" оригинального OGG'а, но полностью с ним совместим (здесь подразумевается формат потока).

 

Кодек MP3 Pro анонсирован в июле 2001 года компанией Coding Technologies вместе с Tomson Mulimedia и институтом Fraunhofer. Формат MP3Pro является продолжением, или, точнее, развитием старого MP3. MP3Pro является совместимым с MP3 назад (полностью) и вперед (частично). То есть файлы, закодированные с помощью MP3Pro, можно воспроизводить в обычных проигрывателях, однако качество звучания при этом заметно хуже, чем при воспроизведении в специальном проигрывателе. Это связано с тем, что файлы MP3Pro имеют два потока аудио, в то время как обычные проигрыватели распознают в них только один поток, то есть обычный MPEG-1 Layer 3. В MP3Pro использована новая технология - SBR (Spectral Band Replication). Технология SBR предназначена для передачи верхнего частотного диапазона. Идея технологии и предпосылки таковы. Дело в том, что технологии использования психоакустических моделей имеют один общий недостаток: все они работают качественно до битрейта 128 Kbps. На более низких битрейтах начинаются различные проблемы: либо для передачи аудио необходимо обрезать частотный диапазон, либо кодирование приводит к появлению различных артефактов. Этот ключевой момент показывает, что использования психоакустической модели не достаточно при работе с битрейтами ниже 128 Kbps. Новая технология SBR дополняет использование психоакустических моделей. Идея следующая: в файле передается (кодируется) чуть более узкий диапазон частот чем обычно (то есть с обрезанными "верхами"), а верхние частоты воссоздаются (восстанавливаются) уже самим декодером на основе информации о более низких частотных составляющих. Таким образом, технология SBR применяется фактически не столько на стадии сжатия, сколько на стадии декодирования. "Загадочный" второй "параллельный" поток данных, о котором говорилось выше, как раз и есть та минимальная необходимая информация, которая используется при воспроизведении для восстановления верхних частот. Проведенные исследования показывают, что эта информация - есть усредненная мощность сигнала в верхнем (обрезанном) диапазоне частот. Точнее не одна усредненная мощность для всего диапазона вырезанных частот, а информация о средней мощности в нескольких полосах частот верхнего диапазона. Качество звучания MP3Pro можно назвать субъективно очень хорошим даже на битрейте 64 Кбит/с, другими словами, субъективно несложные композиции при таком битрейте воспринимаются не хуже чем MP3 128 Кбит/с. Однако необходимо учитывать тот факт, что такое звучание достигается искусственным путем, и что слышимый сигнал представляет собой уже не столько оригинал, сколько синтезированную копию оригинала, что заставляет задуматься меломанов, обладателей высококачественной аудио аппаратуры, а также просто ценителей качественного оригинального звучания. Тесты показывают, что использованный в MP3 Pro искусственный прием критическим образом влияет на качество кодирования (и последующего воспроизведения) множества музыкальных композиций. Это означает, что использование кодека очень нецелесообразно и не рекомендуется при составлении фонотеки или для постоянного хранения аудио. С другой стороны, кодек может занимать выигрышные позиции в области потокового аудио.

 

Кодек MPEGplus (MPEG+), переименованный позже в MusePack (MPC) из-за проблем, которые появились у автора кодека в связи с тем, что название последнего содержало в себе аббревиатуру "MPEG" - это еще одна разновидность lossy-кодека сродни MP3. Точнее, MusePack не является продолжением MPEG-1 Layer III, а лишь как и MP3 берет свое начало в MPEG-1 Layer II. MusePack создан "в домашних условиях" и разрабатывался(ется) в основном двумя людьми: Andre Buschmann и Frank Klemm. Кодек, как было сказано, базируется на MPEG-1 Layer II, отсюда его направленность на кодирование преимущественно на более высоких битрейтах, нежели MP3. В то же время, кодек является совершенно самостоятельной разработкой. Кодеком предусмотрено кодирование только в режиме переменного битрейта (VBR). Скорость компрессии и декомпрессии в/из MPC заметно выше скорости выполнения этих операций применительно к MP3. В среднем, качество кодирования MPC на высоких битрейтах заметно (если не сказать «значительно») выше качества, обеспечиваемого MP3. Это связано с различиями в механизмах кодирования. Если говорить конкретно, то MP3 при кодировании разбивает сигнал на частотные подполосы, затем производит разложение сигнала в ряд косинусов (MDCT - частный случай преобразования Фурье) и записывает округленные (квантованные) значения полученных после преобразования коэффициентов (квантование происходит в соответствии с проводимым психоакустическим анализом). MPC же после разбиения сигнала на частотные подполосы просто производит переквантование (опираясь на психоакустику) амплитудного сигнала в каждой подполосе и полученные округленные (квантованные) значения записывает в выходной поток. Этим же фактом объясняется и большая скорость компрессии и декомпрессии MPC.

--- кодирование без потерь качества / lossless coding ---

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

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

Одним из множества примеров таких кодеров является Monkey's Audio Coder. Коэффициент сжатия этого кодека составляет приблизительно 0.5 - 0.6, что, безусловно, во много раз ниже, чем максимально возможный коэффициент сжатия любого lossy-кодера, однако кодирование данных таким способом обеспечивает их хранение без каких-либо потерь.

Дополнительную, подробную и упорядоченную информацию касательно различных аудио кодеков можно найти на странице: http://www.audiocoding.com/wiki/.

Вернуться к "Содержанию"

Как соотносятся сложность музыкальной композиции и сложность кодирования с потерями? 

Сложность композиции имеет мало общего со сложностью ее кодирования. В Интернете давным-давно получил распространение миф (до сих пор любимый многими "меломанами") о том, что для сжатия классической музыки принципиально нужен больший битрейт, чем для современной рок и поп-музыки. О наивности подобных утверждений говорит хотя бы тот факт, что при использовании режима VBR кодек зачастую отводит на классику значительно меньшее число бит, чем на, скажем, хард-рок композиции. Впрочем, есть интересные исключения. Звуки некоторых нструментов, которые вполне могут встретиться в произведениях классиков, достаточно сложны для компрессии. Так, звук скрипки или клавесина может потребовать большего количества бит, чем электрогитара. Однако в целом ситуацию это обстоятельство практически не меняет. Также нельзя говорить о пригодности того или иного кодировщика для сжатия музыки определенного стиля. Это как минимум неразумно. И хотя компрессия некоторых звуков (так называемые проблемные сэмплы) может происходить не так гладко, как хотелось бы, в целом будет корректнее говорить не о жанре произведения, а об используемых инструментах, характере музыки и т.д. Ведь кодеру совершенно неважно исполняет кто-то Моцарта на баяне или же пытается исполнять песенки Бритни Спирс под аккомпанемент клавесина.

В отличие от классики, обычно без серьезных проблем ужимаемой любым современным кодеком (если речь опять же не идет о произведениях, использующих некоторые из вышеупомянутых инструментов), некоторые произведения, написанные с использованием синтезированных инструментов (электроника, транс и т.д.), с трудом поддаются компрессии даже с использованием максимально возможных битрейтов и настроек кодировщика. Примером может служить Karl Bartos со своей The Camera, решительно не желающей кодироваться без искажений. Впрочем, данное произведение, не содержащее ни одного живого звука можно скорее рассматривать в качестве исключения.
Отношение человека к качеству звука - это отдельный вопрос. И если мало кто из поклонников джаза или классики позволит себе архивирование любимой композиции в Xing MP3 128kbps, то, скажем, любитель творчества незабвенной группы Руки Вверх /* с течение времени название группы можно заменить на другое модное */ вряд ли с подобным трепетом отнесется к новому хиту кумира (да и навряд ли этот хит сильно пострадает от подобных действий).

Вернуться к "Содержанию"

Что такое "эффект пустышки"? 

Во многих случаях люди, не принимающие психоакустическую компрессию, имеют дело с так называемым "эффектом пустышки" (от англ. placebo effect), когда личные предпочтения испытуемого в значительной степени влияют на результат исследования. Например, человек, уверенный в своих ушах, при прослушивании компакт диска на своей "навороченной" домашней стереосистеме может быть уверен в том, что он звучит идеально. Достаточно поставить тот же диск, сказав, что он записан из набора MP3 файлов, скачанных из Интернета, как в записи обнаружится множество "недочетов". Для устранения "эффекта пустышки" чаще всего прибегают к слепому или ABX тесту. Применительно к звуковым кодекам суть теста состоит в следующем: берутся два различных файла (обычно это короткие фрагменты записи, длительностью 5-30 секунд), представляющих из себя две версии одного произведения, кодированные с разными параметрами, или же референсный и декодированный файл. Уровни громкости файлов выравниваются (незначительное повышение громкости часто воспринимается как улучшение качества) и запускается программа-тестер. Пользователю дают возможность прослушать два файла, "A" (воспроизводится нажатием на кнопку A) и "B" (соответственно, кнопка B). Прослушивать файлы можно сколь угодно долго. После этого предлагается прослушать звуковой фрагмент X, случайно выбранный из A/B и попробовать определить его: X=A или X=B. После того, как решение принято, цикл повторяется... Для того, чтобы определить, действительно ли заметна на слух разница, обычно бывает достаточно десятка-двух таких циклов. По окончании работы программа в виде числа выводит вероятность того, что пользователь выдавал ответы, случайно нажимая на кнопки. Понятно, что если она составляет доли процента, то человек действительно слышит разницу. Схема действия программ может меняться, однако принцип остается неизменным: пользователь до конца эксперимента не должен знать, какой именно фрагмент воспроизводится.

Название же наблюдаемого эффекта, произошло из медицинской практики, когда больной поправлялся только за счет уверенности в том, что прописанная ему пилюля (состоящая из крахмала и других безвредных веществ) явлется новейшим эффективным препаратом, о чем ему сообщалось заранее. Самовнушение - великая штука... Так что не удивляйтесь, "узнав", что специальный гель, нанесенный на DVD диск, улучшает контрастность изображения или кабель стоимостью в $10 000 способен преобразить звучание любой акустической системы (а, будучи подключенным к лампе, превращает ее в источник солнечного света).

Вернуться к "Содержанию"

Можно ли осуществить преобразование из одного потокового формата аудио данных в другой? 

Да, такое преобразование возможно. Если речь идет о цифровых потоках, сжатых специальными lossy-алгоритмами (такими как MPEG, WMA, TwinVQ и проч.), то преобразование из одного типа в другой неизбежно влечет за собой потерю качества, так как для преобразования необходимо сначала декодировать исходный поток (качество которого заведомо отличается от оригинала), а затем снова сжать, используя необходимый компрессор (или просто записать в виде абсолютно кодированном виде, иначе говоря, не сжатом). Таким образом, при осуществлении "перекодирования" в новый формат (не в случае простого декодирования в .WAV) происходит фактически двойная потеря качества (относительно качества оригинального сигнала). Под потерей качества следует понимать не только потерю частотных составляющих в некоторых областях спектра сигнала, но и появление различных дополнительных шумов, помех, а также, потерю информации о сигнале в каналах (потерю оригинального стерео).

Если же речь идет об преобразовании формата хранения абсолютно кодированных данных, то существует большое количество программ-конверторов, позволяющих выполнять такое преобразование. Однако следует учитывать, что, например, конвертирование из PCM в ADPCM по своей сути приводит к ощутимым потерям качества, а при конвертировании данных с понижением разрядности сигнала происходит не только потеря оригинального качества, но и появление шумов. С уровнем шумов можно бороться (например, с помощью дизеринга - добавления псевдослучайного белого шума), однако совсем избавиться от них не удается. Поэтому, лучше по возможности не прибегать к таким преобразованиям. В случаях же, когда конвертирование неизбежно, следует быть предусмотрительным и стараться заранее сохранять звуковые данные в абсолютном виде с максимальным качеством (при максимально возможных параметрах), чтобы процесс конвертирования происходил с минимальными потерями.

Вернуться к "Содержанию"

Можно ли осуществить преобразование WAV в MIDI, WAV в трекерный модуль? 

Другими словами,  можно ли преобразовать цифровой поток (будь то .WAV или .SND файл) в файл формата MIDI или трекерный модуль (например, .XM или .IT)? На этот вопрос есть почти однозначный ответ: эта задача не решаема принципиально. 

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

Таким образом, для того, чтобы, скажем, преобразовать оцифрованную музыку в формат MIDI необходимо качественно проанализировать весь исходный цифровой поток и однозначно определить, звучание каких инструментов необходимо будет задействовать в выходном MIDI-файле. То есть, фактически необходимо точно идентифицировать инструменты, входящие в композицию. Однако эта проблема, по крайней мере на сегодняшний день, почти не решаема. Посудите сами: для того, чтобы правильно определить звучание какого инструмента происходит в данный момент, нужно, грубо говоря, однозначно знать спектры всех возможных инструментов. И затем, сравнивая спектр звучащего инструмента с набором спектров известных инструментов, определить звучание какого инструмента мы слышим. Но в тоже время мы знаем, что спектр одного и того же инструмента может сильно измениться даже при небольшом изменении силы воздействия на него, а это в свою очередь означает, что однозначно получить спектр мы не можем. Но все сказанное касалось звучания только одного инструмента. А что же будет со спектром сигнала, если в него входит звучание сразу нескольких инструментов? Спектр изменится коренным образом! Вы скажете, что можно, наверное, определить звучание по формантным областям. Да, это возможно, однако говорить все же о точности определения не приходится. Да и проблема-то не заканчивается точной идентификацией инструментов. В дальнейшем придется точно определять тональности звучания, расстановку во времени и тому подобное. По этой причине можно сделать однозначный вывод: качественное преобразование цифровых потоков в MIDI невозможно в принципе. 

Справедливости ради нужно сказать, что существует некоторое количество программ, которые позволяют переводить простые одноголосые композиции в MIDI-партитуру. 

Можно ли перевести цифровой поток в трекерный модуль? Нет, нельзя по приведенным выше причинам. Более того, так как в трекерных модулях (в отличие от MIDI) хранятся кроме команд и сами используемые в композиции инструменты, то для того, чтобы перевести поток в трекерный модуль, из него нужно вычленить звучание отдельных инструментов. А эта задача равносильна вычленению, например, голоса из песни (караоке). То есть, это возможно в какой-то мере, но вычленение несомненно будет крайне некачественным, так как спектры инструментов чаще всего наложены друг на друга.

Вернуться к "Содержанию"

Можно ли выделить из аудио потока звучание конкретного инструмента или голоса? 

Такая процедура невозможна принципиально. В целом, существует, конечно, способ выделения голоса (т. н. Karaoke), однако он работает не всегда, и уж тем более не стоит ожидать от него качества. Обычно, голос исполнителя "находится" посредине стерео панорамы. Основываясь на этом, можно попробовать вычесть один канал из другого, удалив таким образом звучащее посредине - на этом механизме основана реализация караоке. Очевидно, что такой способ не дает качественного результата, если дает вообще какой-то результат. 

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

Вернуться к "Содержанию"

Какие существуют способы преобразования MIDI в WAV? 

Таких способов много. Попробуем их перечислить.

Если речь идет о переводе в WAV-файл MIDI-композиции с какого-нибудь аппаратного концертного синтезатора, то существует несколько вариантов. Самый простой, вероятно, просто подключить выход синтезатора ко входу звуковой карты компьютера и оцифровать необходимую композицию стандартными методами с помощью какого-нибудь звукового редактора.. Однако этот способ хорош в том случае, если у подключаемого аппарата имеется цифровой выход, а у звуковой карты цифровой вход, так как в этом случае фактически просто произойдет запись цифрового потока с синтезатора в память компьютера, что не повлечет за собой абсолютно никакой потери качества звучания. Если же речь идет об аналоговом соединении аппаратуры, то в таком случае вышеописанный вариант не является удачным, так как внутренние шумы аналоговой части аппаратуры, а также внешние наводки со стороны других устройств могут сильно исказить сигнал и в результате полученный оцифрованный сигнал (.WAV) будет шуметь. Таким образом, если нет возможности осуществить цифровую передачу, можно или удовлетвориться аналоговым соединением или поступить иначе: "перегнать" необходимую MIDI-композицию с синтезатора в компьютер в MIDI-файл и уже MIDI-файл в компьютере доступными средствами оцифровать в .WAV. Однако здесь тоже существуют несколько вариантов.

Для того, чтобы "перегнать" .MID (или файл в ином формате, содержащий MIDI-данные)  в .WAV необходимо располагать или звуковой картой со встроенным аппаратным MIDI-синтезатором, или воспользоваться каким-то программным MIDI-синтезатором. Из наиболее распространенных программных синтезаторов можно выделить следующие три: WaveSynth фирмы Creative Labs (поддерживает стандарт GM - General MIDI), Virtual Sound Canvas VSC-88 фирмы Roland (GS - General Synth) и S-YXG100 или S-YXG50 фирмы Yamaha. Следует отметить, что последний качественно отличается от остальных поддержкой стандарта XG (eXtended General). Хотя это тема отдельного обсуждения, следует оговориться все же, что если вы перенесли MIDI-композицию с одного синтезатора и попытаетесь воспроизвести ее на другом (отличном от оригинального), то звучание на нем перенесенной композиции наверняка будет иным (если не абсолютно иным). Эта оговорка особенно касается переноса композиции с концертного синтезатора на компьютер для последующего "перегона" в .WAV, о чем мы говорили выше.

А теперь, собственно, способы преобразования .MID - .WAV. Самый простой и самый "лобовой" - это соединить выход звуковой карты с ее входом, запустить программу для записи (предварительно выбрав устройством записи соответствующего вход) и включить воспроизведение .MID используя аппаратный или программный синтезатор (следует заметить, что такой вариант подключения имеет смысл только если карта полнодуплексная, то есть умеет одновременно воспроизводить и записывать; если нет, то можно установить вторую дополнительную звуковую карту). Однако, если мы говорим об аналоговых входе и выходе, то такой способ просто испортит оригинальное звучание помехами и шумами, так как фактически сигнал претерпит два лишних взаимообратных преобразования (цифро-аналоговое и аналогово-цифровое) и в придачу наводки на соединительный кабель внесут свои погрешности. 

Второй способ аналогичен первому в подходе. Дело в том, что, например, звуковая карта Creative SB Live! позволяет безо всяких физических подключений в качестве устройства записи (входа) использовать, грубо говоря, слышимое в колонках. Иначе говоря, в стандартном микшере Windows в списке устройств записи есть устройство "What U hear" ("То, что ты слышишь"). Самое приятное, что при записи через это устройство сигнал не подвергается цифро-аналоговому и аналогово-цифровому преобразованиям, что исключает влияние наводок и вообще появление каких либо помех, связанных с аналоговым соединением. Таким образом, использование этого устройства записи как нельзя лучше подходит для осуществления перехвата цифровых аудио потоков, в том числе, потоков от программных MIDI-синтезаторов. Для владельцев звуковых плат, отличных от SB Live!, можно порекомендовать воспользоваться, например, такой программой, как Total Recorder. Идея программы аналогична идее устройства "What U Hear" в SB Live!. Эта программа создает в списке устройств для воспроизведения новое виртуальное устройство "Playback through Total Recorder", а также имеет собственную программу записи. Для осуществления преобразования необходимо выбрать это виртуальное устройство как устройство "по умолчанию" для воспроизведения аудио (в Sounds and Multimedia в контрольной панели Windows), запустить программу записи Total Recorder и включить воспроизведение необходимого .MID-файла. Вся прелесть такого способа заключается в том, что сигнал вообще не попадает в аналоговый тракт звуковой карты. Вообще говоря, сигнал даже не попадает на звуковую карту - Total Recorder перехватывает поток идущий на виртуальное устройство "Playback through Total Recorder" и записывает его в файл. Таким образом, с помощью Total Recorder можно произвести оцифровку MIDI-файла абсолютно без потерь качества.

Вариант третий. Как можно заметить, для осуществления оцифровки в предыдущих способах мы предусматривали наличие синтезатора (аппаратного или программного) и звуковой карты. Однако существуют программы специально предназначенные для перевода MIDI в .WAV. Фактически такая программа представляет собой программный MIDI-синтезатор, который подает синтезируемую информацию не на выход звуковой карты, а прямо в файл. Одна из таких программ называется WAVMaker. При использовании для преобразования такой программы наличие какой-либо звуковой аппаратуры теоретически не является необходимостью.

Таким образом, из всех перечисленных методов наиболее подходящий выбирается в зависимости от стоящей задачи. Если преобразование MIDI - .WAV необходимо осуществить максимально качественно, то следует либо воспользоваться цифровым подключением аппаратуры, либо попытаться осуществить преобразование программным путем, не затрагивающим аналоговую часть аппаратуры. Если же требования к качеству преобразования не столь высоки, то можно воспользоваться одним из способов, реализующих конвертирование с помощью аналогового соединения.  

Вернуться к "Содержанию"

Какой метод сравнения двух аудио сигналов можно признать наиболее точным? 

Сначала договоримся, что речь идет о сравнении двух сложных непериодических сигналов, представленных в цифровом виде. Далее все зависит от стоящей перед экспериментатором задачи. Вероятно, все сводится к двум вариантам: физическое сравнение двух сигналов (то есть сравнение точности совпадения форм сигналов) и субъективное сравнение, когда целью является оценка "похожести" звучания двух сигналов. 

Первый вариант употребим больше при необходимости оценить, например, степень искаженности сигнала, прошедшего какую-либо обработку или передачу по цепям, вносящим помехи. В таком случае сравнение оригинального и искаженного сигналов можно производить, например, путем вычитания одного сигнала из другого (это возможно только в том случае, когда начало и протяженность сигналов во времени точно совпадают) - по результату (результирующему сигналу, полученному путем поотсчетного вычитания одного сигнала из другого) можно приблизительно оценить уровень потерянной информации (на слух либо проследив изменение спектрального состава сигнала). Также недавно автором одной из статей был предложен иной метод. Берутся два сравниваемых сигнала (в цифровом виде, естественно) и записываются не в абсолютном виде (то есть абсолютные значения амплитуд, PCM - ИКМ - импульсно-кодовая модуляция), а в виде относительного изменения значений амплитуд сигнала (как в ADPCM - АОИКМ - адаптивная относительная импульсно-кодовая модуляция). Другими словами, сигнал записывается значениями, характеризующими изменение значения каждого отсчета относительно предыдущего. Таким образом, в результате проделанной операции получаются, грубо говоря, данные об углах наклона амплитудной огибающей в каждой точке или, что то же самое, информация о виде (форме) сигнала. После такой обработки проводится вычитание одного сигнала из другого (оригинального) и усреднение значении амплитуды полученной разницы. По усредненной величине амплитуды можно судить о потерях, которые сопутствовали сжатию сигнала. 

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

  • Первый заключается в графическом сравнении результирующих АЧХ оригинального и восстановленного сжатого сигналов за какой-то промежуток времени. Под понятием "результирующая АЧХ" подразумевается график зафиксированных пиковых значений амплитуд частотных составляющих сигнала за некоторый промежуток времени. Таким образом, взяв два одинаковых промежутка сравниваемых сигналов и построив их результирующие АЧХ, по совпадению (не совпадению) графиков АЧХ можно приблизительно оценить уровень потерянных частотных составляющих в сжатом сигнале, а также увидеть полосы частот, где эти потери наиболее выражены. Однако этот метод является статичным, то есть он абсолютно не учитывает изменение сигналов в динамике, что является очень важным, так как часто встречаются случаи, когда результирующие АЧХ сигналов почти совпадают, однако звучание сравниваемых промежутков сигналов отличается коренным образом даже на слух.
  • Вторая разновидность спектрального анализа - сравнение сонограмм сигналов (сонограмма - это диаграмма, на которой по оси абсцисс откладывается время, по оси ординат - частота, а амплитуда соответствующей частотной составляющей отмечается интенсивностью цвета в данной точке графика). Сонограмма является более информативной характеристикой, так как позволяет учесть при сравнении изменение сигналов в динамике. Однако этот метод, в отличие от предыдущего, является "слишком графическим", то есть, если при сравнении статических АЧХ имеется возможность оценить "на глаз" разницу графиков, то в случае с сонограммами эта возможность затруднена, так как сравнивать приходится не кривые графиков, а интенсивность цветов на диаграммах. Есть и еще один немаловажный недостаток сонограмм - размытость сигнала во времени, то есть неточное совпадение (отставание либо опережение) спектральной картины с реальным спектральным составом сигнала в каждый конкретный момент времени. Такой феномен обусловлен принципом неопределенности сопутствующим использованию Быстрого Преобразования Фурье (БПФ): чем больше временнОе разрешение спектра, тем меньше спектральное разрешение, и наоборот. При построении сонограммы берутся относительно большие окна для БПФ (промежутки времени, в которых анализируется спектр) и именно это и обуславливает эффект размазывания сигнала. Конечно, появление этого эффекта можно в какой-то мере избежать применяя анализ с перекрывающимися окнами в несколько проходов, однако объем вычислений при этом крайне возрастет и достичь одновременно высоких спектрального и временного разрешений не удастся.
  • Третий метод представляет собой более конкретизированный предыдущий, он заключается в построении АЧХ для каждого сканируемого окна БПФ. Однако эта задача не лишена тех же проблем, что и предыдущий метод, и, кроме того, производить сравнение графически крайне неудобно, даже если представить всю обсчитанную спектральную картину сигнала в трехмерном виде.

Как разновидность методов сравнения аудио сигналов существует и еще один, принципиально отличный от предыдущих способ - метод тестирования на слух. Такой метод очень широко применяется при тестировании качества компрессии lossy аудио кодеров. Метод заключается в следующем (техника проведения тестирования может быть немного отличной от описываемой, однако смысл остается неизменным). Берется музыкальная композиция в двух вариантах: оригинал и сжатый сигнал. Пользователь внимательно слушает оригинальный сигнал один раз. Далее пользователь вслепую прослушивает в неизвестном ему порядке (либо с помощью ассистента, либо с помощью какой-то программы) N раз оригинальный сигнал и N раз сжатый. Во время каждого отдельного прослушивания пользователь старается определить слушает он оригинал или нет. Свою оценку он записывает. По окончании результаты его оценок сравнивают с действительностью: в каком числе из 2*N прослушиваний пользователь правильно определил звучание оригинального и сжатого сигнала. Если отношение числа правильных оценок к неправильным <= 1 - значит пользователь не в состоянии отличить оригинал от сжатого сигнала. Если же это отношение > 1, значит пользователь в состоянии с большей или меньшей достоверностью отличить оригинал от не оригинала. Точнее,  достоверность тем выше, чем полученное соотношение оценок выше единицы. Конечно, вариаций такого способа тестирования может быть много, но основная идея остается неизменной (также см. обуждение "Что такое эффект пустышки?").

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

Вернуться к "Содержанию"

Что такое стеганография? 

Стеганография - способ сокрытия секретной информации. Cтеганография известна уже много лет, даже сотни и тысячи лет. Идея ее остается неизменной, модифицируются лишь способы и задачи. До недавнего времени постановка задачи описывалась на простом примере: двое заключенных Алиса и Боб хотят переписываться между собой. При этом они хотят избежать вмешательства в процесс переписки охранника Вилли. Описанная задача имеет некоторые допущения и модификации. Так, например, можно условиться, что Алиса и Боб могут разделать передаваемое сообщение при помощи условного знака. Однако при этом, охранник Вилли имеет право читать сообщение и модифицировать его. Очень забавно написано о стеганографии здесь: http://www.cesser6.ru/stegano.htm. Вот цитата:

Стеганография - метод, с помощью которого скрывают сам факт передачи сообщения, и такой метод известен:

  1. Берете раба и наголо обриваете ему голову.
  2. Пишете на голове раба свое сообщение.
  3. Ждете, пока у раба не отрастет шевелюра (раба желательно не купать).
  4. Посылаете раба к получателю сообщения.
  5. Получатель наголо обривает голову раба и читает ваше сообщение.

// оказывается, этот способ действительно был применен тираном Гистием, находившимся в V в до н.э. под надзором царя Дария в Сузах //

Имеющие исключительно лысых рабов могут читать дальше. Современная стеганография работает с электронными документами:

  1. Берется документ - сообщение, факт передачи которого необходимо скрыть ("волк").
  2. Берется документ с невинным содержанием, передача которого не вызывает подозрений ("овечья шкура").
  3. Первый документ шифруется и некоторым образом вставляется во второй так, что внешне второй документ практически не меняется ("волк надевает овечью шкуру").
  4. Второй документ отсылается в электронном виде получателю.
  5. Получатель некоторым образом извлекает из полученного невинного документа истинное сообщение, расшифровывает его и читает ("волк снимает овечью шкуру").

Все это дает целых три рубежа защиты от любопытных глаз:

  1. Первый рубеж - ваша переписка не вызывает подозрений в ее истинном содержании.
  2. Если же такие подозрения возникли по каким-то иным причинам, то обладатель любопытных глаз должен еще найти способ, с помощью которого настоящее сообщение извлекается из мнимого.
  3. Если такой способ все же найден - перед любопытными глазами зашифрованный документ, ключ к которому знаете вы и получатель.

Думаю, смысл стеганографии вам стал ясен. В 1996 году была выработана точная терминология и схемы, описывающие основные задачи стеганографии. Итак, стеганографическая система - это совокупность средств и методов, которые используются для формирования скрытого канала передачи информации. Основная задача - создать такую стеганосистему (стегосистему), которая не позволит никому (кроме получателя и отправителя) извлечь и расшифровать данные из скрытого канала передачи. При этом создаваемая стеганосистема должна должна обладать следующим свойством: даже если противник сможет получить точное представление о структуре стеганосистемы, то в таком случае препятствием на пути противника к расшифровке данных должен стать ключ (открытый или закрытый), с помощью которого зашифрованы передаваемые данные. В идеале же, противник даже не должен догадываться о наличии в информации скрытого канала данных. Таким образом, можно говорить о "контейнере" и о "сообщении". "Контейнер" - любая информация, предназначенная для сокрытия в ней тайных данных (в качестве контейнера может выступать любая подходящая по структуре информация, например, графическая, звуковая или исполняемый машинный код). В то же время "сообщение" - есть передаваемые тайные данные, которые также могут иметь любую структуру. "Пустой контейнер" - контейнер, не содержащий тайных данных, "заполненный контейнер" или "стегоконтейнер" - контейнер, несущий в себе стего (сообщение). "Стегоканал" - часть стегоконтейнера предназначенная для переноса стего. Одной из наиболее трудных задач стеганографии является создание стегосистемы, устойчивой к модификациям (даже умышленным). Очевидно, что сокрытие достаточно объемных стегоданных накладывает очень жесткие ограничения на стегоконтейнер.

Можно различать три способа встраивания стегоканала в контейнер и организации контейнера: деструктивный, не деструктивный и конструирующая. Деструктивный способ подразумевает малозаметное, но все же искажение оригинальных данных, использующихся в качестве контейнера (например, встраивание стего в аудио файл может вызвать незаметные на слух искажения оригинального звучания). Не деструктивный способ подразумевает сокрытие стегоканала в стегоконтейнере таким образом, чтобы целостность данных, использующихся в качестве стегоконтейнера. не была нарушена (например, дописывание данных к концу файла, либо использование особенностей структуры контейнера с тем, чтобы внести в него дополнительные данные, не нарушая при этом оригинальных). Конструирующий способ подразумевает создание для транспортировки стего фиктивного контейнера, не несущего осмысленные данные (например, встраивание тайных данных в фиктивный графический файл, специально сгенерированный для этой цели); иными словами, контейнер создается "для отвода глаз".

В качестве контейнера может выступать как непрерывный поток данных, так и ограниченный в объеме. Во втором случае (когда в качестве контейнера используется, например, файл определенной структуры), стегосистема может опираться на известный фиксированный размер контейнера, а также на особенности его структуры. В потоковом контейнере основной проблемой является невозможность определения получателем "начала" и "конца" стего, что накладывает множество требований на организацию передатчика. С другой стороны, использование потокового контейнера избавляет передатчик от трудностей, связанных с ограниченностью объема контейнера фиксированной длины.

Существуют три различных типа приложения стеганографии: сокрытие данных, маркировка "водяными знаками" (watermarks) и нанесение пометок (заголовков). Маркировка водяными знаками применяется для сокрытия в данных информации о правах и идентификаторов авторства. Подобная маркировка должна жестко выполнять следующие требования: скрытые данные (водяные знаки) должны не вносить хоть сколько-нибудь заметные изменения в оригинальные данные и при этом быть очень устойчивыми к модификации последних. Водяные знаки имеют незначительный объем в сравнении с объемом оригинальных данных. Нанесение пометок - это, можно сказать, облегченная разновидность водяных знаков. Пометки используются для хранения индивидуальной информации, кроме того, пометки не обязаны так жестко отвечать требованиям устойчивости.

Дополнительную информацию о стеганографии можно почитать, например, здесь: http://privacy.yo.lv/stegano.htm, http://abc.nn.ru/secure/stega/.

Вернуться к "Содержанию"

Задача: оцифровать материалы со множества аудио кассет и отреставрировать. Как? 

Для решения поставленной задачи нужно серьёзно подготовиться. Начните с магнитофона. При помощи цифровой обработки многое можно, но далеко не всё. Чем лучше сигнал, который вы оцифровываете, тем потом легче и тем лучше результаты. Оцифровывать, конечно же, следует с линейного выхода. Это первое. Далее, если уж браться за такую работу, то нужно чтобы головка магнитофона была в хорошем состоянии. "Запиленная" головка может испортить все дело. Каналы будут воспроизводиться не с одинаковым качеством (как правило, левый будет хуже), ухудшится частотная характеристика и т. д. Будете вы ставить новую головку, либо рискнете воспользоваться старой - в любом случае головку желательно размагнитить перед началом работы (вместе с головой также желательно размагнитить и экран внутри самой кассеты - для этого кассету нужно аккуратно разобрать). Итак, предположим, что качество воспроизведения вас устраивает. Не спешите включать запись (оцифровку). Очень желательно, чтобы у вас был коммутационный предусилитель с возможностью переключения выхода на моно. Включаете воспроизведение и переключаете выход со стерео на моно и обратно, слушая при этом звук (лучше всего в наушниках). Если запись соответствует положению зазора головки, то при включении моно режима характер звука никак не меняется, разумеется, за исключением того, что он становится монофоническим. Если же вы слышите, что в области верхних частот появляются неприятные эффекты, то положение головки нужно отрегулировать. Необходимо маленькой размагниченной отверткой поворачивать регулировочный винт возле головки, слушая при этом звук. Регулировка довольно "острая". Добейтесь максимально хорошего воспроизедения верхних частот. В идеале, при переключении режимов с моно на стерео и обратно характер звука никак не должен изменяться (за исключением стерео<->моно). Если же вы слышите флуктуации в моно режиме на верхних частотах, то дело хуже - это значит, что либо при записи, либо при воспроизведении лента при движении испытывала вертикальные колебания в районе зазора головки, что приводит к переменному сдвигу фаз. Если это произошло при записи, то сделать уже ничего нельзя. Если при воспроизведении, то теоретически можно, - проблема заключается лишь в трудности настройки механики магнитофона. Без переключения в моно режим эти настройки сделать нельзя. Тогда нужна специальная аппаратура. Если описанная настройка не произведена и зазор головки перекошен относительно записи, то ухудшается частотная характеристика сигнала, так как при этом фактически увеличивается эффетивная ширина зазора. Кроме этого, появляется очень существенный на высоких частотах фазовый сдвиг между каналами. Проверять положение головки следует для каждой стороны кассеты. Настройка положения зазора головки весьма проста. После небольшой практики (возьмите какую-нибудь музыкальную кассету) вы сможете сделать это за пару минут.

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

Если у вас нет предварительного усилителя с коммутационными возможностями - это не беда. Его можно заменить программно, с помощью компьютера. Вот один из вариантов. По всей вероятности, у вас есть проигрыватель Winamp. Скачайте line-in plugin к нему (http://home.hccnet.nl/th.v.d.gronde/). Там же есть и документация. После установки сделайте следующее. Запустите микшер записи и выберите Line-in, установите желаемый уровень (пока он вас ни к чему не обязывает). Запустите Winamp, нажмите Ctrl+L. В открывшемся окне введите line://nch=2,bps=16,srate=44100. Нажмите Ok. Снова вызовите это окно и введите line://nch=1,bps=16,srate=44100, нажмите Ok. Здесь: nch - number of channels, bps - bits per sample, srate - sample rate. Таким образом, активация 1-й строки даст вам стерео звук, а второй - моно. Если теперь вы подключите магнитофон к линейному входу, включите на нем воспроизведение и нажмете "play" на панели управления Winamp'а, то услышите звук соответствующий активной строке в play list'е. При переходе на другую строку (кнопки "Next Track" и "Previous Track" на панели управления Winamp) звук тут же поменяется. Возьмите какую-нибудь кассету для экспериментов. Запустите программу для записи, например, в Sound Forge. Включите воспроизведение и установите уровень записи так, чтобы максимум находился между -3 и -2db. Остановите воспроизведение. Вероятно, вы сможете найти кассету, из которой можно вытащить ленту. Оставьте в корпусе только пермаллоевую пластинку. Она нужна для экранирования головки. Без нее сильно возрастает фон. Вставьте этот пустой корпус в магнитофон и включите воспроизведение. По индикатору уровня вы можете видеть суммарную величину всего, что дает усилитель воспроизведения магнитофона, а в наушниках можете услышать характер этого звука. В зависимости от конструкции магнитофона уровень помех может зависеть от скорости вращения приемного узла (при отсутствии ленты он вращается с максимально возможной скоростью). Можете придержать его рукой, чтобы определить, имеет ли это место. Ваша задача сделать уровень помех (в основном фона) минимальным. Он может зависеть от взаимной ориентации магнитофона и компьютера, от положения соединительного кабеля (особенно, если он низкого качества) и т. д. Если уровень фона чрезмерный, то в последствии при шумопонижении придется либо жертвовать нижней частью диапазона, либо оставлять какой-то фон.

Предположим, что регулировка окончена и запись сделана. Что дальше? Запись с микрофона на магнитную ленту не характеризуется наличием большого количества щелчков (импульсных помех), которые характерны, например, для виниловой пластинки. Если же на вашей записи имеются щелчки, то разумно попытаться сразу от них избавиться. Для того, чтобы ясно понять причину этого, нужно привлечь теорию сигналов и соответствующую математику. Однако, попытаемся прояснить ситуацию, не прибегая к сложным выкладкам. Проделайте следующий опыт (для этого вам понадобится Sound Forge и Sonic Foundry Noise Reducnion DX Plugin, лучше 2-й версии). Вам потребуется буквально пара минут, но это многое прояснит. Запустите SF, создайте новый файл (File->New) с параметрами 44.1 кгц и 16 бит. Затем - Process->Insert Silence. Длительность задайте 10 сек. Установите линию-курсор примерно посередине файла и установите масштаб так, чтобы видеть отдельные точки-сэмплы. Инструментом "карандаш" поднимите до конца 8 точек в левом канале. Измените теперь масштаб так, чтобы можно было отметить участок с нарисованным импульсом длительностью примерно 1/2 секунды (отмечайте оба канала). Отметьте такой участок и выберите Noise Reduction из списка. Включите его для создания образца шума. График, который вы увидите, может слегка удивить, но именно таким он и должен быть. Выберите теперь все 10 сек. и опять создайте образец шума. Посмотрите, как поменялся график и попытайтесь объяснить, почему так произошло. В непосредственной близости от этого импулься нарисуйте импульс в правом канале, но поднимите уже 30 точек. Снова создайте образец шума и посмотрите график. Любопытно, не правда ли? Ну и, наконец, нарисуйте в любом канале импульс, поднимая 2 точки и посмотрите еще и этот график. Теперь подытожим. Из теории известно, что импульсный сигнал имеет широкий спектр, который зависит от его формы и длительности. Если в участке звука, который вы хотите использовать для создания образца шума, присутствуют импульсные помехи, то это сильно отразится на полученном спектре и полученный образец может мало соответствовать тому, что нужно. Кроме этого, как показывают графики, иногда полезно снижать уровень шума отдельно в каналах. Именно из-за этого обычно (не вдаваясь в подробности) рекомендуют сначала избавиться от импульсных помех. Можно, разумеется, поступать и иначе, но тогда требуется хорошее понимание процессов обработки сигнала.

После удаления импульсных помех следует взяться за шум. Для образца шума выберите сигнал стертой ленты с нулевым уровнем записи. Это, правда, может оказаться затруднительным, Все зависит от того, как включалась запись и какой использовался магнитофон - с АРУЗ или без него. Если в начале ленты такого участка нет, то придется поискать удобное место по файлу. Убрав шум ленты, вы получите примерно то, что вы записывали. Разумеется, есть еще много тонкостей, но мы их здесь опустим. SF дает очень хорошие результаты, так что упомянем здесь рекомендации именно для него. Не вырезайте сразу много шума (в db). Обычно на зашумленных записях работа в несколько проходов дает лучшие результаты. Понятно, что для каждого следующего прохода требуется новый образец шума и новые настройки. Начните децибел с 10-ти. Краткие описания настроек. Reduce noise by - задает, на сколько уменьшить уровень шума. Noise bias - смещение шума по уровню относительно сигнала. Если на закладке Noiseprint вы будете нажимать на маленькие кнопки, расположенные внизу с левой стороны, то увидите, что весь график смещается по вертикали в ту или иную стороны. Если спектральная составляющая превосходит по уровню соответствующую точку на графике, то, грубо говоря, она не считается шумом. Модификации алгоритмов - mode. Они все используют заданный образец, шума. Больше всего шума вырезается в Mode1. Дело, однако, не только в количестве шума. Лучше всего можно услышать разницу между модификациями снижая шум на тихом зашумленном участке с легкими! ударами по тарелкам. В Mode1 сильно срезается послезвучие - тарелка неестественно быстро затихает. Эффект убывает с возрастанием номера. Attack и Release speed задают время срабатывания и отпускания. Подбираются на слух, чтобы свести к минимуму слышимость срабатывания шумопонижения. Во многих случаях установки по умолчанию работают неплохо. Сильное влияние на характер шумопонижения оказывает FFT Size. Верхняя часть звукового диапазона срезается меньше при уменьшении FFT Size, но могут появиться неприятные артефакты. Как всегда, нужен компромисс. Интересных результатов можно добиться работая с графиком. Вы можете задать частотный диапазон, в котором производить шумопонижение, изменить характер шумопонижения на разных участках и т. д.

Вернуться к "Содержанию"

Что такое оконная функция в анализе Фурье, какие типы оконных функций существуют? 

Коротоко: Если вкратце, то смысл таков. Как известно, спектральное разложение проводится не для всего сигнала целиком, а кусками (почему? - ясно: либо мы имеем точный спектр, но не знаем в какой момент времени какая спектральная составляющая возникла, либо наоборот, режем сигнал на отрезки и в каждом отрезке знаем менее точный спектр, но зато имеем представление о том, когда и какое изменение спектра произошло). Спектральный анализ, в теории, предназначен для анализа неприрывных периодических сигналов. При обрезании сигнала, в спектре появляются несуществовавшие в сигнале высокочастотные составляющие. Чтобы бороться с их появлением и прибегают к использованию т.н. оконных функций, изменяющих оригинальный сигнал в каждом анализируемом окне (отрезке).

Более развернуто: Анализ спектра опирается на весьма непростой математический аппарат и детально его объяснить без применения математики вряд ли возможно. Имеются различные методы этого анализа. Для работы со звуком наиболее часто применяются методы, основанные на преобразованиях Фурье (ПФ). БПФ - быстрое преобразование Фурье - модифицированнный алгоритм, преследующий цель значительно уменьшить количество арифметических операций, выполняемых во время ПФ. На английском - "FFT" - "fast Fourier transform".

При открытии звукового файла в редакторе мы видим волновую форму сигнала - по оси Y показаны значения отсчетов, а по оси X - время. При помощи БПФ мы можем перейти к частотной форме: по оси Y мы будем иметь амплитуду, а по оси X - частоту. Вычисления производятся для заданного отрезка сигнала. Для вычислений необходимо задать FFT size - так называемый интервал наблюдения (длина отрезков, на которые "нарезается" анализируемый сигнал) и коэффициент перекрытия (коэффициент наложения анализируемых участков сигнала друг на друга; наиболее употребительные его зачения: 0,5 и 0,75). Перед выполнением преобразования Фурье интервал наблюдения обрабатывается специальной оконной функцией (значения отсчетов в анализируемом окне умножаются на значения оконной функции). Выбор оконной функции влияет на точность полученного спектра. Названия этих функций мы и видим в установках спектроанализатора: прямоугольная, треугольная, Блэкменна, Хэмминга, Бесселя-Кайзера и т. д. Самая простая - прямоугольная. Все ее значения равны 1 . Значения треугольной функции для n=6 следующие: p(0)=0, p(1)=1/3, p(2)=2/3, p(3)=1, p(4)=2/3, p(5)=1/3. Если интервал наблюдения равен 1024, то, соответственно, мы должны брать и оконную функцию для 1024 точек. Другие функции определяются довольно сложными математическими формулами. Выбор наиболее предпочтительной оконной функции требует детального анализа сигнала и в случае обработки звука в основном не требуется. Общеупотребительные оконные функции для этих целей - Блэкменна, Хэмминга и Хэннинга. В конечном счете выбор зависит от поставленной задачи. Если, например, предполагается, что в спектре имеется некоторый тон с большой амплитудой, частоту которого нужно определить, то можно просто сравнить результаты применения разных оконных функций. Острота пика этого тона будет разной и это может помочь более точному определению частоты.

Увеличение интервала наблюдения увеличивает точность и время вычислений. При определении спектра сигнала интервал наблюдений "скользит" от начала промежутка к концу с заданным коэффициентом перекрытия. Если он равен 0,5, а длина интервала наблюдений равна 1024, то в следующем его положении будет 512 "старых" точек и 512 новых.

(ответами послужили два сообщения на форуме WebSound.Ru).

Вернуться к "Содержанию"

Каковы принципы работы динамического и компандерного шумоподавителей для магнитофонов? 

1. Динамический шумоподавитель.

Принцип его работы заключается в том, что при снижении уровня высокочастотных составляющих в воспроизводимом сигнале динамический фильтр уменьшает полосу пропускания канала воспроизведения. Обычно регулировка начинается в районе 5-ти кгц. Нижняя часть частотной полосы передается без изменений. Фильтр управляется сигналом, который вырабатывается специальной схемой, уровень его зависит от уровня воспроизводимого сигнала выше частоты среза. В свою очередь от уровня управляющего сигнала зависит частотная характеристика канала воспроизведения. Как следствие этого, при высоком уровне сигнала в полосе выше 5 кгц полоса пропускания канала воспроизведения полная, но в этом случае высокие частоты маскируют шум ленты. Если высоких мало, то уменьшается полоса пропускания и уменьшается слышимый шум ленты. Таким образом, при воспроизведении через ДШП частотная характеристика канала воспроизведения все время изменяется в зависимости от сигнала. К сожалению, характеристика регулировки далеко не всегда дает желаемый результат. В одних случаях неоправданно снижается уровень передачи высоких частот и они срезаются, в других недостаточно подавляется шум. Очень характерная ситуация - образование шумовых хвостов за короткими резкими звуками. Они имеют довольно широкий спектр, что приводит к расширению полосы пропускания и пока фильтр ее опять не уменьшит слышен этот самый шумовой хвост. Работают динамические шумоподавители только при воспроизведении.

2. Компандерный шумоподавитель.

Компандерные шумоподавители затрагивает и процесс записи. Идея заключается в том, чтобы при снижении уровня высокочастотных составляющих во входном сигнале возрастал уровень записи на этих частотах по отношению к стандартному усилителю записи. Для наших рассуждений будем считать шум ленты постоянным. Это шум, который мы можем слышать, воспроизводя стертую (в магнитофоне, а не внешним размагничивающим устройством) ленту. Понятно, что чем меньше уровень записанного сигнала, тем явственней мы будем этот шум слышать. В компандерном шумоподавителе эффект шумопонижения достигается за счет того, что во время записи уровень записи высокочастотных составляющих увеличивается при уменьшении их уровня. При воспроизведении должно обеспечиваться восстановление сигнала. Цифры, приводимые ниже, имеют чисто иллюстративное назначение. Пусть 0 db максимальный уровень записи. Если в текущий момент уровень сигнала на входе (мы рассматриваем верхнюю часть звукового диапазона) равен -10 db, т.е. уменьшился на 10 db, то в магнитофоне без шумопонижения уровень записи также уменьшится на эту же величину. В магнитофоне с шумопонижением это падение будет меньше. Пусть, для определенности, это будет 8 db. Следовательно уровень записи будет на 2 db выше, чем в предыдущем случае. С пониженим уровня эта разница возрастает. Скажем при снижении уровня входного сигнала на 60 db уровень записи упадет только на 40 db, т.е. по отношению к обычному магнитофону разница уже 20 db. Правильное воспроизведение такой записи требует, чтобы тракт воспроизведения имел зеркальную характеристику. Т.е., если воспроизодимый с ленты сигнал имеет уровень -40 db, то его нужно уменьшить на 20 db, если 0 db, то и оставить 0 и т.д. Таким образом, получается, что при записи высокие "приподнимаются" (тем больше, чем они слабее), а при воспроизведении характеристика восстанавливается. Т.к. шум ленты практически не меняется, то это и приводит к слышимому снижению уровня шума. Это только принцип, детали в данном случае нам не важны. Теперь без труда можно представить, что будет если записанную без шумопонижения ленту воспроизводить с шумопонижением. Воспроизведение будет совершенно неправильным. Совершенно неправильно будут воспроизводиться и ленты, записанные с шумопонижением без его включения. Все это происходит потому, что при записи с шумопонижением уровень записи на высоких частотах постоянно изменяется в зависимости от входного сигнала и для правильного воспроизведения нужно, чтобы при воспроизведении динамическая частотная характеристика была строго обратной. Еще пара штрихов. При компандерном шумопонижении понижения шума собственно в сигнале не происходит: если на вход идет шум, то он будет прекрасно записываться и потом воспроизводиться. Имеются трудности для правильного воспроизведения даже на одном и том же аппарате. С износом рабочей поверхности головки происходит увеличение эффективной ширины зазора и, как следствие, ухудшается частотная характеристика. Это в свою очередь препятствует правильному восстановлению. Отсюда следует, что:
- записи, сделанные без шумопонижения следует без него и воспроизводить,
- правильное воспроизведение записей, сделанных с шумопонижением без применения шумоподавителя невозможно.
В заключение можно сказать, что при наличии компьютера со звуковым трактом приемлемого качества динамический шумоподавитель можно эффективно заменить не только при оцифровке для последующей записи на компакт-диск, но и просто при прослушивании. Для этого можно воспользоваться проигрывателем Winamp. Дополнительно потребуются подмодули Line In и Adapt-X и некоторый DX модуль для снижения шума.. Line In позволяет прослушивать сигнал, поступающий на звуковую карту, Adapt-X обеспечивает подключение DX модулей к проигрывателю. Для прослушивания остается подключить скажем Sonic Foundry Noise Reduction Plugin (если он имеется) и настроить его.

Вернуться к "Содержанию"

Что такое DVD-A (или кратко о стандарте DVD Audio)? 

DVD-A - стандарт хранения аудио данных на дисках формата DVD. Стандарт (версии 1.0) был утвержден в марте 1999. DVD-A предназначен для хранения аудио данных в шести каналах (5.1 surround или 6 раздельных каналов) в форматах PCM (Pulse Code Modulation) и MLP (Meridian Lossless Packing). Данные в формате PCM хранятся с параметрами 16-24 бит (точность квантования) и 96 - 192 кГц (частота дискретизации). DVD-A диск имеет объем 4.7 Гб. Это означает, что DVD-A может уместить, например, до 6 часов аудио в формате CD-DA (44.1 кГц / 16 бит / стерео). Скорость чтения данных с DVD-A составляет 9.6 Мбит/сек. В случае хранения данных в формате 24 бит / 96 кГц / 6 каналов поток аудио должен составлять 13.8 Мбит/сек, что невозможно на DVD-A. Чтобы обойти это ограничение стандарт DVD-A предусматривает использование специальной техники компрессии аудио (компрессия без потерь) - MLP (Meridian Lossless Packing - http://www.meridian-audio.com/w_paper/2_1.PDF, http://www.dolby.com/trademark/meridian.pdf). MLP обеспечивает приблизительно двукратное сжатие аудио. Таким образом, данные в формате 24 бит / 96 кГц / 6 каналов, требующие в несжатом виде скорость потока 13.8 Мбит/сек, будучи сжатыми в MLP могут вполне уместиться в дозволенные 9.6 Мбит/сек.

Не всякий проигрыватель DVD понимает диски DVD-A - проигрыватели, знакомые с DVD-A, имеют специальный логотип DVD-Audio. Однако для обеспечения совместимости, многие диски DVD-A специально оснащены треками в формате Dolby Digital и DTS, которые легко распознаются проигрывателями DVD-Video.

Вернуться к "Содержанию"

Что такое SACD? 

В то время как одни разработчики работали над стандартом DVD-A, Sony и Phillips (кстати, они же и разработали CD-DA в 1980) работали над так называемым Super Audio CD (SACD). Стандарт вышел в 1997 году. SACD является, в некотором смысле, братом DVD-A. Почти единственным отличием SACD от DVD-A является формат хранения данных – не ИКМ, а однобитная сигма-дельта модуляция с частотой 2.8224 МГц на канал (технологию назвали Direct Stream Digital - сокращенно DSD).

Носители SACD схожи с DVD - по крайней мере они используют одинаковую файловую систему. Полезной особенностью SACD является возможность выпуска гибридных носителей (Hybrid SACD) – дисков, способных работать как в старых CD -приводах, так и в новых SACD (такая возможность достигается благодаря наличию на дисках SACD двух слоев с данными). SACD хранят аудио в шести каналах, а также могут размещать текстовую и графическую информацию. Особое внимание в SACD уделяется защите от копирования.

Вернуться к "Содержанию"

Чем отличаются CD-DA, DVD-A и SACD?

Сравнительная таблица параметров DVD-A, SACD и CD-DA:

Характеристика DVD-A SACD CD-DA
Диаметр/толщина диска, мм 120/1,2–1,4 120/1,2 120/1,2
Рабочая поверхность 1 (редко две) 1 1
Объем одного слоя диска, Гбайт 4,7 4,7 0,7
Динамический диапазон, дБ >120 144 96
Количество слоев с данными 1 или 2 1 или 2 1
Частота дискретизации для стереодиска, кГц 44,1–192 2822,4 44,1
Частота дискретизации для многоканального диска, кГц 44,1–96 2822,4 -
Разрядность, бит 16/20/24 1 16
Способ кодирования аудиосигнала PCM (ИКМ) DSD PCM (ИКМ)
Количество каналов 2 - 6 1 - 6 2
Передаваемый диапазон частот стерео диска, Гц 5–96 000 2–100 000 5–20500
Передаваемый диапазон частот многоканального диска, Гц 5–48 000 2–100 000 -
Защита данных да да нет
Длительность записи 74 мин. 109 мин. 74 мин.

Вернуться к "Содержанию"

Что такое LFE? 

Первое, что необходимо отметить - LFE это не то же самое, что сабвуфер! И то, что 5.1 в случае с AC3 это совсем не те же самые 5.1 акустической системы. Поэтому начнем с рассмотрения этой разницы.

Формат AC3 создавался для кинотеатров, а совсем не для компьютера. А в кинотеатрах акустика вполне адекватно может воспроизвадить низкие частоты. LFE же был задуман как канал для мощных низкочастотных эффектов, то есть эффектов, с которыми обычная акустика уже не может справиться. Чтобы стены тряслись, народ вопил от ужаса, а слабонервные барышни падали в обморок. Таким образом все каналы ac3-кодированного потока содержат низкие частоты, и только иногда (в особо взрывоопасные моменты) в работу вступает канал LFE и только для того, чтобы помочь основной акустике потрясать стены. Вполне может случиться так, что канал LFE вообще не включится ни разу за весь фильм. И это также будет нормальным.

У компьютерной же акустики совсем другая специфика. Большинство современных компьютерных 5.1 наборов просто не в состоянии воспроизвести низкие частоты через сателлиты. То есть саб должен полностью отвечать за воспроизведение низких частот.

Таким образом если мы подключим 5.1 акустику, и станем смотреть фильм с 5.1 зауковой дорожкой назначив канал LFE на сабвуфер, то мы рискуем не услышать низких частот вообще!

Поэтому, если акустическая система имеет отдельный сабвуфер крайне рекомендуется перенаправлять туда басы со всех каналов (т.к. низкочастотная информация содержится во всех каналах). Здесь: http://www.dolby.com/tech/c.in.0011.LFE.pdf разъясняется роль LFE и саба при воспроизведении звука.

Вернуться к "Содержанию"

Что мы слышим? 

В ответ на вопрос о том, какой диапазон частот способно услышать человеческое ухо нередко можно получить "классический" ответ: от 20 герц до 20 килогерц. Думаю, подобному слуху могли позавидовать бы многие музыканты и "аудиофилы", даже не подозревающие, насколько ниже их реальные возможности. В действительности человеческое ухо наиболее чувствительно к звукам, находящимся в пределах 1-4 килогерца, что соответствует области человеческой речи. С повышением частоты чувствительность снижается и уже далеко не все люди будут четко слышать 16 килогерцовый тон (с возрастом чувствительность к высоким частотам снижается). 18 килогерц обычно является порогом, за которым человеческое ухо перестает воспринимать высокочастотные сигналы, и хотя редкие обладатели "золотых ушей" (к которым любят причислять себя аудиофилы) способны слышать 19 и даже 20 килогерные тона, на практике даже эти люди неспособны отличить на слух от оригинала композицию с использованием среза на 18 килогерц. Случаи, когда человек может слышать еще более высокие частоты известны науке, но это уже уникальные результаты, не имеющие отношения к музыке. Аналогично дело обстоит и в области низких частот. Периодически появляются сообщения о том, что человек способен слышать звуки ниже 20 герц, однако в этих случаях звуки скорее ощущаются, а не слышатся (низкие частоты человек воспринимает не ушами, а телом, ощущая вибрации). Так что не стоит отчаиваться, если вы окажетесь неспособным услышать звуки выше 18 Кгц. Скорее всего, находящийся рядом меломан, гордящийся идеальным слухом, также их не услышит.

Вернуться к "Содержанию"


Автор выражает благодарность за помощь в создании документа следующим людям:
Тарас Бризицкий (SacRat), Валерий Прокопчук, Дмитрий Куцанов, Евгений Музыченко, Александр Выговский.

Не исключено, что данный документ, как и любой другой, содержит неточности. Автор с благодарностью примет все конструктивные замечания, дополнения и исправления к данному документу.

Исправления, замечания и дополнения присылайте на автору на e-mail.