Главная » Программирование звука » Наложение спектров

0

Предел Найквиста, о котором я рассказал выше, это очень важное ограничение,  имеющее  огромный  практический  эффект.  Представьте  себе, что  вы  работаете  со  звуком,  при  дискретизации  которого  моментальные  значения  брались  8000 раз в секунду. В таком случае предел Найквиста составит 4000 Гц. Если вы попытаетесь записать сигнал частотой 5000 Гц (что на 1000 Гц выше предела Найквиста), то при воспроизведении сигнала получится звук частотой 3000 Гц (на 1000 Гц ниже  предела  Найквиста).  Один  из  самых  важных  аспектов  работы  с  оцифрованным  звуком   эффект  наложения  спектров   может  стать  источником  значительных затруднений.

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

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

Для  иллюстрации  эффекта  наложения   спектров  рассмотрим,  что  произойдет в  случае,  если  мы  попытаемся  провести  дискретизацию  чистого  прямоугольного  сигнала  частотой  440  Гц,  считывая  8000  моментальных  значений  в  секунду.  На  рис.  3.6 показана прямоугольная волна, а точки соответствуют моментальным значениям.

На  рис.  3.7  показан  спектр  этого  аналогового  сигнала.  Рассматривая  его  слева направо,  мы  видим,  что  пики  появляются  на  частотах  440  Гц,  1320  Гц  (третья  гармоника),  2200  Гц  (пятая  гармоника)  и  так  далее.  Эти  гармоники  довольно  сильные.  Величина  одиннадцатой  гармоники  (4840  Гц)  составляет  1/11  долю  базовой гармоники 440 Гц, что соответствует различию всего в 21 дБ.

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

При  воспроизведении  этого  сигнала  выходная  схема  будет  выбирать  паразитные  частоты,  не  превышающие   предел  Найквиста.  Спектр   получившегося  сигнала  будет  выглядеть  приблизительно  так,  как  показано  на  рис.  3.8.  Обратите  внимание  на  то,  как  для  всех  этих  составляющих  были  выбраны  ложные  частоты,  не превышающие предел Найквиста в 4000 Гц.

Важно  отметить  тот  факт,  что  ни  один  из  приведенных  спектров  нельзя  назвать  правильным  или  неправильным.  Речь  идет  просто  о  разных  точках  зрения на одни и те же моментальные значения. Это вызывает проблему наложения спектров: у любого набора отсчетов нет уникального спектра. Несмотря на это, чтобы избежать неопределенности, мы всегда выбираем спектр, частоты которого не превышают предел Найквиста. Хотя рис. 3.7 и рис. 3.8 соответствуют одному и тому же набору выборок, мы всегда будем использовать тот, что изображен на рис. 3.8 (по  правде  говоря,  вся  цифроаналоговая  схемотехника  разрабатывается  с  учетом этого  предположения).  Загвоздка  в  том,  что,  хотя  оба  эти  спектра  соответствуют одинаковым  отсчетам,  сигналы,  обладающие  этими  спектрами,  не  будут  одинаковыми. В нашем примере окончательный выходной сигнал будет выглядеть так, как показано  на  рис.  3.9.  Моментальные  значения  (показанные  точками)  расположены точно так же, как и на рис. 3.6, но получившийся сигнал выглядит (и звучит) совсем  по-другому.  Учтите,  что  воспроизводимый  сигнал нельзя  получить,  просто

«соединив точки».

Для понимания одной из причин того, что данный эффект представляет собой проблему, необходимо учесть еще один факт. Ранее я использовал пример сигнала

частотой  5000  Гц,  подвергнутого  дискретизации  с  частотой  8000  Гц.  Поскольку эта частота сигнала на 1000 Гц превосходит предел Найквиста, сигнал будет иметь ложную частоту на 1000 Гц ниже предела Найквиста. Помимо этого, у сигнала будет еще бесконечно много других ложных частот, расположенных попарно:

4000±1000 Гц

12000+1000 Гц

20000±1000 Гц

28000±1000 Гц

36000±1000 Гц

Обратите  внимание  на  то,  что  центральные  частоты  этих  пар  расположены  на расстоянии 8000 Гц друг от друга. Если постепенно увеличивать эту синусоиду частотой 3000 Гц, то одни паразитные частоты будут усиливаться, другие ослабляться. Аналогично,  при дискретизации  затухающего  сигнала  частотой  5000 Гц в  ходе воспроизведения можно получить нарастающий сигнал частотой 3000 Гц.

Этот  эффект  особенно  заметен  в  случаях,  когда  кривая  сигнала  имеет  более

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

Чтобы   предотвратить   появление   проблем   подобного   рода,   вам   необходимо избежать  использования  частот,  превышающих  предел  Найквиста.  В  случае  прямоугольной  волны,  изображенной  на  рис.  3.6,  если  брать  только  частоты,  не  превышающие  предел  Найквиста,  у нас  получится  прямоугольный  сигнал  с ограниченной  полосой  частот,  показанный  на  рис.  3.10.  Хотя  этот  сигнал,  быть  может, выглядит менее прямоугольным, чем изображенный на рис. 3.9, на самом деле это представление  гораздо  качественнее  и  его  звучание  настолько  близко  к  реальному  сигналу,  насколько  это  возможно.  Чтобы  добиться  сигнала  лучшего  качества, необходимо  применять  более  высокую  частоту  дискретизации,  соответствующую значительно  более  высокому  пределу  Найквиста,  что  позволит  использовать  более высокие частоты.

в выходном сигнале

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

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

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

Собственно  процесс  сверхдискретизации  заключается  в  записи  дополнитель-

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

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

22050  Гц.  Результирующее  воздействие  этого  процесса,  таким  образом,  заключается  в  цифровом  подавлении  ложных  частот  в  диапазоне  от  22050  до  88200  Гц с целью упрощения аналоговой фильтрации.

Передискретизация

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

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

Один  из  вариантов  подобного  преобразования,  необходимого  для  наложения звуков,  заключается  в  понижающей  передискретизации  записи  музыки  с  44100 отсчетов  в  секунду  до  11025.  Для  начала  представим  себе  исходный  аналоговый сигнал,  каждая  секунда  которого  «нарезана»  на  44100  «ломтиков»  (см.  рис.  3.1). Очевидно,  чтобы  в  секунде  осталось  11025  «ломтиков»,  придется  использовать только каждый четвертый.

Это, безусловно, серьезное препятствие. В изначальных 44100 фрагментах могли быть частоты вплоть до 22050 Гц, что значительно превосходит предел Найквиста для частоты дискретизации 11025 Гц, которой вы хотите добиться. Для получения  качественного  сигнала  вам  придется  сначала  отфильтровать  запись  музыки, чтобы вырезать из нее частоты, превышающие 5512 Гц, а после этого взять каждый четвертый отсчет. Более подробно фильтрация обсуждается в главе 25.

Другая   возможность     это   повышающая   передискретизация   записи   голоса с 11025 отсчетов  в  секунду до  44100. Здесь  возможны  два  подхода. Первый   последовательно,  значение  за  значением,  анализировать  имеющуюся  запись  и  определять   способ,   с   помощью   которого   задавать   отсутствующие   промежуточные значения.  При  таком   подходе,  называемом   интерполяцией,  можно   использовать множество   математических   методов.   Проблема,   возникающая   при   этом,   заключается  в  отсутствии  детального  представления  о  том,  что  происходит  со  спектром частот обрабатываемого сигнала.

Попробуем    воспользоваться    более    легким    подходом    для    преобразования записи   с   11025   отсчетами   в   секунду   в   запись,   содержащую   44100   отсчетов в  секунду,   просто  повторим  каждое  значение  4  раза.  В  результате  мы  получим зубчатый   сигнал,   который   имитирует   имеющий   меньшее   разрешение   сигнал и, несомненно, содержит ложные частоты требуемого сигнала. Чтобы получить качественный  сигнал,  потребуется  отфильтровать  эти  помехи  до  того,  как  вы  станете дублировать выборки.

Сходство    между    передискретизацией    и    цифроаналоговым    преобразованием   не   случайно.   Аналоговый   электрический   сигнал   можно   рассматривать   как цифровой   с   бесконечной   частотой   дискретизации.   В   сущности,   цифроаналоговое   или   аналого-цифровое   преобразование     это   предельный   случай   передискретизации.

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

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

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии