Дискретизация и теорема Котельникова
Главный шаг оцифровки: как из плавной волны получить список чисел и не потерять звук.
Дискретизация (sampling) — замер амплитуды сигнала через равные промежутки времени; частота этих замеров называется частотой сэмплирования.
Аналоговый сигнал непрерывен, а память компьютера хранит отдельные числа. Чтобы перейти от одного к другому, сигнал сэмплируют: много раз в секунду измеряют его текущую амплитуду и записывают как число. Сколько раз в секунду — это частота сэмплирования (sample rate), измеряется в герцах.
Что значат 16 кГц и 44.1 кГц
Частота 16000 Гц означает 16000 замеров в секунду. Это стандарт для речи. Музыка на CD пишется с 44100 Гц. Чем выше частота сэмплирования, тем точнее воспроизведена волна, но тем больше данных.
| Частота | Где применяется |
| 8 кГц | телефония (узкая полоса) |
| 16 кГц | речь, ASR (Whisper) |
| 44.1 кГц | музыка, CD |
| 48 кГц | видео, профзвук |
Теорема Котельникова-Найквиста
Возникает вопрос: какая частота сэмплирования «достаточна»? Ответ дала теорема, известная как теорема Котельникова (в западной традиции — Найквиста-Шеннона).
Чтобы без потерь восстановить сигнал, частота сэмплирования должна быть как минимум вдвое выше самой высокой частоты в сигнале.
Человек слышит примерно до 20 кГц, поэтому 44.1 кГц (чуть больше 2×20) хватает для музыки. Речь почти вся укладывается в 8 кГц по частоте, поэтому 16 кГц сэмплирования достаточно: 16/2 = 8 кГц граничная частота.
Что будет, если сэмплировать слишком редко
Если частота сэмплирования меньше удвоенной частоты сигнала, возникает алиасинг (aliasing): высокая частота «маскируется» под низкую, и восстановить исходный звук невозможно. Это слышно как искажения. Поэтому перед оцифровкой ставят антиалиасинговый фильтр, срезающий слишком высокие частоты.
Достаточно частые замеры: Слишком редкие (алиасинг):
.-. .-. .-. . .
\ / \ / \ /
x x (ловим форму) x-------x (видим мнимую низкую волну)
Считаем число отсчётов
Простая, но важная арифметика: сколько чисел занимает запись. Это объясняет, почему аудио «тяжёлое».
sample_rate = 16000 # Гц, речь
duration = 10 # секунд
channels = 1 # моно
total_samples = sample_rate * duration * channels
print("Отсчётов всего:", total_samples)
print("При 16 бит на отсчёт байт:", total_samples * 2)
print("Это примерно КБ:", round(total_samples * 2 / 1024, 1))Вывод:
Отсчётов всего: 160000 При 16 бит на отсчёт байт: 320000 Это примерно КБ: 312.5
Десять секунд речи — это 160 тысяч чисел. Теперь понятно, почему модели для звука работают с длинными последовательностями.
Хорошая аналогия дискретизации — съёмка видео кадрами. Камера не видит непрерывное движение: она делает 24 или 60 снимков в секунду, а мозг достраивает плавность. Частота сэмплирования звука — это ровно «сколько кадров в секунду» снимает АЦП с волны давления. И у видео есть свой алиасинг: вспомните, как в кино колёса машины иногда крутятся «назад». Колесо вращается быстрее, чем камера успевает снимать, и из-за редких кадров глаз видит мнимое медленное обратное движение — точно так же слишком редкое сэмплирование звука рождает мнимую низкую частоту.
Откуда вообще берётся «вдвое» в теореме Котельникова? Интуитивно: чтобы распознать одно полное колебание волны, нужно поймать хотя бы две точки — где она вверху и где внизу. Если замерять реже, эти две фазы сливаются, и горб с впадиной не отличить от прямой линии. Поэтому граница ровно на половине частоты сэмплирования называется частотой Найквиста: при 16 кГц это 8 кГц, и всё, что выше, либо отрезается фильтром заранее, либо необратимо «сложится» в слышимый диапазон как искажение.
Эта арифметика напрямую бьёт по кошельку и качеству в реальных проектах. Телефонные сети десятилетиями работали на 8 кГц, и именно поэтому по телефону трудно различить «с» и «ф»: их различия живут выше 4 кГц и просто отрезаны. Когда вы готовите данные для Whisper, важно не только взять 16 кГц, но и грамотно ресэмплировать исходник: тупое выбрасывание каждого второго отсчёта без антиалиасингового фильтра внесёт ложные частоты и ухудшит распознавание. Правильный ресэмплинг всегда сначала фильтрует, а потом прореживает.
Как работает под капотом
Дискретизацию выполняет АЦП (аналого-цифровой преобразователь) в звуковой карте или микрофоне. Он с тактовой частотой (sample rate) «защёлкивает» текущее напряжение и передаёт его дальше как число. Точность каждого числа задаёт разрядность (об этом следующий урок). Так непрерывная волна превращается в массив, который уже можно сохранить, передать и подать в нейросеть.
Частые ошибки
- Брать слишком низкую частоту сэмплирования. Ниже 2×fmax — алиасинг и потеря звука.
- Подавать модели не ту частоту. Whisper ждёт 16 кГц; подача 44.1 кГц без ресэмплинга ломает результат.
- Думать, что выше всегда лучше. Для речи 96 кГц — пустая трата места: полезной информации выше 8 кГц почти нет.
Итоги
- Дискретизация — замеры амплитуды N раз в секунду (частота сэмплирования).
- Теорема Котельникова: частота сэмплирования >= 2× максимальной частоты сигнала.
- 16 кГц для речи, 44.1 кГц для музыки; нарушение порога даёт алиасинг.
- Секунды звука превращаются в десятки тысяч чисел — отсюда «тяжесть» аудио.