Зачем обрабатывать сигналы

Понимаем, какие практические задачи решает DSP и почему её делают именно в цифре.

Цифровая обработка сигналов — это применение алгоритмов к отсчётам сигнала, чтобы извлечь информацию, улучшить качество или преобразовать сигнал в нужную форму.

Зачем вообще что-то «обрабатывать»? Потому что сырой сигнал от датчика почти никогда не годится напрямую: в нём шум, наводки, лишние частоты, неудобный масштаб. DSP — это набор инструментов, который превращает сырьё в полезный результат.

Четыре больших задачи DSP

  1. Очистка (фильтрация). Убрать шум, сетевую наводку 50 Гц из ЭКГ, фон вентилятора из записи голоса. Это самая частая задача.
  2. Анализ. Узнать, какие частоты есть в сигнале, найти основной тон голоса, обнаружить пик или эхо, измерить пульс по кардиограмме.
  3. Преобразование. Сжать звук в MP3, изменить тональность, наложить эффект, перенести радиосигнал на другую частоту (модуляция).
  4. Распознавание. Понять, что за слово сказано, какая мелодия играет, есть ли аритмия — это вход в машинное обучение, но признаки для него готовит DSP.

Почему именно в цифре

Раньше всё это делали аналоговыми схемами: катушки, конденсаторы, операционные усилители. Цифровой подход победил, потому что:

Аналоговая обработкаЦифровая (DSP)
фильтр — это паяная схемафильтр — это несколько строк кода
параметры «плывут» от температурыидеальная повторяемость, точность задаёт разрядность
сложно перенастроитьпоменял число в массиве — готов новый фильтр
каждая функция — отдельное железоодин процессор делает всё программно

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

Самый простой пример обработки: сглаживание

Покажем суть DSP на крошечной задаче. Есть зашумлённые показания датчика; хотим сгладить их, заменяя каждое значение средним по трём соседним. Это уже фильтр — простейший фильтр скользящего среднего.

# Зашумлённые показания датчика
raw = [20, 22, 19, 50, 21, 23, 20, 22]   # 50 - явный выброс

def smooth(x):
    out = []
    for i in range(len(x)):
        lo = max(0, i - 1)
        hi = min(len(x), i + 2)
        window = x[lo:hi]
        out.append(round(sum(window) / len(window), 1))
    return out

print("Было:", raw)
print("Стало:", smooth(raw))

Вывод:

Было: [20, 22, 19, 50, 21, 23, 20, 22]
Стало: [21.0, 20.3, 30.3, 30.0, 31.3, 21.3, 21.7, 21.0]

Выброс 50 «размазался» и стал менее резким, соседи подтянулись к нему. Усреднение по окну — это и есть простейшая свёртка, главная операция DSP, которой посвящён отдельный раздел.

Как работает под капотом

Любой DSP-алгоритм — это арифметика над массивом: сложения, умножения и иногда комплексные числа. Никакой магии. Сложные эффекты собираются из простых кирпичиков: задержка, умножение на коэффициент, суммирование. Поэтому, освоив несколько базовых операций (сдвиг, масштаб, свёртка, преобразование Фурье), вы сможете собрать почти любой обработчик. Специальные чипы (DSP-процессоры, например серия TI C6000) умеют делать «умножить-и-накопить» за один такт, потому что именно эта операция встречается в DSP миллиарды раз в секунду.

Частые ошибки

  • «Сначала обработаю, потом подумаю, что было в сигнале». Без понимания природы сигнала (частоты, диапазон) фильтр легко настроить так, что он убьёт полезное вместе с шумом.
  • Считать сглаживание бесплатным. Любой фильтр что-то искажает: сглаживание «съедает» резкие фронты и вносит задержку. Всегда есть компромисс.
  • Применять DSP вслепую вместо измерения. Прежде чем фильтровать, полезно посмотреть спектр и понять, какие частоты лишние.

Итог

  • DSP решает четыре класса задач: очистка, анализ, преобразование, распознавание.
  • Цифровая обработка точна, повторяема и перенастраивается изменением чисел в коде.
  • Даже простое скользящее среднее — уже фильтр и частный случай свёртки.
  • Любой алгоритм DSP сводится к сложениям и умножениям над массивом отсчётов.
Проверьте себя
1. Что НЕ относится к типовым задачам DSP?
AШумоподавление в записи голоса
BПоиск основной частоты сигнала
CКомпиляция исходного кода в машинный
DСжатие звука в MP3
2. Главное преимущество цифровой обработки перед аналоговой:
AОна всегда быстрее любой схемы
BТочность, повторяемость и перенастройка изменением чисел в коде
CОна не вносит никаких искажений
DОна не требует дискретизации
3. Фильтр скользящего среднего — это частный случай какой операции?
AПреобразования Фурье
BСвёртки
CКвантования
DМодуляции