Главная » Статьи » Авторы » Marvin

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

1) Источник — звук в формате MP3, FLAC, OGG, WAV etc.

2) Плеер — плеер foobar2000. Содержит:

  • Декодер

  • Обработчики звука

  • Вывод
 

3) Микшер Windows, драйвер звуковой карты — очень тесно взаимодействующие элементы. На данном этапе может выполняться программная обработка звука (порой некачественная), что крайне нежелательно.

4) DSP звуковой карты — это уже аппаратная составляющая. Digital Signal Processor находится непосредственно на звуковой карте и совершает необходимую обработку звукового потока, а также обработку в соответствии с выставленными настройками в микшере звуковой карты (большинство операций, которые производит данный блок, зависит от выставленных настроек звуковой карты и от самой модели звуковой карты).

5) ЦАП — цифро-аналоговый преобразователь. Производит преобразование полученных цифровых аудиоданных в аналоговый вид для дальнейшего усиления (с помощью операционных усилителей) и подачи на аналоговый выход звуковой карты (с него — на наушники или внешний усилитель).

1. Источник

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

Источники можно подразделить на два типа:

  • Lossless (wav, flac, wv, ape, tak, tta, ofr etc.) — аудио закодированное без потерь (при декодировании полученный аудиопоток в точности соответствует тому, что кодировали в Lossless — аналогично распаковке файлов из архива ZIP)

  • Lossy (mp3, ogg, aac, mpc etc.) — аудио сжатое с потерями. При кодировании происходят необратимые потери некоторой части информации (а именно, вырезается та часть звуковых данных, которую человек не воспринимает или же почти не воспринимает).

 

Если в первом случае проблемы качественного воспроизведения сводятся к минимуму, то во втором случае для наиболее качественного воспроизведения необходимо принять определенные меры (смотрите «Рекомендации по воспроизведению аудиоматериала»).
 

2. Программный плеер foobar2000

Теперь рассмотрим подробнее всё, что касается foobar2000. Одним из достоинств этого плеера является очень продуманный и прозрачный тракт. Чтобы наглядно это продемонстрировать я нарисовал блок-схему.

 



 

Примечания:
 
 1. Как видно из схемы, присутствие всех компонентов необязательно — некоторые можно отключать, а некоторые включаются только при необходимости. Так, например, декодер нужен только для сжатых форматов, а конвертер глубины бит включается при несоответствии формата входных данных настройкам вывода (output data format).
2. Для Windows 7 возможен вывод в формате с плавающей точкой (32-bit вывод через DS).

2.1 Декодер

  Декодирует входные данные, в результате чего получаем несжатый звуковой поток в виде импульсно-кодовой модуляции. Большинство lossy декодеров работают в режиме с плавающей точкой (32-бит). На выходе декодеров lossless получаются данные с параметрами аналогичными исходному аудио (которое сжималось).

2.2 Постпроцессор

Этот элемент был включен разработчиком в тракт сравнительно недавно. Выполняет роль декодера форматов HDCD и DTS (только lossless источники — пока только CDDA, WAV, FLAC, ALAC и WV). Так как для успешного декодирования этих форматов данные с обычного декодера должны передаваться бит-в-бит, постпроцессор находится в тракте сразу после него.

2.3 Обработчики

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

2.3.1 ReplayGain

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

   Чем же это грозит? Декодер foobar2000 работает в формате с плавающей точкой, что позволяет ему обрабатывать и описывать волну не только в пределах какого-то диапазона. Например, для 16 бит с фиксированной точкой (16-bit signed integer): 2^16=65536 возможных значений уровня, а именно, числа от -32768 до 32767. Но дело в том, что после того как сигнал передается плеером на вывод, он автоматически преобразовывается в формат с фиксированной точкой.

  Рассмотрим пример. Если мы будем преобразовывать семпл с уровнем 1.000000 (плавающая точка) в формат 16 бит с фиксированной точкой, то получим число 32767 — это максимальный уровень для 16-bit integer. Но не будем забывать, что при декодировании lossy исходный сигнал восстанавливается приближенно, и мы можем получить семплы с более высокими уровнями, например 1.124325. И правильно описать это значение в режиме фиксированной точки уже не получится, т.е. уровень этого семпла он автоматически приравняется к максимальному — 32767.

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

 

