От каких параметров зависит качество цифрового звука
- Звуковая информация. Звук представляет собой распространяющуюся в воздухе, воде или другой среде волну с непрерывно меняющейся интенсивностью и частотой.
Человек воспринимает звуковые волны (колебания воздуха) с помощью слуха в форме звука различных громкости и тона. Чем больше интенсивность звуковой волны, тем громче звук, чем больше частота волны, тем выше тон звука (рис. 1.1).
Рис. 1.1. Зависимость громкости и высоты тона звука от интенсивности и частоты звуковой волны
Человеческое ухо воспринимает звук с частотой от 20 колебаний в секунду (низкий звук) до 20 000 колебаний в секунду (высокий звук).
Человек может воспринимать звук в огромном диапазоне интенсивностей, в котором максимальная интенсивность больше минимальной в 1014 раз (в сто тысяч миллиардов раз). Для измерения громкости звука применяется специальная единица “децибел” (дбл) (табл. 5.1). Уменьшение или увеличение громкости звука на 10 дбл соответствует уменьшению или увеличению интенсивности звука в 10 раз.
Таблица 5.1. Громкость звука
Звук Громкость в децибелах
Нижний предел чувствительности человеческого уха 0
Шорох листьев 10
Разговор 60
Гудок автомобиля 90
Реактивный двигатель 120
Болевой порог 140
Временная дискретизация звука. Для того чтобы компьютер мог обрабатывать звук, непрерывный звуковой сигнал должен быть преобразован в цифровую дискретную форму с помощью временной дискретизации. Непрерывная звуковая волна разбивается на отдельные маленькие временные участки, для каждого такого участка устанавливается определенная величина интенсивности звука.Таким образом, непрерывная зависимость громкости звука от времени A(t) заменяется на дискретную последовательность уровней громкости. На графике это выглядит как замена гладкой кривой на последовательность “ступенек” (рис. 1.2).
Рис. 1.2. Временная дискретизация звука
Частота дискретизации. Для записи аналогового звука и г го преобразования в цифровую форму используется микрофон, подключенный к звуковой плате. Качество полученного цифрового звука зависит от количества измерений уровня громкости звука в единицу времени, т. е. частоты дискретизации. Чем большее количество измерений производится за I секунду (чем больше частота дискретизации), тем точнее “лесенка” цифрового звукового сигнала повторяет кривую диалогового сигнала.
Частота дискретизации звука – это количество измерений громкости звука за одну секунду.
Частота дискретизации звука может лежать в диапазоне от 8000 до 48 000 измерений громкости звука за одну секунду.
Глубина кодирования звука. Каждой “ступеньке” присваивается определенное значение уровня громкости звука. Уровни громкости звука можно рассматривать как набор возможных состояний N, для кодирования которых необходимо определенное количество информации I, которое называется глубиной кодирования звука.
Глубина кодирования звука – это количество информации, которое необходимо для кодирования дискретных уровней громкости цифрового звука.
Если известна глубина кодирования, то количество уровней громкости цифрового звука можно рассчитать по формуле N = 2I. Пусть глубина кодирования звука составляет 16 битов, тогда количество уровней громкости звука равно:
N = 2I = 216 = 65 536.
В процессе кодирования каждому уровню громкости звука присваивается свой 16-битовый двоичный код, наименьшему уровню звука будет соответствовать код 0000000000000000, а наибольшему – 1111111111111111.
Качество оцифрованного звука. Чем больше частота и глубина дискретизации звука, тем более качественным будет звучание оцифрованного звука. Самое низкое качество оцифрованного звука, соответствующее качеству телефонной связи, получается при частоте дискретизации 8000 раз в секунду, глубине дискретизации 8 битов и записи одной звуковой дорожки (режим “моно”). Самое высокое качество оцифрованного звука, соответствующее качеству аудио-CD, достигается при частоте дискретизации 48 000 раз в секунду, глубине дискретизации 16 битов и записи двух звуковых дорожек (режим “стерео”).
Необходимо помнить, что чем выше качество цифрового звука, тем больше информационный объем звукового файла. Можно оценить информационный объем цифрового стереозвукового файла длительностью звучания 1 секунда при среднем качестве звука (16 битов, 24 000 измерений в секунду). Для этого глубину кодирования необходимо умножить на количество измерений в 1 секунду й умножить на 2 (стереозвук):
16 бит 24 000 2 = 768 000 бит = 96 000 байт = 93,75 Кбайт.
Звуковые редакторы. Звуковые редакторы позволяют не только записывать и воспроизводить звук, но и редактировать его. Оцифрованный звук представляется в звуковых редакторах в наглядной форме, поэтому операции копирования, перемещения и удаления частей звуковой дорожки можно легко осуществлять с помощью мыши. Кроме того, можно накладывать звуковые дорожки друг на друга (микшировать звуки) и применять различные акустические эффекты (эхо, воспроизведение в обратном направлении и др.).
Звуковая информация. Звук представляет собой распространяющуюся в воздухе, воде или другой среде волну с непрерывно меняющейся интенсивностью и частотой.
Человек воспринимает звуковые волны (колебания воздуха) с помощью слуха в форме звука различных громкости и тона. Чем больше интенсивность звуковой волны, тем громче звук, чем больше частота волны, тем выше тон звука (рис. 1.1).
Рис. 1.1. Зависимость громкости и высоты тона звука от интенсивности и частоты звуковой волны
Человеческое ухо воспринимает звук с частотой от 20 колебаний в секунду (низкий звук) до 20 000 колебаний в секунду (высокий звук).
Человек может воспринимать звук в огромном диапазоне интенсивностей, в котором максимальная интенсивность больше минимальной в 1014 раз (в сто тысяч миллиардов раз). Для измерения громкости звука применяется специальная единица "децибел" (дбл) (табл. 5.1). Уменьшение или увеличение громкости звука на 10 дбл соответствует уменьшению или увеличению интенсивности звука в 10 раз.
Таблица 5.1. Громкость звука
Звук Громкость в децибелах
Нижний предел чувствительности человеческого уха 0
Шорох листьев 10
Разговор 60
Гудок автомобиля 90
Реактивный двигатель 120
Болевой порог 140
Временная дискретизация звука. Для того чтобы компьютер мог обрабатывать звук, непрерывный звуковой сигнал должен быть преобразован в цифровую дискретную форму с помощью временной дискретизации. Непрерывная звуковая волна разбивается на отдельные маленькие временные участки, для каждого такого участка устанавливается определенная величина интенсивности звука.
Таким образом, непрерывная зависимость громкости звука от времени A(t) заменяется на дискретную последовательность уровней громкости. На графике это выглядит как замена гладкой кривой на последовательность "ступенек" (рис. 1.2).
Рис. 1.2. Временная дискретизация звука
Частота дискретизации. Для записи аналогового звука и г го преобразования в цифровую форму используется микрофон, подключенный к звуковой плате. Качество полученного цифрового звука зависит от количества измерений уровня громкости звука в единицу времени, т. е. частоты дискретизации. Чем большее количество измерений производится за I секунду (чем больше частота дискретизации), тем точнее "лесенка" цифрового звукового сигнала повторяет кривую диалогового сигнала.
Частота дискретизации звука - это количество измерений громкости звука за одну секунду.
Частота дискретизации звука может лежать в диапазоне от 8000 до 48 000 измерений громкости звука за одну секунду.
Глубина кодирования звука. Каждой "ступеньке" присваивается определенное значение уровня громкости звука. Уровни громкости звука можно рассматривать как набор возможных состояний N, для кодирования которых необходимо определенное количество информации I, которое называется глубиной кодирования звука.
Глубина кодирования звука - это количество информации, которое необходимо для кодирования дискретных уровней громкости цифрового звука.
Если известна глубина кодирования, то количество уровней громкости цифрового звука можно рассчитать по формуле N = 2I. Пусть глубина кодирования звука составляет 16 битов, тогда количество уровней громкости звука равно:
N = 2I = 216 = 65 536.
В процессе кодирования каждому уровню громкости звука присваивается свой 16-битовый двоичный код, наименьшему уровню звука будет соответствовать код 0000000000000000, а наибольшему - 1111111111111111.
Качество оцифрованного звука. Чем больше частота и глубина дискретизации звука, тем более качественным будет звучание оцифрованного звука. Самое низкое качество оцифрованного звука, соответствующее качеству телефонной связи, получается при частоте дискретизации 8000 раз в секунду, глубине дискретизации 8 битов и записи одной звуковой дорожки (режим "моно"). Самое высокое качество оцифрованного звука, соответствующее качеству аудио-CD, достигается при частоте дискретизации 48 000 раз в секунду, глубине дискретизации 16 битов и записи двух звуковых дорожек (режим "стерео").
Необходимо помнить, что чем выше качество цифрового звука, тем больше информационный объем звукового файла. Можно оценить информационный объем цифрового стереозвукового файла длительностью звучания 1 секунда при среднем качестве звука (16 битов, 24 000 измерений в секунду). Для этого глубину кодирования необходимо умножить на количество измерений в 1 секунду й умножить на 2 (стереозвук):
16 бит × 24 000 × 2 = 768 000 бит = 96 000 байт = 93,75 Кбайт.
Звуковые редакторы. Звуковые редакторы позволяют не только записывать и воспроизводить звук, но и редактировать его. Оцифрованный звук представляется в звуковых редакторах в наглядной форме, поэтому операции копирования, перемещения и удаления частей звуковой дорожки можно легко осуществлять с помощью мыши. Кроме того, можно накладывать звуковые дорожки друг на друга (микшировать звуки) и применять различные акустические эффекты (эхо, воспроизведение в обратном направлении и др.).
Чем физически отличается звук на виниловой пластинке от CD, и почему значительное количесство аудиофилов считают, что поледний безусловно проигрывает. В статье «Откуда берется качество винила?» я попытался докопаться до причин различий цифрового звука CD с частотой дискретизации 44 кГц и виниловых пластинок. Говоря иными словами, как изменяется форма волны или осциллограмма при преобразовании звука в цифру и обратно .
Сегодня нам предстоит обсудить: стоит ли вообще переходить на цифровые источники с высокими частотами дискретизации (96, 192 и так далее кГц) когда у нас уже имеется очень популярный формат CD 44,1 кГц, или вся эта шумиха - лишь ловкие маркетинговые ходы производителей аудиотехники, пытающихся постоянно наращивать свои объемы продаж.
Но не все свои мрачные тайны вносимых искажений нам выдала коварная Цифра. Придется посмотреть еще и на частотный спектр сигнала.
В одной из предыдущих статей
я говорил о том, что любой сигнал можно представить в виде суммы синусоид
. Но тут есть два момента:
1. Периодический
или циклически повторяющийся сигнал любой формы можно представить, как сумму синусоид (гармоник) с разными фазами (говоря грубо, временными задержками) и частотами, кратными (умножить на 2, 3 и так далее) основной частоте этого сигнала.. Эта частота зависит от длительности цикла повтора.
2. Непериодический или неповторяющийся сигнал (а это любая фонограмма) имеет бесконечный сплошной спектр (бесконечное количество синусоид «прижавшихся друг», уровень которых, в общем случае, спадает с ростом частоты).
Приняв за истину то, что среднестатистический (повторяю: среднестатистический) человек не слышит выше 20 кГц , мы уверенной рукой отбрасываем все синусоиды, которые имеют частоту выше этой цифры (ультразвук), и считаем, что наше восприятие звука от этого ничего не теряет.
Но это - только полдела. Предположим, что мы действительно не слышим ультразвук выше 20 кГц, но, не смотря на это, он, все-таки, играет свою губительную роль в черном деле искажения исходного (на входе аудиокарты) звука при превращении последнего в цифру . И сейчас мы посмотрим, как это происходит.
Наш исходный сигнал имеет непериодическую форму (то есть форма его волны никогда не повторяется) и, следовательно, у него - бесконечный сплошной спектр . Все синусоиды, находящиеся выше 20 кГц мы назвали ультразвуком . Причем под ультразвуком на входе звуковой карты надо понимать не только сигнал, порожденный акустической волной, который практически полностью теряет все свои ультразвуковые составляющие прямо в микрофоне или звукоснимателе гитары, но к ультразвуку добавляются разнообразные наводки на высоких частотах , которые успели примешаться к исходному сигналу при прохождении им электрических цепей усилителей, АЦП и пр. (вот хотя бы помехи от Вашего компьютера).
Что происходит теперь при аналогово-цифровом преобразовании сигнала со спектром от 0 Гц до бесконечности без принятия специальных мер? Все ультразвуковые синусоиды с частотами выше половины частоты дискретизации попадают (смещаются) в слышимый диапазон .
На жаргоне цифровой обработки сигналов это называется «заворотом» спектра. И вместо чистого звука от 0 до 22 кГц (половины частоты дискретизации) мы имеем кашу из чистого звука и искаженного ультразвука (вся часть спектра, расположенная выше 22 кГц). Ультразвук смещается по частоте в область ниже половины частоты дискретизации и спектр его зеркально разворачивается: верхние частоты оказываются внизу, а нижние - вверху.
Как пример можете себе представить, дуэт баритона и тенора, которые сначала оба поют в тональности ля. А теперь представьте, что вы услышите, если бас продолжает петь в тональности ля, а тенор начинает петь в тональности соль диез, да еще и слова поет задом наперед.
Как борются с этим неприятным эффектом и имеет ли успех тяжелая борьба с техникой?
Перед тем, как оцифровать сигнал, с помощью аналогового фильтра низких частот (который пропускает через себя только низкие частоты) удаляют все ультразвуковые составляющие . И только после этого производят преобразование в цифру.
Однако, есть одно НО. Идеальных фильтров - нет и в ближайшее время, похоже, не будет. А тот спектр, который получается после фильтрации, все равно содержит ультразвуковые составляющие, мощность которых (уровни синусоид на соответствующих частотах) плавно спадает до 24-30 кГц (зависит от качества фильтра и цены звуковой карты). Иными словами, фильтр все равно полностью не искореняет ультразвук.
Потом все эти никому не нужные составляющие с частотами выше 22 кГц, нагло просочившиеся через фильтр, сохраняются в цифровой записи и становятся слышны нам, цинично накладываясь на наш чистый непорочный звук от 0 до 22 кГц.
Как же нам поступить в этом случае? Хорошая новость: при качестве имеющихся у нас фильтров, ультразвуковыми составляющими выше 30-40 кГц на его выходе уже можно пренебречь в виду их малой мощности.
У фильтра низких частот есть такой параметр, как частота среза . Это - максимальная частота, выше которой фильтр, теоретически, не пропускает звук. Но на самом деле эта граница весьма и весьма условна , так, как она устанавливается на той частоте, где ослабление проходящего через фильтр сигнала достигает определенного порога. Частотная характеристика фильтра низких частот (зависимость ослабления сигнала от частоты) имеет весьма плавную форму , постепенно все более и более ослабляя сигнал с ростом частоты.
Частотная характеристика фильтра, как снежная горка - если бы у нее имелась резкая граница (на частоте среза), то горка бы заканчивалась обрывом и санки в конце ее резко бы клевали носом в землю, останавливаясь почти мгновенно. А наша горка (как и самый лучший в мире аналоговый фильтр) - все равно плавная и мы также плавно съезжаем все дальше и дальше в область ультразвука.
Чем выше входная частота синусоиды от частоты среза фильтра, тем хуже он пропускает ее. Поэтому у частот 30-40 кГц суммарная мощность (сумма мощностей всех синусоид в этом диапазоне частот) значительно меньше суммарной мощности синусоид в диапазоне 22-30 кГц .
По этой причине, если частоты 30-40 кГц и сместятся в область слышимых частот, то будут менее заметны, чем те которые лежат от 22 (половина частоты дискретизации CD) до 30 кГц. И с ростом частоты фильтр работает все лучше и лучше.
Поэтому нам остается только увеличить частоту дискретизации таким образом, чтобы суммарная мощность ультразвуковых частот, лежащих выше половины частоты дискретизации, и пролезших через фильтр, была ничтожно мала.
Но теперь следующий вопрос: почему, если все так хорошо с 96 килогерцами, нам нужно еще лезть на частоты дискретизации 192 и выше килогерц?
Вспомним, что в статье Откуда берется качество винила? упоминалось о «ступеньках», возникающих при оцифровке сигнала за счет того, что сигнал измеряется с разрывами во времени и само значение измерений - тоже ступенчато. Кроме того в цифрово-аналоговых и аналогово-цифровых преобразователях наблюдается такое явление, как «дрожание» фазы (джиттер). В чем оно проявляется? А в том, что измерения делаются не строго равномерно, а с некоторыми задержками или опережениями во времени.
Причиной джиттера прежде всего становится нестабильность тактирующего генератора АЦП и ЦАП звуковой карты. Этот генератор задает моменты измерений. Также к джиттеру приводят помехи (наводки).
Если бы АЦП при записи и ЦАП при воспроизведении имели бы абсолютно одинаковый джиттер (расстояния между измерениями были бы одинаковыми при записи и при воспроизведении), то не было бы никакой беды . Но временное положение отсчета (фаза) все время дрожит и отклоняется, как ему взбредет в голову. Это, примерно, как петь, сидя на телеге едущей по булыжной мостовой или наливать в рюмку дорогой коньяк трясущимися руками.
Так вот, ступеньки и джиттер (хотя с ними тоже можно бороться) порождают шумы (искажения сигнала при оцифровке). Чем выше разрядность отсчета АЦП и ЦАП (16, 24, 32 и так далее бит), тем ближе восстановленное значение к оригиналу. Чем выше частота дискретизации (меньше расстояние между измерениями), тем больше измерений приходится на каждый маленький участочек сигнала. За счет большого количества измерений, в среднем он точнее (с меньшими шумами) запоминается и восстанавливается. Это примерно, как если Вы стреляете в мишень из пистолета, то в десятку можете попасть 2 патронами из 6. А если в Ваших руках автомат, то, промахнувшись пятьюдесятью пулями, попадете в цель двадцатью. Если кто и выживет от двух пуль, то от 20 - точно ноги протянет. Таким образом, и 192 кГц попадает в яблочко несколько лучше, чем 96, а тем более - 44.
Производители поговаривают уже о частотах 384 и выше кГц. Но послушать и оценить такой формат пока еще не на чем.
Резюме:
Итак нужен ли переход на высокие частоты дискретизации или нет? Вопрос неоднозначный. Повышение качества звучания - вопрос комплексный, в котором задействованна и частота дискретизации, и качество фильтра низких частот, и стабильность опорного генератора частоты дискретизации, и точность измерения / восстановления уровня АЦП / ЦАП. Механическое повышение частоты дискретизации не даст выигрыша при отсутствии работы по улучшению в остальных направлениях. И может оказаться, что аналоговый выход профессиональной звуковой карты с максимальной частотой дискретизации 48 кГц звучит лучше, чем у ширпотребовской встроенной "звуковухи" с частотой дискретизации 192 кГц.
Мы довольно много узнали обо всём этом, работая над нашим проектом, и сегодня я попробую описать на пальцах некоторые основные понятия, которые требуется знать, если вы имеете дело с цифровой обработкой звука. В этой статье нет серьёзной математики вроде быстрых преобразований Фурье и прочего - эти формулы несложно найти в сети. Я опишу суть и смысл вещей, с которыми придётся столкнуться.
Оцифровка, или Туда и обратно
Прежде всего разберёмся с тем, что такое цифровой сигнал, как он получается из аналогового и откуда собственно берётся аналоговый сигнал. Последний максимально просто можно определить как колебания напряжения, возникающие из-за колебаний мембраны в микрофоне.Рис. 1. Осциллограмма звука
Это осциллограмма звука - так выглядит аудио сигнал. Думаю, каждый хоть раз в жизни видел подобные картинки. Для того чтобы понять, как устроен процесс преобразования аналогового сигнала в цифровой, нужно нарисовать осциллограмму звука на миллиметровой бумаге. Для каждой вертикальной линии найдем точку пересечения с осциллограммой и ближайшее целое значение по вертикальной шкале - набор таких значений и будет простейшей записью цифрового сигнала.
Воспользуемся этим интерактивным примером, чтобы разобраться в том, как накладываются друг на друга волны разной частоты и как происходит оцифровка. В левом меню можно включать/выключать отображение графиков, настраивать параметры входных данных и параметры дискретизации, а можно просто двигать контрольные точки.
В реальности для создания стерео-эффекта при записи аудио чаще всего записывается не один, а сразу несколько каналов. В зависимости от используемого формата хранения они могут храниться независимо. Также уровни сигнала могут записываться как разница между уровнем основного канала и уровнем текущего.
Обратное преобразование из цифрового сигнала в аналоговый производится с помощью цифро-аналоговых преобразователей , которые могут иметь различное устройство и принципы работы. Я опущу описание этих принципов в данной статье.
Дискретизация
Как известно, цифровой сигнал - это набор значений уровня сигнала, записанный через заданные промежутки времени. Процесс преобразования непрерывного аналогового сигнала в цифровой сигнал называется дискретизацией (по времени и по уровню). Есть две основные характеристики цифрового сигнала - частота дискретизации и глубина дискретизации по уровню.Зелёным показана частотная составляющая, частота которой выше частоты Найквиста. При оцифровке такой частотной составляющей не удаётся записать достаточно данных для её корректного описания. В результате при воспроизведении получается совершенно другой сигнал - жёлтая кривая.
Уровень сигнала
Для начала стоит сразу понять, что когда речь идёт о цифровом сигнале, то можно говорить только об относительном уровне сигнала. Абсолютный зависит в первую очередь от воспроизводящей аппаратуры и прямо пропорционален относительному. При расчётах относительных уровней сигнала принято использовать децибелы . При этом за точку отсчёта берётся сигнал с максимально возможной амплитудой при заданной глубине дискретизации. Этот уровень указывается как 0 dBFS (dB - децибел, FS = Full Scale - полная шкала). Более низкие уровни сигнала указываются как -1 dBFS, -2 dBFS и т.д. Вполне очевидно, что более высоких уровней просто не бывает (мы изначально берём максимально возможный уровень).Поначалу бывает тяжело разобраться с тем, как соотносятся децибелы и реальный уровень сигнала. На самом деле всё просто. Каждые ~6 dB (точнее 20 log(2) ~ 6.02 dB) указывают на изменение уровня сигнала в два раза. То есть, когда мы говорим о сигнале с уровнем -12 dBFS, понимаем, что это сигнал, уровень которого в четыре раза меньше максимального, а -18 dBFS - в восемь, и так далее. Если посмотреть на определение децибела, в нём указывается значение - тогда откуда берётся 20? Всё дело в том, что децибел - это логарифм отношения двух одноимённых энергетических величин, умноженный на 10. Амплитуда же не является энергетической величиной, следовательно её нужно перевести в подходящую величину. Мощность, которую переносят волны с разными амплитудами, пропорциональна квадрату амплитуды. Следовательно для амплитуды (если все прочие условия, кроме амплитуды принять неизменными) формулу можно записать как
N.B. Стоит упомянуть, что логарифм в данном случае берётся десятичный, в то время как большинство библиотек под функцией с названием log подразумевает натуральный логарифм.
При различной глубине дискретизации уровень сигнала по этой шкале изменяться не будет. Сигнал с уровнем -6 dBFS останется сигналом с уровнем -6 dBFS. Но всё же одна характеристика изменится - динамический диапазон. Динамический диапазон сигнала - это разница между его минимальным и максимальным значением. Он рассчитывается по формуле , где n - глубина дискретизации (для грубых оценок можно пользоваться более простой формулой: n * 6). Для 16 бит это ~96.33 dB, для 24 бит ~144.49 dB. Это означает, что самый большой перепад уровня, который можно описать с 24-битной глубиной дискретизации (144.49 dB), на 48.16 dB больше, чем самый большой перепад уровня с 16-битной глубиной (96.33 dB). Плюс к тому - шум дробления при 24 битах на 48 dB тише.
Восприятие
Когда мы говорим о восприятии звука человеком, следует сначала разобраться, каким образом люди воспринимают звук. Очевидно, что мы слышим с помощью ушей . Звуковые волны взаимодействуют с барабанной перепонкой, смещая её. Вибрации передаются во внутреннее ухо, где их улавливают рецепторы. То, насколько смещается барабанная перепонка, зависит от такой характеристики, как звуковое давление . При этом воспринимаемая громкость зависит от звукового давления не напрямую, а логарифмически. Поэтому при изменении громкости принято использовать относительную шкалу SPL (уровень звукового давления), значения которой указываются всё в тех же децибелах. Стоит также заметить, что воспринимаемая громкость звука зависит не только от уровня звукового давления, но ещё и от частоты звука:Громкость
Простейшим примером обработки звука является изменение его громкости. При этом происходит просто умножение уровня сигнала на некоторое фиксированное значение. Однако даже в таком простом деле, как регулировка громкости, есть один подводный камень. Как я уже отметил ранее, воспринимаемая громкость зависит от логарифма звукового давления, а это значит, что использование линейной шкалы громкости оказывается не очень эффективным. При линейной шкале громкости возникает сразу две проблемы - для ощутимого изменения громкости, когда ползунок находится выше середины шкалы приходится достаточно далеко его сдвигать, при этом ближе к самому низу шкалы сдвиг меньше, чем на толщину волоса, может изменить громкость в два раза (думаю, с этим каждый сталкивался). Для решения данной проблемы используется логарифмическая шкала громкости. При этом на всей её длине передвижение ползунка на фиксированное расстояние меняет громкость в одинаковое количество раз. В профессиональной записывающей и обрабатывающей аппаратуре, как правило, используется именно логарифмическая шкала громкости.Математика
Тут я, пожалуй, немного вернусь к математике, потому что реализация логарифмической шкалы оказывается не такой простой и очевидной вещью для многих, а найти в интернете данную формулу не так просто, как хотелось бы. Заодно покажу, как просто переводить значения громкости в dBFS и обратно. Для дальнейших объяснений это будет полезным.// Минимальное значение громкости - на этом уровне идёт отключение звука var EPSILON = 0.001; // Коэффициент для преобразований в dBFS и обратно var DBFS_COEF = 20 / Math.log(10); // По положению на шкале вычисляет громкость var volumeToExponent = function(value) { var volume = Math.pow(EPSILON, 1 - value); return volume > EPSILON ? volume: 0; }; // По значению громкости вычисляет положение на шкале var volumeFromExponent = function(volume) { return 1 - Math.log(Math.max(volume, EPSILON)) / Math.log(EPSILON); }; // Перевод значения громкости в dBFS var volumeToDBFS = function(volume) { return Math.log(volume) * DBFS_COEF; }; // Перевод значения dBFS в громкость var volumeFromDBFS = function(dbfs) { return Math.exp(dbfs / DBFS_COEF); }
Цифровая обработка
Теперь вернёмся к тому, что мы имеем цифровой, а не аналоговый сигнал. У цифрового сигнала есть две особенности, которые стоит учитывать при работе с громкостью:- точность, с которой указывается уровень сигнала, ограничена (причём достаточно сильно. 16 бит - это в 2 раза меньше, чем используется для стандартного числа с плавающей точкой);
- у сигнала есть верхняя граница уровня, за которую он не может выйти.
Из того, что уровень сигнала имеет ограничение точности, следует две вещи:
- уровень шумов дробления возрастает при увеличении громкости. Для малых изменений обычно это не очень критично, так как изначальный уровень шума значительно тише ощутимого, и его можно безопасно поднимать в 4-8 раз (например, применять эквалайзер с ограничением шкалы в ±12dB);
- не стоит сначала сильно понижать уровень сигнала, а затем сильно его повышать - при этом могут появиться новые шумы дробления, которых изначально не было.
Из того, что сигнал имеет верхнее ограничение уровня, следует, что нельзя безопасно увеличивать громкость выше единицы. При этом пики, которые окажутся выше границы, будут «срезаны» и произойдёт потеря данных.
На практике всё это означает, что стандартные для Audio-CD параметры дискретизации (16 бит, 44,1 кГц) не позволяют производить качественную обработку звука, потому что имеют очень малую избыточность. Для этих целей лучше использовать более избыточные форматы. Однако стоит учитывать, что общий размер файла пропорционален параметрам дискретизации, поэтому выдача таких файлов для он-лайн воспроизведения - не лучшая идея.
Измерение громкости
Для того чтобы сравнивать громкость двух разных сигналов, её для начала нужно как-то измерить. Существует по меньшей мере три метрики для измерения громкости сигналов - максимальное пиковое значение, усреднённое значение уровня сигнала и метрика ReplayGain.Максимальное пиковое значение достаточно слабая метрика для оценки громкости. Она никак не учитывает общий уровень громкости - например, если записать грозу, то большую часть времени на записи будет тихо шелестеть дождь и лишь пару раз прогремит гром. Максимальное пиковое значение уровня сигнала у такой записи будет довольно высоким, но большая часть записи будет иметь весьма низкий уровень сигнала. Однако эта метрика всё равно является полезной - она позволяет вычислить максимальное усиление, которое можно применить к записи, при котором не будет потерь данных из-за «обрезания» пиков.
Усреднённое значение уровня сигнала - более полезная метрика и легко вычислимая, но всё же имеет существенные недостатки, связанные с тем, как мы воспринимаем звук. Визг циркулярной пилы и рокот водопада, записанные с одинаковым средним уровнем сигнала, будут восприниматься совершенно по-разному.
ReplayGain наиболее точно передает воспринимаемый уровень громкости записи и учитывает физиологические и психические особенности восприятия звука. Для промышленного выпуска записей многие звукозаписывающие студии используют именно её, также она поддерживается большинством популярных медиа-плееров. ( на WIKI содержит много неточностей и фактически не корректно описывает саму суть технологии)
Нормализация громкости
Если мы можем измерять громкость различных записей, мы можем её нормализовать. Идея нормализации состоит в том, чтобы привести разные звуки к одинаковому уровню воспринимаемой громкости. Для этого используется несколько различных подходов. Как правило, громкость стараются максимизировать, но это не всегда возможно из-за ограничений максимального уровня сигнала. Поэтому обычно берётся некоторое значение немного меньше максимума (например -14 dBFS), к которому пытаются привести все сигналы.Иногда нормализацию громкости производят в рамках одной записи - при этом различные части записи усиливают на разные величины, чтобы их воспринимаемая громкость была одинаковой. Такой подход очень часто применяется в компьютерных видео-плеерах - звуковая дорожка многих фильмов может содержать участки с очень сильно отличающейся громкостью. В такой ситуации возникают проблемы при просмотре фильмов без наушников в позднее время - при громкости, на которой нормально слышен шёпот главных героев, выстрелы способны перебудить соседей. А на громкости, при которой выстрелы не бьют по ушам, шёпот становится вообще неразличим. При внутри-трековой нормализации громкости плеер автоматически увеличивает громкость на тихих участках и понижает на громких. Однако этот подход создаёт ощутимые артефакты воспроизведения при резких переходах между тихим и громким звуком, а также порой завышает громкость некоторых звуков, которые по задумке должны быть фоновыми и еле различимыми.
Также внутреннюю нормализацию порой производят, чтобы повысить общую громкость треков. Это называется нормализацией с компрессией. При этом подходе среднее значение уровня сигнала максимизируется за счёт усиления всего сигнала на заданную величину. Те участки, которые должны были быть подвергнуты «обрезанию», из-за превышения максимального уровня усиливаются на меньшую величину, позволяя избежать этого. Этот способ увеличения громкости значительно снижает качество звучания трека, но, тем не менее, многие звукозаписывающие студии не брезгуют его применять.
Фильтрация
Я не стану описывать совсем все аудио-фильтры, ограничусь только стандартными, которые присутствуют в Web Audio API. Самым простым и распространённым из них является биквадратный фильтр (BiquadFilterNode) - это активный фильтр второго порядка с бесконечной импульсной характеристикой , который может воспроизводить достаточно большое количество эффектов. Принцип работы этого фильтра основан на использовании двух буферов, каждый с двумя отсчётами. Один буфер содержит два последних отсчёта во входном сигнале, другой - два последних отсчёта в выходном сигнале. Результирующее значение получается с помощью суммирования пяти значений: текущего отсчёта и отсчётов из обоих буферов перемноженных на заранее вычисленные коэффициенты. Коэффициенты данного фильтра задаются не напрямую, а вычисляются из параметров частоты, добротности (Q) и усиления.Все графики ниже отображают диапазон частот от 20 Гц до 20000 Гц. Горизонтальная ось отображает частоту, по ней применяется логарифмический масштаб, вертикальная - магнитуду (жёлтый график) от 0 до 2, или фазовый сдвиг (зелёный график) от -Pi до Pi. Частота всех фильтров (632 Гц) отмечена красной чертой на графике.
Lowpass
Рис. 8. Фильтр lowpass.
Пропускает только частоты ниже заданной частоты. Фильтр задаётся частотой и добротностью.
Highpass
Рис. 9. Фильтр highpass.
Действует аналогично lowpass, за исключением того, что он пропускает частоты выше заданной, а не ниже.
Bandpass
Рис. 10. Фильтр bandpass.
Этот фильтр более избирателен - он пропускает только определённую полосу частот.
Notch
Рис. 11. Фильтр notch.
Является противоположностью bandpass - пропускает все частоты вне заданной полосы. Стоит, однако, отметить разность в графиках затухания воздействия и в фазовых характеристиках данных фильтров.
Lowshelf
Рис. 12. Фильтр lowshelf.
Является более «умной» версией highpass - усиливает или ослабляет частоты ниже заданной, частоты выше пропускает без изменений. Фильтр задаётся частотой и усилением.
Highshelf
Рис. 13. Фильтр highshelf.
Более умная версия lowpass - усиливает или ослабляет частоты выше заданной, частоты ниже пропускает без изменений.
Peaking
Рис. 14. Фильтр peaking.
Это уже более «умная» версия notch - он усиливает или ослабляет частоты в заданном диапазоне и пропускает остальные частоты без изменений. Фильтр задаётся частотой, усилением и добротностью.
Фильтр allpass
Рис. 15. Фильтр allpass.
Allpass отличается ото всех остальных - он не меняет амплитудные характеристики сигнала, вместо чего делает фазовый сдвиг заданных частот. Фильтр задаётся частотой и добротностью.
Фильтр WaveShaperNode
Вейвшейпер () применяется для формирования сложных эффектов звуковых искажений, в частности с помощью него можно реализовать эффекты «дисторшна» , «овердрайва» и «фузза» . Данный фильтр применяет к входному сигналу специальную формирующую функцию. Принципы построения подобных функций довольно сложные и тянут на отдельную статью, поэтому я опущу их описание.Фильтр ConvolverNode
Фильтр, производящий линейную свёртку входного сигнала с аудио-буфером, задающим некую импульсную характеристику . Импульсная характеристика - это ответ некой системы на единичный импульс. Простым языком это можно назвать «фотографией» звука. Если реальная фотография содержит информацию о световых волнах, о том, насколько они отражаются, поглощаются и взаимодействуют, то импульсная характеристика содержит аналогичную информацию о звуковых волнах. Свёртка аудио-потока с подобной «фотографией» как бы накладывает эффекты окружения, в котором была сняла импульсная характеристика на входной сигнал.Для работы данного фильтра требуется разложение сигнала на частотные составляющие. Это разложение производится с помощью (к сожалению, в русскоязычной Википедии совершенно несодержательная , написанная, судя по всему, для людей, которые и так знают, что такое БПФ и сами могут написать такую же несодержательную статью). Как я уже говорил во вступлении, не стану приводить в данной статье математику БПФ, однако не упомянуть краеугольный алгоритм для цифровой обработки сигналов было бы неправильно.
Данный фильтр реализует эффект реверберации . Существует множество библиотек готовых аудио-буферов для данного фильтра, которые реализуют различные эффекты ( , ), подобные библиотеки хорошо находятся по запросу .