Кодирование звука

Звук — это волна, а компьютер хранит её как частые замеры громкости, и объём записи считается по простой формуле V = f · b · t.

Музыка в наушниках, голос в видеозвонке, звук выстрела в игре — всё это внутри компьютера хранится как длинные ряды чисел. Но звук в природе непрерывен: воздух колеблется плавно, без «ступенек». Чтобы записать такую волну в память, её приходится превращать в набор отдельных чисел. Этот процесс называется дискретизацией, и именно от его настроек зависит, сколько места займёт аудиофайл.

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

Два главных параметра: f и b

Чтобы оцифровать волну, нужно ответить на два вопроса: как часто мы её замеряем и насколько точно записываем каждый замер.

Частота дискретизации f

Микрофон много раз в секунду измеряет громкость воздуха. Число таких замеров за одну секунду — это частота дискретизации f, измеряется в герцах (Гц).

  • f = 8000 Гц — телефонный голос (8 тысяч замеров в секунду);
  • f = 44100 Гц — стандарт аудио-CD и большинства музыки;
  • f = 48000 Гц — звук в видео и кино.

Чем больше f, тем точнее восстанавливается волна и тем чище звук, но тем больше отсчётов нужно хранить.

Глубина кодирования b

Каждый отдельный замер громкости тоже нужно записать числом. Сколько бит мы отводим на один отсчёт — это глубина кодирования b (её ещё называют разрядностью).

Если на отсчёт отведено b бит, то различимых уровней громкости получается 2^b (два в степени b). При b = 8 это 256 уровней, при b = 16 — уже 65 536.

Маленькая глубина (8 бит) делает звук «грубым» и шумным; 16 бит — привычное качество CD; 24 бита используют в студиях. Важно: b — это биты на один отсчёт одного канала.

Формула объёма записи

Теперь соберём всё вместе. За одну секунду делается f отсчётов, каждый занимает b бит. За t секунд отсчётов будет f · t. Значит, объём моно-записи (один канал):

V = f · b · t (бит). Здесь f — частота (Гц), b — глубина (бит на отсчёт), t — длительность (с).

Стерео — это две дорожки сразу (левый и правый канал), поэтому объём умножается на число каналов. В общем виде:

V = f · b · t · k (бит), где k — число каналов (моно k = 1, стерео k = 2).

Чтобы перевести результат в байты, делим на 8; чтобы в килобайты — ещё на 1024; в мегабайты — снова на 1024. Запомните цепочку: бит → (÷8) → байт → (÷1024) → Кбайт → (÷1024) → Мбайт.

Разбор задач

Пример 1. Минута телефонного разговора

Дано: f = 8000 Гц, b = 8 бит, t = 60 с, моно (k = 1). Найти объём в Кбайт.

V = 8000 × 8 × 60 × 1 = 3 840 000 бит
= 3 840 000 ÷ 8 = 480 000 байт
= 480 000 ÷ 1024 ≈ 468,75 Кбайт

Меньше половины мегабайта на целую минуту речи — потому что параметры скромные: редкие замеры и грубая глубина.

Пример 2. Десять секунд студийного моно

Дано: f = 48000 Гц, b = 24 бита, t = 10 с, моно. Найти объём в Мбайт.

V = 48000 × 24 × 10 × 1 = 11 520 000 бит
= 11 520 000 ÷ 8 = 1 440 000 байт
= 1 440 000 ÷ (1024 × 1024) ≈ 1,373 Мбайт

Те же 10 секунд, но высокое качество — и файл уже больше мегабайта.

Пример 3. Три минуты песни в стерео (качество CD)

Дано: f = 44100 Гц, b = 16 бит, t = 180 с, стерео (k = 2). Найти объём в Мбайт.

V = 44100 × 16 × 180 × 2 = 254 016 000 бит
= 254 016 000 ÷ 8 = 31 752 000 байт
= 31 752 000 ÷ (1024 × 1024) ≈ 30,28 Мбайт

Вот откуда у несжатого WAV такие размеры: одна песня — десятки мегабайт. Именно поэтому придумали сжатие (MP3 и другие форматы), но это уже отдельная тема.

Сводная таблица примеров

