Как стать автором
Обновить

Искажение озвучиваемых данных

Время на прочтение 3 мин
Количество просмотров 1.3K

В этой работе рассмотрен пример искажения данных, передаваемых в виде звукового потока. Схема передачи данных показана на Рисунок 1. Данные упаковываются в звуковой файл WAV. Проигрыватель озвучивает файл. Состояние канала передачи данных отображается звукозаписывателем. Он же записывает отображаемые данные в звуковой файл по команде пользователя.

 

Рисунок 1. Схема передачи данных
Рисунок 1. Схема передачи данных

В качестве носителя исходных данных был выбран формат WAV, который не сжимает данные. Файл состоит из заголовка (44 байт) и области передаваемых данных. Заголовок содержит информацию о количестве каналов (моно или стерео), разрядности амплитуды, частоте дискретизации, размере файла и др. Заголовок (байты в 16-ричном формате) исходного WAV файла показан на Рисунок 2, выделенные байты означают: “01” - моно, “AC 44” - дискретизация 44100 Гц, “08” – разрядность данных.

 


Рисунок 2. Пример заголовка передаваемого звукового файла WAV (44 байта, слева) и параметры этого заголовка, отображаемые интерпретатором Python (справа)
Рисунок 2. Пример заголовка передаваемого звукового файла WAV (44 байта, слева) и параметры этого заголовка, отображаемые интерпретатором Python (справа)

Для удобства обработки результатов передачи данных исходные данные представлены в виде полуволны амплитудой 100 единиц и длительностью 2 с (Рисунок 3), которая рассчитана средствами Python следующим образом.

dt = 1/44100  # 1/Hz
time_min = 0
time_max = 2
time = np.arange(time_min, time_max, dt)
f = (100 * np.sin((0.25 * 2 * np.pi * time)))

Размер данных: 88200 байт (как 2[с] * 44100 [байт*Гц]), размер WAV файла с заголовком (44 байта) равен 88244 байт.


Рисунок 3. Передаваемые через звуковой WAV файл данные
Рисунок 3. Передаваемые через звуковой WAV файл данные

Для отображения и записи “озвучиваемых” потоков данных использовалась демонстрационная версия Free Audio Recorder 10.1.0 (Рисунок 4). Из пакета установленной программы удален MP3 рекламный ролик, который добавлялся в записываемый файл данных. Развертка дисплея: 30 с, цена деления дисплея: 30 с/42. Показанный на дисплее сигнал формируется при запуске на проигрывателе WAV файла с данными Рисунок 3. Запись данных выделяется зеленым цветом. Длительность показанного сигнала (2 секунды) совпадает с длительностью полуволны Рисунок 3.


Рисунок 4. Дисплей Free Audio Recorder 10.1.0 с отображаемым потоком данных
Рисунок 4. Дисплей Free Audio Recorder 10.1.0 с отображаемым потоком данных

Звукозаписыватель, отображающий передаваемую полуволну (Рисунок 3) как показано на Рисунок 4, создает собственный WAV файл, последовательность байт которого показана на Рисунок 5.


Рисунок 5. Байтовая последовательность записанного потока данных WAV файла (стерео, 16-разрядов)
Рисунок 5. Байтовая последовательность записанного потока данных WAV файла (стерео, 16-разрядов)

Оказалось, что демонстрационная версия записывает WAV файл только в “стерео” формате 16-разрядными амплитудами. На это указал заголовок файла: 

Расшифровка выделенных байт (16-ричный формат):

“02” – стерео;

“02 B1 10” – частота передачи данных 4 x 44100 байт в секунду;

“04” – 4 канала;

“10” – разрядность амплитуды 16 бит.

Для приведения формата записанных данных (стерео, 16-разрядные данные) к формату исходных данных (моно, 8-разрядные данные) выполнены следующие операции:

  1. Удален канал без звука (с 0x00 и 0xFF байтами)

  2. Восстановлена 16-разрядная амплитуда по формуле: A16 = байт_1 * 256 + байт_2.

  3. Амплитуда уменьшена до 8 разрядов: A8 = A16/256.

  4. Удалены данные 0x00 и 0xFF соответствующие состоянию канала до и после “звуковых” данных (Рисунок 4).

Выделенный сигнал показан на Рисунок 6. Размер сигнала 88160 байт, амплитуда 50 бит (от 191 до 241).


Рисунок 6. Выделенные и отмасштабированные амплитуды моно канала записанного WAV файла
Рисунок 6. Выделенные и отмасштабированные амплитуды моно канала записанного WAV файла

Исходный и отфильтрованный шум перехода младшего разряда показан на Рисунок 7. Применен низкочастотный фильтр – скользящее среднее из 100 точек. Средняя частота шума в младшем разряде равна половине частоты квантования 44100/2 Гц. Время “дрожания” младшего разряда пропорционально амплитуде сигнала, количество “шумовых” точек одного перехода меняется от 280 до 630. 


Рисунок 7. Исходный и отфильтрованный шум перехода младшего разряда
Рисунок 7. Исходный и отфильтрованный шум перехода младшего разряда

Начало и пример окончания сигнала (Рисунок 6) показаны на Рисунок 8. Переход с нулевого уровня 0xFF длится 0.01 c (как 400 отсчетов / 44100 Гц). Каждая запись исходной полуволны имеет свое окончание данных – переходный процесс на уровень 0xFF. Было замечено, что записыватель “не видит” короткие последовательности данных, например, линейный сигнал, изменяющийся от 0 до 255, длительностью 256 отсчетов.


Рисунок 8. Начало (слева) и конец (справа) записанного сигнала (Рисунок 6)
Рисунок 8. Начало (слева) и конец (справа) записанного сигнала (Рисунок 6)

Выводы

Передача данных (Рисунок 3) аудио потоком (Рисунок 1) вносит следующие искажения.

  1. Амплитуда сигнала уменьшилась в два раза

  2. Добавилась постоянная составляющая 191 бит.

  3. Изменения младшего разряда сопровождаются шумом, средняя частота которого близка к частоте дискретизации звука, а длительность пропорциональна амплитуде сигнала.

  4. Начало и конец сигнала сопровождаются переходными процессами.

  5. Переходный процесс окончания сигнала зависит от временного интервала между началами записи и сигнала.

  6. Звукозаписыватель “не видит” короткие сигналы порядка 250 отсчетов (записанный файл содержит только 0x00 и 0xFF).

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

Теги:
Хабы:
-2
Комментарии 0
Комментарии Комментировать

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн