Оцифровка звука: как это работает

Как переводят голос в бездушную цифру.

Оцифровка звука: как это работает

Начинаем рассказывать, как работают привычные технологии: компьютерный звук, видео, MP3, вещание и стриминги, всевозможные алгоритмы и всё подобное.

👍 У этой статьи нет никакой практической ценности, она просто для удовольствия. Иногда можно себя побаловать :-)

Немного школьной физики

Звук — это колебания воздуха. Как волны на воде, только в воздухе. Воздух давит нам на уши, а в ушах есть чувствительные части, которые тонко чувствуют колебания воздуха. Эти колебания люди воспринимают как звук. В открытом космосе звуков нет, потому что там нет воздуха. И людей.

Частота. Чем быстрее колебания, тем тоньше воспринимаемый нами звук. Человек воспринимает колебания от 20 раз в секунду до примерно 20 тысяч раз в секунду. По-другому это называется частотой колебаний: герцами. То есть диапазон, который мы слышим — от 20 герц до 20 килогерц.

Для сравнения, собаки слышат от 40 герц до 60 килогерц, поэтому собачий свисток не воспринимается людьми, но очень хорошо слышен собакам. Собачий свисток как раз звучит в диапазоне 23–54 КГц.

Амплитуда. Чем сильнее колебания — тем громче, и наоборот. Можно представить, что это высота волн на поверхности пруда: может быть мелкая рябь (тихий звук), а могут быть большие мощные волны.

График. Если мы произнесём фразу «Привет, это журнал „Код“», то с точки зрения волн он будет выглядеть как-то так (очень примерно):

Оцифровка звука: как это работает

Делим звук на отрезки

Давайте увеличим наш график и посмотрим, что происходит, например, за одну секунду (опять же, очень примерно и упрощённо!):

Упрощённо!

А теперь сделаем вот что: разделим секунду на 4 части, и для каждой найдём значение амплитуды:

Мы за секунду четыре раза измерили состояние волны. Это называется дискретизацией

Мы измерили значение амплитуды в каждой из четырёх точек, получили, условно говоря, четыре числа: +30, −50, −50 и −60. Теоретически, если взять ток и подать эти четыре напряжения на динамик, у нас получится воспроизвести тот же звук. Но есть несколько проблем:

  • Из-за того, что мы замерили волну только в четырёх местах, мы пропустили целое колебание. Оно было настолько быстрым, что уместилось между нашими ключевыми точками.
  • Опять же, из-за больших отрезков мы получим очень грубый звук по сравнению с оригиналом. Это то же самое, как взять картину с тысячей разных оттенков и нарисовать её тремя цветами, не смешивая их.

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

Увеличим частоту дискретизации: нарежем звук на более мелкие кусочки за ту же единицу времени:

Теперь измерения будут намного точнее, а получившийся звук — естественнее

Переводим в цифру

После того как мы разбили звук на мелкие отрезки и измерили значение амплитуды для каждого из них, мы можем записать это в виде таблички:

ВремяАмплитуда
0.01 сек.5
0.02 сек.7
0,03 сек10
......
1 сек−21

Если мы весь звук разбиваем на одинаковые отрезки, то время можно не писать, потому что мы знаем, как оно меняется, достаточно записать в строчку только значения амплитуды:

5 7 10 … −21

Чтобы компьютер понимал эти числа, переведём эти числа в двоичную систему счисления. Для простоты будем считать, что одно число занимает ровно один байт памяти, но на самом деле чем больше байт выделяется на число, тем точнее будет измерение и качество звука. После перевода получим такое:

00000101

00000111

00001010

11101011

Последнее большое число получилось оттого, что нам нужно хранить и отрицательные значения, поэтому первая единица в байте означает, что это отрицательное число и его нужно считать немного иначе.

Вот эту последовательность компьютер уже может понять и воспроизвести в виде звука.

Как теперь воспроизвести звук

Чтобы что-то зазвучало, нужно сделать следующие шаги:

  • Взять колонки или наушники — что угодно, что умеет «толкать воздух», то есть создавать акустические волны. В колонках за это отвечают динамики, к которым подключены специальные мягкие конусы, которые, собственно, и создают колебания воздуха. Та круглая ерунда в колонке — это и есть конус.
  • Подать на эти колонки некий ток. От того, насколько мощный этот ток, конус будет двигаться по-разному.
  • Чтобы получить этот меняющийся ток, нужен специальный чип под названием ЦАП — цифро-аналоговый преобразователь. Он получает на вход число, а на выходе дает ток. У всех ваших смартфонов и компьютеров есть такие ЦАПы.

Итого:

  1. Процессор отправляет цифры из звукового файла в ЦАП.
  2. ЦАП получает числа и выдаёт меняющееся электричество по этим цифрам.
  3. Электричество попадает в колонку, передаётся на динамик.
  4. Динамик из-за электричества начинает двигать конус колонки.
  5. Конус начинает толкать воздух перед собой, создавая звуковые волны.
  6. Волны долетают до наших ушей, и мы воспринимаем их как звук.

Что дальше

У такого способа есть одна проблема: файл получается слишком большим, чтобы им было удобно пользоваться. Представьте: 44 тысячи чисел за одну секунду!

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

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Где ошибка?
Где ошибка?

Эта задача рождена, чтобы ставить вас в тупик.

medium
Вам слово: лучшая клавиатура для разработчика
Вам слово: лучшая клавиатура для разработчика

Собираем мнения уважаемых читателей.

easy
Ваш собственный орфокорректор с автозаменой
Ваш собственный орфокорректор с автозаменой

Проект недели.

hard
Что такое бином Ньютона и почему им всех пугают
Что такое бином Ньютона и почему им всех пугают

Мы им все пользовались в школе, но не знали об этом

medium
Почему создатель первого чат-бота выступал против искусственного интеллекта
Почему создатель первого чат-бота выступал против искусственного интеллекта

Почитали за вас и рассказываем покороче

easy
Зачем устанавливать Ubuntu
Зачем устанавливать Ubuntu

3 причины попробовать.

easy
Как получать обновления на Windows 10 после прекращения поддержки
Как получать обновления на Windows 10 после прекращения поддержки

Способы есть, но всё это временно

easy
Как проверить батарею ноутбука
Как проверить батарею ноутбука

И что делать, если её пора менять

easy
Как устроен тест по выбору языка программирования
Как устроен тест по выбору языка программирования

Добавляем вопросы на страницу прямо во время теста

medium
easy