Для чего же в нашем случае нужен ReplayGain?

  а) Чтобы определить, выходит ли уровень декодированного сигнала за допустимые пределы, а именно определить пиковый уровень записи — это делает ReplayGain Scanner.

  б) Понизить уровень трека так, чтобы он вписывался в рамки допустимого — после того как сканер произвел сканирование, он записывает ReplayGain теги (с информацией о пиковом уровне), а плеер при проигрывании считывает эти теги и занижает уровень громкости всей записи (именно всей — чтобы не менять баланс громкости между отдельными участками) так, что пик оказывается на максимальном уровне (0 dB на пикметре), а всё остальное — конечно же, не выше этого уровня.

Настройка

1
1

Источник - трек , если Вы хотите сохранять баланс громкости только в пределах одного трека, Альбом — если Вам важен баланс громкости между треками всего альбома.

Обработка  Предотвратить пиковое отсечение (Prevent clipping according to peak) — лучший в большинстве случаев вариант, при котором будет только предотвращаться clipping (уровень, на который будет занижаться громкость, будет рассчитываться с помощью тега track peak или album peak — в зависимости от выбранного source mode).

Применить усиление (Apply gain) — в этом режиме ReplayGain поможет выровнять воспринимаемую громкость прослушиваемых Вами треков (часто воспринимаемая громкость не связана с пиковыми уровнями, т.к. она определяется методом психоакустического анализа); данный вариант не рекомендуется, т.к. при этом может сильно изменяться громкость треков, что только ухудшает положение в плане качества.

Применить усиление и Предотвратить пиковое отсечение (Apply gain and prevent clipping according to peak). в результате анализа трека утилита ReplayGain может посчитать его слишком тихим и прописать в тегах положительное значение усиления, громкость при воспроизведении такого трек будет завышаться, в следствии чего пики результирующего сигнала могут оказаться выше максимального уровня. Этот режим позволяет утилите при воспроизведении анализировать не только тег track (или album — в зависимости от source mode) gain, но и track (album) peak и рассчитывать максимальное допустимое усиление, чтобы предотвратить клиппинг.

Pre-amp: Дополнительное усиление на выбор пользователя. Работает только при включенном Apply gain (или apply gain and prevent clipping), суммируется с усилением из тега Track (Album) gain. Использование данной функции не рекомендуется, т.к., опять же, может негативно повлиять на качество.

With RG Info — для треков с тегами ReplayGain
Without RG info — для треков без тегов Replay Gain.

Примечание: если Вы по какой-то причине не хотите или не можете использовать ReplayGain, есть другой вариант — Advanced Limiter DSP (смотрите ниже).

2.3.2 DSP

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

В идеале любая обработка звука конечно же должна отсутствовать, но в некоторых случаях для достижения более высокого качества приходится использовать некоторые обработчики. В частности, DSP под названием Resampler просто необходим при отсутствии аппаратной поддержки звуковой картой частоты дискретизации воспроизводимого сигнала (чаще всего это материал со звуковых компакт-дисков с частотой дискретизации 44.1 кГц) для выполнения предварительного преобразования звукового потока в вид соответствующий аппаратным возможностям звуковой карты (чаще всего это преобразование 44.1->48 кГц).

Примечание: для встроенных визуализаций поток снимается сразу после прохождения через цепочку DSP.

Выявление некачественной передискретизации

На этот случай существует специальный семпл:

udial.flac
[СКАЧАТЬ] (0.18 MБ)

Этот семпл состоит из последовательности тональных сигналов с наложенным на неё синусоидальным сигналом, частота которого плавает в пределах 19-20 кГц:



 

В случае некачественного софтового ресемплинга, при воспроизведении этого семпла Вы услышите скрежет, шум, или другие искажения.

Примечание: для точной проверки ресемплинга сначала следует установить правильные настройки вывода (см. п. 2.4.1/2.4.2).
 

Настройкa 



Рассмотрим два варианта для воспроизведения материалов с частотой дискретизации 44.1кГц:

a) Ваша карта аппаратно поддерживает данную частоту дискретизации. В этом случае для достижения максимального качества на вкладке DSP должны отсутствовать какие-либо включенные обработчики (первый список, слева).

б) Ваша карта аппаратно НЕ поддерживает данную частоту дискретизации. Для достижения максимального качества установите плагин 1SoX Resampler и выставьте в его настройках максимальную частоту дискретизации, которую аппаратно поддерживает Ваша звуковая карта. После плагина SoX resampler в список активных плагинов обязательно добавьте Advanced Limiter — этот плагин позволит предотвратить клиппинг, «на лету» занижая уровни участков звукового потока которые в результате ресемплинга сигнала (или другой обработки) могут оказываться выше максимального уровня.

Категория: Marvin | Добавил: marvin (16.03.2015)
Просмотров: 1475 | Комментарии: 5
Всего комментариев: 3
avatar
0
1
Всем привет! Большое спасибо за статью!
Вот вопрос такой, вернее, хотелось бы уточнить. Звуковая карта Realtek ALC660/861, аппаратно максимально поддерживает 24 bit, 96000 Hz. По умолчанию стоит 24 bit, 48000 Hz. Еще два режима 16 bit, 48000 Hz и 16 bit, 96000. ОC Win7x64. Поскольку нет аппаратной поддержки 44 Hz, пришлось по статье настроит вывод звука.

Полагаю если опорная частота дискретизации стоит 24 bit, 96000 Hz, то и в Resampler (SoX) тоже должен быть тот же показатель - 96000 Hz. Иначе ресемплинг будет выполнятся дважды и искажение при этом неизбежно, так? Значить в ресемпле показатель всегда должен соответствовать опорной частоте, правильно я понял? И еще вопрос…

Независимо от воспроизведенного материала (44 Hz или 48 Hz) правильно ли всегда ставить опорную частоту на аппаратно максимальную? В моем случии 24 bit, 96000 Hz, так?.. Причем драйверы обновил до версии R2.66. До этого воспроизведение udial.flac искажался…
avatar
0
2
Да конечно, с глубиной квантования все ясно, просто это я описал параметры аппаратной поддержки звуковой карты. Спасибо за детальный ответ. Но все же если воспроизводить материал (44 Hz или 48 HZ) с ресемплингом 48 Hz и 96 Hz то, на 96 Hz заметно «смягчается» звук.

Будто басы сравнимо с 48 Hz не бьют кувалдой. Чувствуется некий как сказать, оживленный звук. По правде, после настройки качество звучания выходного звука значительно увеличилась. Также и аппаратура имеет значимую роль. Думаю на счет софта foobar2000 очень гибкий при подобных настройках. Еще раз мои благодарности...
avatar
0
3
Со статьёй по слепому ABX тесту согласен. Были подобные опыты годами раньше. В принципе некий интерес в области теорий, нежели практики… Вот еще на что обратил внимание: В Windows 7 в монопольном режиме при установке опорного показателя для звуковой карты, если предоставить приоритет приложениям то, можно ли интересно, выбрать один показатель для звуковой карты (скажем 96 Hz), а в foobar’е другую (нап. 48 Hz для SoX ресемплера)?..

   По идеи это не помеха, если все таки имеется ввиду приоритет на приложения, ведь так?.. При этом по умолчанию и устройства тоже используют монопольный режим, что соответствует первому пункту… как вы думаете?
avatar