Перейти к основному содержимому

Принцип кодирования звука в PCM

Алгоритм кодирования звука в PCM (Pulse Code Modulation) включает три этапа обработки аналогового сигнала для преобразования его в цифровую форму.

Шаг 1: Дискретизация

На этом этапе непрерывный аналоговый сигнал разбивается на отдельные временные отсчеты (сэмплы). Частота дискретизации определяет количество этих отсчетов в секунду. Например, стандартная частота дискретизации для компакт-дисков составляет 44.1 кГц, то есть выполняется 44,100 измерений амплитуды сигнала каждую секунду.

Формула для расчета количества отсчетов N за период времени T:

Формула 1.

где F — частота дискретизации.

Шаг 2: Квантование

Каждый полученный отсчет амплитуды сигнала необходимо представить в виде конечного числа уровней. Этот процесс называется квантованием. Количество возможных уровней определяется разрядностью (количеством бит) каждого отсчета. Например, при использовании 16-битного квантования возможно представление 2^16 различных уровней амплитуды.

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

Шаг 3: Кодирование

После квантования каждый уровень амплитуды представляется двоичным числом, соответствующим выбранному уровню. Например, в случае 16-битного квантования каждому уровню соответствует 16-битное число.

Формат данных

Каждому отсчету присваивается определенное количество бит, которое зависит от разрядности. Для 16-битного PCM каждый отсчет занимает 2 байта, а для 24-битного — 3 байта.

Байтовый порядок

Важно учитывать порядок следования байтов в файле. Существует два основных порядка:

  • Big-endian: Старший байт идет первым.
  • Little-endian: Младший байт идет первым.

Пример

Рассмотрим простой пример для 4-битного PCM с частотой дискретизации 10 Гц. Пусть у нас есть следующий аналоговый сигнал:

Формула 2.

За период T = 1 секунда выполним 10 измерений (дискретизацию):

Вычислим значения функции в эти моменты времени:

Теперь выполним квантование с использованием 4-битного представления (2^4 = 16 уровней). Допустим, уровни равномерно распределены между -1 и +1. Тогда шаг квантования будет равен 2/15.

Получаем следующие квантованные значения:

Эти значения затем кодируются в двоичную форму:

Это и есть итоговый PCM-кодированный сигнал.

Вложения