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

Процесс кодирования
Начнем с простого. Возможно, из физики ты помнишь определение звука.
Звук — это распространение упругих волн в газообразной, жидкой или твёрдой среде.
В информатике нам из этого определения важно только слово волна. Обычно эта волна передается по воздуху, а человеческое ухо её воспринимает.
Но для того, чтобы передавать звук, обрабатывать его или хранить на цифровых устройствах, его нужно преобразовать в цифровой формат, то есть закодировать.
Кодирование звуковой информации — это преобразование аналогового звукового сигнала в формат, понятный процессору персонального компьютера, то есть в двоичный код.
Смотри, звук — это волны, а компьютер понимает только нули и единицы. Кодирование аудио — это перевод волн звука на язык цифр, понятный компьютеру. Так музыка, голоса и шумы становятся рядами двоичного кода, готовыми к обработке и хранению.
Берем волну и кодируем её нулями и единицами, чего проще-то, да?
А вот нет. Дело в том, что просто так закодировать волну невозможно. Ведь она непрерывна. Каждая точка этой волны имеет свои координаты. Две любые точки на звуковой волне будут разной высоты.
То есть, чтобы закодировать волну, нам нужно представить нулями и единицами бесконечное множество точек. Мы же не можем писать бесконечный код каждый раз, когда нам нужно отправить голосовое, правда?
Поэтому процесс кодирования звука начинается с дискретизации.
Дискретизация звука — это процесс преобразования непрерывных аналоговых звуковых сигналов особым образом, представление целого в виде набора отдельных элементов.
Смотри, у нас есть волна. Сначала мы делим эту волну на небольшие кусочки (по времени), получая конкретные уровни громкости.
То есть вместо одной целой волны мы получаем много маленьких кусочков этой волны.
Фактически дискретизация определяет, сколько раз в секунду мы будем измерять уровень громкости.
Частота дискретизации — это количество измерений звуковой волны в секунду.
То, на сколько частей в секунде мы поделили звуковую волну. Единицы измерения частоты дискретизации — герцы (Гц), но чаще — килогерцы (кГц).
1 кГц = 1000 Гц
В телефонной связи звук кодируется с частотой дискретизации 8000 Гц, — этого достаточно для передачи интонаций и смысла.
После дискретизации идет квантование звука.
Квантование — операция преобразования аналогового сигнала в дискретный посредством деления общего числа отсчётных значений сигнала на конечное число уровней и последующее округление этих значений до одного из двух ближайших к ним уровней.
Дискретизация — это как разрезать волну звука на кусочки. Но эти кусочки всё ещё плавно меняются по высоте. Квантование же — это превращение этих кусочков в ступеньки.
Представь, что ты рисуешь плавную кривую, а потом заменяешь её на лестницу, где высота каждой ступени соответствует одному из заранее определенных уровней громкости. Чем больше ступеней (уровней квантования), тем точнее лестница отображает исходную плавную кривую, и тем качественнее будет звучание.
В результате дискретизации и квантования мы сделали из волны лесенку. Обрати внимание: итоговый результат кодирования не будет идеально совпадать с реальным звуком, но человеческое ухо разницы не услышит.
Пример:
Как по обозначению голосового сообщения понять, громкий ли там звук?
В обозначениях голосовых сообщений ты видишь ту самую «лесенку». Помним: чем выше ступенька — тем громче звук. Сможешь заранее оценить, стоит ли включать голосовое на уроке, или лучше перемену подождать!
В итоге квантования мы получаем закодированную запись — то есть преобразуем каждую ступеньку в двоичную запись.
Чтобы так преобразовать каждую «ступеньку лесенки», мы используем определенное количество бит. Оно определяется глубиной кодирования.
Глубина кодирования для звука — это количество бит, выделяемое на хранение одного уровня громкости, на которые будет разделена звуковая волна по высоте.
Получается, что чем выше наша глубина кодирования — тем выше количество уровней громкости. Следовательно, от глубины кодирования будет зависеть точность отображения звука – и качество его звучания в дальнейшем.
На языке формул это выглядит так:
N = 2i, где
N — количество уровней громкости
i — глубина кодирования
Чтобы уши не сворачивались в трубочку, достаточным считается глубина кодирования в 16 бит. Это — считаем вместе! — 216 = 65 536 уровней громкости. При этом в профессиональной звукозаписи требования другие: там глубина кодирования вполне может составлять даже 32 бит
Еще одна важная характеристика кодируемого звука — это его объемность, то есть количество каналов записи.
Тебе в кинотеатре наверняка встречалась ситуация, когда экран большой, и если что-то гремит с левой стороны экрана — ты и слышишь этот звук слева. Гремит справа — слышишь справа…
Так происходит, потому что используются несколько каналов записи. Тогда в одном файле записывается как бы несколько звуковых волн, которые воспроизводятся одновременно.
Канал может быть 1 — тогда звук называется «моно», 2 — «стерео», или 4 — «квадро». Моно и стерео часто встречаются тебе в жизни, а квадро легко запомнить через ассоциацию с квадратом, у которого 4 угла.
Итак, у нашей закодированной записи звука есть:
- продолжительность t;
- частота дискретизации F — количество кодируемых уровней громкости в 1 секунде;
- глубина кодирования i — вес одного уровня звука;
- объемность (то есть количество каналов записи N)
Чтобы найти полный вес закодированного звука V, нам просто нужно все эти параметры перемножить:
V = F * i * t * N
Примеры:
1. Голосовое сообщение от мамы длиной в 54 секунды записано со средней частотой дискретизации 24 кГц. Сколько весит это цифровое родительское послание, если глубина кодирования – 16 бит?
Считаем. У нас есть F= 24кГц = 24000Гц, i = 16бит, t=54с. Голосовое сообщение не подразумевает несколько каналов записи, N=1, так что можно его в формулу не включать. Получаем V = 24000 * 16 * 54 = 20736000 бит = 2 592 000 байт = 2531,25 Кбайт = 2,472 Мб
2. Пение пятилетней Ани записали в стерео с частотой 16 кГц и 24-битным разрешением. Запись длится 1 минуту, и никакого сжатия данных не производится. Хватит ли маме Ани места на устройстве, чтобы сохранить эту запись, если у нее осталось 5 Мб памяти?
Стерео запись — это запись на два канала, N = 2. F= 16кГц = 16000 Гц, i = 24 бита, t= 1 мин = 60с. Перемножаем: V = 16000 * 24 * 60 * 2 = 46 080 000 бит = 5 760 000 байт = 5,49 Мб. Вывод: памяти Аниной маме не хватит.
Форматы кодирования звука
Их множество.
WAV и WAVE — это неограниченный буфер для звуковой волны. Они записывают всё, каждую мельчайшую вибрацию, без какой-либо экономии места, без всякого сжатия.
Это базовые форматы с дискретизацией 44,1 кГц и глубиной кодирования 16 бит.
Что значит «без сжатия»? Это значит, что минута тишины этого звука занимает столько же места, сколько и объемное звучание.
Есть форматы со сжатием и с потерями в качестве: MP3, AAC, WMA
MP3, AAC, WMA — форматы, использующие ограниченное сжатие, и теряющие при этом в качестве. Но — не сильно. Они удаляют «лишние» частоты, неразличимые для большинства ушей. Басы немного теряются, верха становятся тусклее — ради экономии места. Это как отсеивать шелуху, оставляя только зерно.
FLAC, ALAC и WMA — мастера упаковки, мы бы даже сказали — профики. Сжимают звук, но не теряют в качестве.
Они умно ужимают аудиофайл схожим с архивацией способом. Представь, что ты собираешь пазл и умело укладываешь его в меньшую коробку, не ломая ни одной детали — вот так работают эти форматы.
То, какой формат выбрать, зависит от цели кодирования. Для простого прослушивания музыки будет достаточно сжатия с потерями, а вот для профессиональной работы со звуком такие форматы не подойдут.
Проверь себя
От чего зависит вес аудиофайла?
— от глубины кодирования, частоты дискретизации, продолжительности звука и количества каналов записи
— от глубины кодирования и продолжительности звука
— прежде всего от продолжительности звука и частоты дискретизации
Что означает формулировка «запись в квадро-формате»?
— При записи использовалась глубина кодирования 24 бит
— Было использовано 4 канала записи
— Частота дискретизации равна 4 Гц
Подсчитай количество памяти, которое потребуется тебе для хранения одноканального звукового файла с частотой дискретизации 8 кГц и 16-битным разрешением, если он длится 128 секунд. Ответ запиши в мегабайтах и округли до целого числа.
— 2000
— 2
— 16