Обработка цифрового звука
Обработка цифрового звука
Цифровой звук обрабатывается посредством математических операций, применяемых к отдельным отсчетам сигнала, либо к группам отсчетов различной длины. Выполняемые математические операции могут либо имитировать работу традиционных аналоговых средств обработки (микширование двух сигналов - сложение, усиление/ослабление сигнала - умножение на константу, модуляция - умножение на функцию и т.п.), либо использовать альтернативные методы - например, разложение сигнала в спектр (ряд Фурье), коррекция отдельных частотных составляющих, затем обратная "сборка" сигнала из спектра.
Обработка цифровых сигналов подразделяется на линейную (в реальном времени, над "живым" сигналом) и нелинейную - над предварительно записанным сигналом. Линейная обработка требует достаточного быстродействия вычислительной системы (процессора); в ряде случаев невозможно совмещение требуемого быстродействия и качества, и тогда используется упрощенная обработка с пониженным качеством. Нелинейная обработка никак не ограничена во времени, поэтому для нее могут быть использованы вычислительные средства любой мощности, а время обработки, особенно с высоким качеством, может достигать нескольких минут и даже часов.
Для обработки применяются как универсальные процессоры общего назначения - например Intel - так и специализированные цифровые сигнальные процессоры (Digital Signal Processor, DSP) Texas Instruments TMS xxx, Motorola 56xxx, Analog Devices ADSP-xxxx и др.
Разница между универсальным процессором и DSP состоит в том, что первый ориентирован на широкий класс задач - научных, экономических, логических, игровых и т.п., и содержит большой набор команд общего назначения, в котором преобладают обычные математические и логические операции. DSP специально ориентированы на обработку сигналов и содержат наборы специфический операций - сложение с ограничением, перемножение векторов, вычисление математического ряда и т.п. Реализация даже несложной обработки звука на универсальном процессоре требует значительного быстродействия и далеко не всегда возможна в реальном времени, в то время как даже простые DSP нередко справляются в реальном времени с относительно сложной обработкой, а мощные DSP способны выполнять качественную спектральную обработку сразу нескольких сигналов.
Если ближе рассмотреть, к примеру, процесс операции умножения двух чисел с сохранением результата в традиционных микропроцессорах, то можно увидеть как расходуется машинное время: сначала происходит выборка команды (адрес команды выставляется на шину адреса), затем первого операнда (адрес операнда выставляется на шину адреса), затем операнд переносится в аккумулятор, далее происходит выборка второго операнда и т.д. Ускорение этого процесса в процессоре общего назначения невозможна из-за наличия единственной шины адреса и единственной шины данных, а также единственного банка данных. Ввиду этого все операции по извлечению операндов из памяти, выборки команды и сохранения операнда производится последовательно с использованием одной и той же шины данных и шины адреса. Кроме того, если рассмотреть операцию циклического суммирования арифметического ряда, то можно видеть что здесь непроизводительные затраты времени связаны с запоминанием адреса первой команды цикла, с проверкой условия цикла (счетчика) и возвратом к первой команде. Также большие непроизводительные затраты существуют при операциях перехода к подпрограмме и возврата (запись и восстановление значений регистров из стека) и при многих других операциях. Если при этом учесть огромное количество математических операций при выполнении цифровой обработки сигналов, то станет ясно, что неизбежны весьма чувствительные потери в точности вычисления при округлениях, которые не могут не сказаться на общем результате. Это происходит по причине одинаковой разрядности всех регистров процессоров общего назначения.
При цифровой обработке сигналов все эти затраты недопустимы. С целью преодоления этого недостатка процессоров общего назначения и были разработаны процессоры цифровых сигналов (DSP - Digital Signal Processor).