Дискретизация сигнала, частота дискретизации, глубина кодирования звука и объём звукового файла
Аналоговый и цифровой звук
Звук в природе — это непрерывное колебание давления воздуха, которое можно представить непрерывной (аналоговой) функцией — зависимостью амплитуды сигнала от времени. Компьютер же способен хранить только конечные наборы чисел, поэтому для записи звука в цифровом виде непрерывный сигнал нужно превратить в последовательность отдельных числовых значений — эту процедуру называют дискретизацией.
Дискретизация звукового сигнала
При дискретизации аналоговый сигнал через равные промежутки времени «измеряют» — фиксируют его мгновенную амплитуду. Каждое такое измерение называют отсчётом, или сэмплом. Полученная последовательность отсчётов приближённо описывает исходный непрерывный сигнал: чем чаще берутся отсчёты и чем точнее измеряется амплитуда каждого из них, тем ближе цифровая запись к оригинальному звуку.
Частота дискретизации
Частота дискретизации f — это количество отсчётов сигнала, производимых за одну секунду; измеряется в герцах (Гц). Например, частота дискретизации звука на аудио-CD составляет 44100 Гц: это значит, что за каждую секунду фиксируется 44100 значений амплитуды сигнала. Чем выше частота дискретизации, тем точнее цифровая запись воспроизводит быстрые изменения исходного звука (в частности, высокие частоты).
Согласно теореме Котельникова (в зарубежной литературе — теореме Найквиста–Шеннона), чтобы сигнал с максимальной частотой f_max был воспроизведён без искажений, частота дискретизации должна как минимум вдвое превышать эту максимальную частоту:
Именно поэтому для качественной записи звука, воспринимаемого человеческим ухом (до примерно 20 кГц), выбирают частоту дискретизации не менее 40 кГц — отсюда и стандарт 44,1 кГц для аудио-CD.
Глубина кодирования звука
Каждый отсчёт — это число, характеризующее амплитуду сигнала в данный момент времени, и это число также должно быть закодировано конечным числом бит. Количество бит, отводимых на один отсчёт, называют глубиной кодирования звука i (по аналогии с глубиной цвета в графике). Чем больше глубина кодирования, тем больше уровней громкости (амплитуды) можно различить и тем точнее цифровая запись передаёт исходный сигнал. Число различимых уровней амплитуды K связано с глубиной кодирования уже знакомой формулой:
Формула объёма звукового файла
Информационный объём V цифровой звукозаписи (в битах) зависит от частоты дискретизации f, длительности записи t (в секундах), глубины кодирования i (в битах) и количества независимых звуковых каналов (моно — 1 канал, стерео — 2 канала):
Как и в случае с изображениями, результат формулы получается в битах, и для перевода в байты его нужно разделить на 8.
Пример 1. Объём моно-записи
Дано: произведена моно-запись звука длительностью 10 секунд с частотой дискретизации 44100 Гц и глубиной кодирования 16 бит. Найдите объём файла в битах и байтах.
Решение. Число каналов равно 1 (моно), подставляем данные в формулу:
Переводим в байты:
Ответ: 7 056 000 бит = 882 000 байт ≈ 861,33 Кбайт.
Пример 2. Объём стереозаписи CD-качества
Дано: стереозапись (2 канала) длительностью 1 минута с частотой дискретизации 44100 Гц и глубиной кодирования 16 бит (типичные параметры аудио-CD). Найдите объём записи в мегабайтах.
Решение. Переведём время в секунды: t=60 с. Подставим все данные в формулу:
Переводим в байты и далее в мегабайты:
Ответ: около 10,09 Мбайт — это хорошо согласуется с известным практическим фактом, что одна минута несжатого звука CD-качества занимает порядка 10 Мбайт.
Типичные параметры звукозаписи
| Применение | Частота дискретизации | Глубина кодирования | Каналы |
|---|---|---|---|
Телефонная связь | 8000 Гц | 8 бит | 1 (моно) |
Голосовые заметки среднего качества | 22050 Гц | 16 бит | 1 (моно) |
Аудио-CD | 44100 Гц | 16 бит | 2 (стерео) |
Студийная запись высокого качества | 48000–96000 Гц | 24 бита | 2 (стерео) |
Программная иллюстрация: расчёт объёма звукового файла
Рассмотрим программу на Python, вычисляющую объём несжатого звукового файла по частоте дискретизации, длительности, глубине кодирования и числу каналов, и сравнивающую несколько типичных режимов записи.
def audio_file_size(freq, duration_s, depth_bits, channels=1):
"""Возвращает объём несжатой звукозаписи в байтах."""
total_bits = freq * duration_s * depth_bits * channels
return total_bits / 8
size = audio_file_size(44100, 60, 16, 2)
print(f"Стерео CD, 1 минута: {size:.0f} байт = {size / 1024 / 1024:.2f} Мбайт")
modes = [
("телефон", 8000, 8, 1),
("CD-аудио", 44100, 16, 2),
("студийная запись", 48000, 24, 2),
]
for name, freq, depth, ch in modes:
bytes_per_sec = audio_file_size(freq, 1, depth, ch)
print(f"{name}: {bytes_per_sec:.0f} байт/сек")
Функция audio_file_size напрямую реализует формулу V=f·t·i·(число каналов); во втором фрагменте она вызывается с t=1 секунда, чтобы получить скорость потока данных (байт в секунду) для разных типичных режимов записи из таблицы выше.
Типичные ошибки
Частая ошибка — забыть учесть количество каналов при расчёте объёма стереозаписи, что занижает результат ровно в два раза по сравнению с моно-записью тех же параметров. Вторая ошибка — перепутать частоту дискретизации (число отсчётов в секунду, измеряемое в герцах) с глубиной кодирования (числом бит на один отсчёт) — это принципиально разные величины, обе из которых входят в формулу объёма, но отвечают за разные аспекты качества записи: частота дискретизации — за точность по времени, глубина кодирования — за точность по амплитуде (громкости). Третья ошибка — не перевести длительность записи из минут (или других единиц) в секунды перед подстановкой в формулу, так как частота дискретизации задаётся именно в отсчётах за секунду.
Краткий словарь терминов
Дискретизация — преобразование непрерывного аналогового сигнала в последовательность отдельных числовых отсчётов.
Отсчёт (сэмпл) — одно измеренное и закодированное значение амплитуды звукового сигнала в определённый момент времени.
Частота дискретизации — число отсчётов сигнала, производимых за одну секунду (измеряется в герцах).
Глубина кодирования звука — количество бит, отводимых на кодирование одного отсчёта (уровня амплитуды сигнала).
Теорема Котельникова — утверждение о том, что частота дискретизации должна быть не менее чем вдвое выше максимальной частоты кодируемого сигнала.
Канал звукозаписи — независимый поток звуковых данных (моно — один канал, стерео — два канала).
Заключение
Кодирование звука, как и кодирование графики, опирается на дискретизацию непрерывного сигнала: звуковая волна разбивается на отдельные отсчёты, каждый из которых кодируется фиксированным числом бит (глубиной кодирования), а итоговый объём записи вычисляется по формуле V=f·t·i·(число каналов). Чем выше частота дискретизации и глубина кодирования, тем точнее цифровая запись передаёт исходный звук, но тем больше памяти она занимает. Рассмотрев кодирование текста, изображений и звука, в следующей теме мы перейдём от представления информации к её внутреннему устройству в памяти компьютера — системам счисления, лежащим в основе любого двоичного кода.



