PETELIN.RU | Статьи | Сколько весит спектр?
спектр,БПФ,фурье,FFT
PETELIN.RU > Статьи > Сколько весит спектр?

Уроки музыки на компьютере

Урок 12.
Сколько весит спектр?

Юрий Петелин

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

Классический спектр

Начнем с разложения в ряд Фурье периодического сигнала. Всякая периодическая функция может быть представлена в виде разложения в ряд по тригонометрическим функциям
(1)

Таким образом, периодическая функция s(t) представлена суммой слагаемых, каждое из которых есть не что иное, как синусоидальное колебание с амплитудой ck и начальной фазой k.

Совокупность коэффициентов ck называется амплитудным спектром сигнала, а k - фазовым спектром.

Частоты всех синусоидальных колебаний, из которых составляется периодическая функция s(t), кратны основной частоте F = 1/T. Отдельные составляющие называются гармониками. Колебание с частотой F называется первой гармоникой (k = 1), с частотой 2F - второй гармоникой (k = 2) и т. д.

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

Если T®, то F ®df, а 2pk/T®w(параметр - круговая текущая частота). Опуская подробности всех математических преобразований, которые необходимо выполнить при таком предельном переходе, сразу приведу итоговые формулы - основные соотношения теории спектров. Они представляют собой пару преобразований Фурье, связывающих между собой две функции: вещественную функцию времени s(t) и комплексную функцию частоты G(w):
(2)
(3)

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

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

Текущий спектр

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

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

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

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

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

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

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

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

Проиллюстрируем сказанное примером текущего спектра синусоидального колебания.

При интегрировании в бесконечных пределах спектр синусоиды представляет собой единственную линию на частоте, равной частоте этой синусоиды (рис. 1).


Рис. 1. Спектр синусоидального сигнала при интегрировании на интервале, стремящемся к бесконечности

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


Рис. 2. Спектр прямоугольного импульса конечной длительности с синусоидальным заполнением

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

Мгновенный спектр

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

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

Для чего же нужны тогда все эти измерения спектра, если они не дают достоверной картины реального развития тембра музыкального произведения? На основе такого анализа трудно построить детальную стратегию последующей обработки фонограммы. Все дело в том, что не только спектр, вычисленный на бесконечном временном интервале, но и текущий спектр - слишком грубый инструмент в случаях анализа нестационарного процесса. Для того чтобы сблизить частотное и временное представления сигнала, было введено понятие мгновенный спектр. Мгновенный спектр - это спектр отрезка процесса длительностью T, непосредственно предшествующего данному моменту времени t.

В этом определении мы имеем дело со скользящим интегрированием: интервал интегрирования имеет постоянную длину, но перемещается по оси времени, хотя относительно текущего времени расположен неизменно.

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

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

Отображение мгновенного спектра

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

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

Характерный пример дает программа Spectrum Analyzer Professional, созданная для анализа спектра сигналов, не только формируемых любым аналоговым источником, подключенным к входу звуковой карты, но и сохраненных в WAV-файлах. На рис. 3 показано окно анализатора спектра, в котором отображается мгновенный спектр последовательности прямоугольных импульсов. Выбран режим отображения спектра Lines (в виде сплошной линии).


Рис. 3. Отображение мгновенного спектра в координатах "частота-спектральная плотность"

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


Рис. 4. Отображение мгновенного спектра в трех координатах

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

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

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


Рис. 5. Цветовое отображение мгновенного спектра

Сколько весит спектр?

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

Как вычисляется одна единственная точка графика спектра? Исчерпывающий ответ на этот вопрос дают формулы. Чтобы их вид не приводил вас в состояние священного трепета, попытаюсь разъяснить обычными словами то, что записано математическими символами.

Сначала выбирается частота f0. Реальный или виртуальный генератор формирует синусоиду этой частоты и условно-единичной амплитуды. Исследуемый сигнал нормируется по амплитуде. Начиная с какого-то определенного момента t0, с шагом Dt (чем он меньше, тем лучше) в моменты времени t0, t1, t2, t3,…, ti,…, tN-1 с этой синусоидой и исследуемым сигналом проделываются следующие операции:

  • Берется отсчет синусоиды

  • Берется отсчет исследуемого сигнала

  • Эти отсчеты перемножаются

  • Результаты перемножения суммируются с накоплением

В некоторый момент измерение спектра на частоте f0 завершается. Накопленная сумма делится на общее число отсчетов. Вычисленное значение G(f0) запоминается и, возможно, отображается как одна точка графика. Затем накопленная сумма обнуляется, значение частоты изменяется на величину f (выбирается новое значение частоты f1). И вся последовательность операций повторяется до тех пор, пока "пробежкой" по ряду частот f0, f1, f2,…, fN-1 не будет перекрыт весь заданный диапазон.

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

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

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

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

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

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

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

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

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

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

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