Сравните, как параметры влияют на размер. Все объёмы посчитаны по формуле V = f · b · t · k и переведены в мегабайты (деление на 8 и дважды на 1024).

Что записываемf, Гцb, битt, сКаналы kОбъём, Мбайт
Телефонный голос8 0008601≈ 0,458
Студийное моно48 00024101≈ 1,373
Песня, CD-стерео44 100161802≈ 30,28
1 секунда CD-стерео44 1001612≈ 0,168

Калькулятор объёма аудио

Запустите программу ниже: она считает объём по формуле и сразу переводит его в байты, килобайты и мегабайты. Поменяйте значения f, b, t и channels — например, поставьте моно (channels = 1) или увеличьте длительность — и посмотрите, как меняется размер файла.

f = 44100        # частота дискретизации, Гц
b = 16           # глубина кодирования, бит на отсчёт
t = 180          # длительность, секунды
channels = 2     # каналы: 1 = моно, 2 = стерео

bits = f * b * t * channels      # объём в битах: V = f * b * t * k
bytes_ = bits / 8                # бит -> байт
kbytes = bytes_ / 1024           # байт -> Кбайт
mbytes = kbytes / 1024           # Кбайт -> Мбайт

print("Объём:", bits, "бит")
print("Объём:", int(bytes_), "байт")
print("Объём:", round(mbytes, 2), "Мбайт")

Вывод программы:

Объём: 254016000 бит
Объём: 31752000 байт
Объём: 30.28 Мбайт

Видно главное правило: объём растёт прямо пропорционально каждому из четырёх множителей. Удвоили частоту — файл вдвое больше; перешли с моно на стерео — снова вдвое; взяли 16 бит вместо 8 — опять вдвое. Качество всегда оплачивается местом на диске.

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

  • Забывают про каналы. Для стерео объём нужно умножить на 2. Если в условии сказано «стерео», а k не учли — ответ занижен ровно вдвое.
  • Путают биты и байты. Формула V = f · b · t даёт результат в битах. Чтобы получить байты, обязательно делим на 8.
  • Делят на 1000 вместо 1024. В задачах по информатике 1 Кбайт = 1024 байта, 1 Мбайт = 1024 Кбайт, а не «круглая тысяча».
  • Считают b на всю секунду, а не на отсчёт. Глубина b — это биты на один отсчёт одного канала; на секунду уже приходится f отсчётов.

Коротко

  • Дискретизация превращает непрерывную волну в ряд отсчётов; точность задают частота f (Гц) и глубина b (бит на отсчёт).
  • Глубина b даёт 2^b уровней громкости: 8 бит — 256, 16 бит — 65 536.
  • Объём моно-записи: V = f · b · t (бит); для стерео и многоканального звука умножаем на число каналов k.
  • Перевод единиц: бит → байт делим на 8, дальше на 1024 для Кбайт и ещё на 1024 для Мбайт.
  • Объём растёт пропорционально каждому параметру — выше качество означает больший файл.
Проверьте себя
1. Что означает частота дискретизации f, измеряемая в герцах?
AСколько бит отводится на запись одного отсчёта
BСколько замеров громкости делается за одну секунду
CСколько каналов записи используется
DСколько мегабайт занимает одна секунда звука
2. Глубина кодирования b = 16 бит. Сколько различных уровней громкости можно записать?
A16 уровней
B256 уровней
C65 536 уровней
D1024 уровня
3. По какой формуле считается объём моно-записи в битах?
AV = f + b + t
BV = f · b · t
CV = f · b · t · 8
DV = (f · b) / t
4. Запись стерео отличается от моно тем, что объём нужно...
Aразделить на 2
Bумножить на 2 (на число каналов)
Cумножить на 8
Dоставить без изменений
5. Моно-запись: f = 16000 Гц, b = 16 бит, t = 5 с. Сколько это байт?
A160 000 байт
B1 280 000 байт
C20 000 байт
D80 000 байт
6. Чему равен 1 Мбайт при переводе единиц в задачах по информатике?
A1 000 000 байт
B1024 байта
C1024 Кбайт = 1 048 576 байт
D8 Кбайт
Поддержать проект