Кодирование звука
Звук — это волна, а компьютер хранит её как частые замеры громкости, и объём записи считается по простой формуле 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 000 | 8 | 60 | 1 | ≈ 0,458 |
| Студийное моно | 48 000 | 24 | 10 | 1 | ≈ 1,373 |
| Песня, CD-стерео | 44 100 | 16 | 180 | 2 | ≈ 30,28 |
| 1 секунда CD-стерео | 44 100 | 16 | 1 | 2 | ≈ 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 для Мбайт.
- Объём растёт пропорционально каждому параметру — выше качество означает больший файл.