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

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

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

Начинаем рассказывать, как работают привычные технологии: компьютерный звук, видео, 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
Сайзкодинг: искусство создавать маленькие программы

Чем меньше, тем лучше

easy
Классы и функции

Что и когда лучше использовать, чтобы писать хороший код.

medium
Нейросети в браузере: как это работает

Что под капотом у нового Яндекс Браузера с нейросетями

easy
Честный рассказ аналитика данных о своей профессии

Как попасть в аналитику и получать желаемую зарплату

easy
«Никто не верил, что я сама пишу код»

Анастасия Никулина: о дата-сайнс, ютубе и программировании.

Как работает авторегистрация пользователя на сайтах

Это когда только зашёл на сайт и сразу получил аккаунт без регистрации

medium
easy
[anycomment]
Exit mobile version