Разработка функционала для работы с не кодированными звуковыми файлами
Описание возможных сценарием работы с некодированным звуковым файлом в формате wav PCM. Определение методов считываия данных из файла, построения частотно-волнового спектра, изменения амплитуды волны аудиофайла и сохранения результата аудиодетектором.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | статья |
Язык | русский |
Дата добавления | 27.05.2020 |
Размер файла | 421,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
10
Разработка функционала для работы с не кодированными звуковыми файлами
А.В. Кейп, студент
Научный руководитель:
Е.А. Слива, старший преподаватель
Нижневартовский государственный университет
(Россия, г. Нижневартовск)
Аннотация
В данной статье рассматриваются возможные сценарии работы с некодированным звуковым файлом в формате wav PCM (Pulse-code modulation). В работе рассматриваются методы считывания данных из файла, построения частотно-волнового спектра, изменения амплитуды волны аудиофайла и сохранения результата. В качестве результата исследования был создан простейший аудиоредактор, который может являться базой для разработки программного решения в области работы со звуком.
Ключевые слова: редактирование звука, программирование, разработка функций, аудиоформат, звуковой редактор.
частотный спектр кодировка звуковой файл
Мы живём в такое время, когда хранение и обработка мультимедийной информации в цифровом формате является привычным делом. Люди всё чаще делают аудиозаписи с целью сохранить или передать ту или иную информацию в звуковом формате. Это может быть аудиокнига, песня или просто запись звукоряда, которая является памятью о каком-то событии. Зачастую такие файлы нуждаются в редактировании, целью которого может быть: устранение артефактов при записи, обрезка записи или придание коммерческого звучания.
В основе кодирования звука с использованием ПК лежит процесс преобразования колебаний воздуха в колебания электрического тока и последующая дискретизация аналогового электрического сигнала. Кодирование и воспроизведение звуковой информации осуществляется с помощью специальных программ (редактор звукозаписи) [1]. В данной работе был разработан собственный вариант редактора звукозаписи. В качестве инструментария разработки были выбраны: язык программирования C++, средой для разработки - Qt.
Считывание данных wav файла
Для начала работы с файлом необходимо открыть его в программе. Для связи файла с программой был выбран стандартный класс Qt QFile. Для воспроизведения и чтения метаданных (длительность, исполнитель, заголовок) аудиофайла был использован класс QMediaPlayer. С помощью созданных объектов классов была написана функция открытия файла и подключения его к QMediaPlayer.
Анализ wav PCM файла
Спектрально-волновая диаграмма представляет собой подряд записанные значения амплитуды, которые воспроизводятся в конкретные временные отрезки. Значения положения и длительности этих отрезков определяются исходя из частоты дискретизации файла. Например, если частота дискретизации 44100 Гц, это означает, что за 1 секунду значение амплитуды может измениться 44100 раз. От значений амплитуды зависит громкость воспроизводимого звука, а от скорости изменения звука - высота тона (рис. 1).
Рис. 1. Спектрально-волновая диаграмма
Для начального анализа был выбран несжатый формат .wav PCM. PCM (Pulse--code modulation) расшифровывается как импульсно-кодовая модуляция. При импульсно-кодовой модуляции аналоговый передаваемый сигнал преобразуется в цифровую форму посредством трёх операций: дискретизации по времени, квантования по амплитуде и кодирования [2]. Это значит, что в файле будут последовательно записаны данные амплитуды волны для каждой единицы времени. Формат .wav был выбран, т.к. он имеет простую структуру (таблица) [3]:
Таблица. Структура wav PCM файла
Местоположение |
Содержание |
Описание |
|
0..43 (44 байта) |
metadata |
Данные о типе файла, такие как: частота дискретизации, глубина кодирования, количество каналов и т.д. |
|
44.. |
data |
Непосредственно WAV-данные, содержащие значения амплитуды волны. |
Для построения спектрально-волновой диаграммы необходимо было считать данные из секции data. Для этого следует использовать побайтовое чтение из файла, что было реализовано с помощью класса Qt QByteArray. В качестве файла для анализа был выбран файл с глубиной кодирования звука 16 бит, значит одно значение амплитуды будет кодироваться 2-мя байтами.
Нужно было определить в каком порядке располагаются байты (старший-младший). Поскольку формат WAV-файла разрабатывался как формат для приложений операционной системы Windows, в которой традиционно использовались процессоры Intel, все значения данных формата хранятся как Little-Endian, т. е. самый младший значащий байт идет первым [4].
Так как одно значение амплитуды кодируется 2 байтами, то нужно использовать побитовое смещение старшего байта и дизъюнкцию его с младшим байтом, а далее преобразовывать это значение к какому-то диапазону (был выбран диапазон [-1..1]). Для чтения массива значений амплитуд была разработана функция getSpectrumArray. Данная функция считывает данные из файла и преобразует их в массив амплитуд для удобной работы со значениями в дальнейшем.
Отображение графика в программе
Для отображения графика на форме был создан объект QGraphicsView. На этом объекте поочередно строятся линии, которые отображают зависимость амплитуды от времени. Для построения графика был выбран аудиофайл длительностью 10 секунд (небольшой размер для быстрой отрисовки). Так как рисовать линии абсолютно для всех изменений значений (а это 44100Гц * 10 сек = 441000 изменений) было бы слишком затратно по времени и ресурсам вычислительной машины, а такое точное отображение графика, как правило, не будет востребовано, то было принято решение считывать изменения волны через определенные промежутки. После ряда тестов, по которым оценивались скорость отрисовки и точность измерения амплитуды волны, было выявлено, что оптимальным промежутком для считывания является 100 единиц. Но так как волна отображалась только через каждые 100 измерений, то между этими изменениями оставались пустые промежутки. Чтобы решить эту проблему, было принято решение увеличить «плотность» волны на графике, уменьшив изменяемое значение отображения времени в 10 раз. Так как значения амплитуды волны находились в промежутке [-1;1], то необходимо было увеличить диапазон её отображения. Для этого каждое значение амплитуды было умножено на 200. Для отображения графика была разработана функция show Spectrum Array. Эта функция создана для отображения ранее полученного массива значений амплитуд.
Далее было проведено сравнение полученного результата (рис. 2а) с действительным спектром волны, полученным в другой программе (рис. 2б). На рисунках видно, что полученная в результате анализа волна, очень похожа на ту, которую мы получили в известном аудиоредакторе Steinberg Cubase.
а). Полученный рисунок волны б). Действительный спектр волны
Рис. 2 Отображение графика амплитуды звуковой волны
Разработка инструмента изменения амплитуды волны
Как пример самого простого инструмента редактирования был выбран инструмент изменения громкости.
Т.к. данные в нашем файле определяются всего 2 параметрами (значение времени, в котором воспроизводится звук определенной амплитуды, и само значение амплитуды), то ставится задача только увеличить значение амплитуды в определенный момент времени. Областью увеличения амплитуды будут служить параметры, передаваемые в функцию изменения амплитуды (значения времени, умноженные на частоту дискретизации, в секундах).
Для реализации данной функции необходимо все байты, которые были считаны в массив QByteArray, в заданной области увеличить на заданное значение изменение громкости (в %).
Т.к. для обработки был выбран файл с глубиной 16 бит, то каждое значение амплитуды должно кодироваться значением от -32768 до 32767. При выходе за границы данного диапазона было принято решение сжимать значение амплитуды до максимально допустимого. Для изменения громкости была разработана функция changeVolume.
Данная функция редактировала содержимое ранее полученного массива значений амплитуд по заданному пользователем сценарию. Далее был открыт файл длиной в 11 секунд и обработан данной функцией следующим образом: первые 3 секунды были понижены в громкости на 80%, 3-5 секунды были увеличены на 70%, 5-7 секунды уменьшены в громкости на 100% и с 7 секунды громкость была увеличена на 30%.
Исходная волна (рисунок 3а) и результат продемонстрированы ниже (рисунок 3б).
а). Исходная волна б). Отредактированная волна
Рис. 3. Редактирование амплитуды волны
Заключение
В ходе написания статьи был разработан аудиоредактор, с возможностью построения волнового спектра и изменения громкости несжатого .wav PCM файла. Данный проект показывает сценарии работы с аудио файлами и является простой основой для реализации собственного приложения для редактирования звука.
Библиографический список
1. Кодирование звука в компьютере [Электронный ресурс] - url: http://informatika.sch880.ru/p23aa1.html
2. Панфилов И.П., Дырда В.Е. Теория электрической связи. - М.: Радио и связь, 1991. - 344 с.
3. Структура wav PCM файла [Электронный ресурс]. - url: http://audiocoding.ru/article/2008/05/22/wav-file-structure.html
4. Порядок байт в wav файле [Электронный ресурс]. - url: http://microsin.net/programming/pc/wav-format.html
Размещено на Allbest.ru
...Подобные документы
Разработка транзисторного автогенератора с трансформаторной связью. Выбор типа активного элемента и определение режима его работы. Построение сигнала на выходе схемы, определение ширины его спектра. Окончательная коррекция схемотехнического построения.
курсовая работа [196,9 K], добавлен 26.04.2014Устройство и принцип работы лампы бегущей волны типа М. Путь построения теории лампы: продольная и переменная составляющие, решение характеристического уравнения. Амплитудно-частотная характеристика лампы. Устройство и принцип работы лампы обратной волны.
реферат [715,7 K], добавлен 20.08.2015Устройство и принцип работы лампы бегущей волны (ЛБВ). Расчет ее электрических и геометрических параметров по схеме. Общий принцип работы ЛБВ, описание технологических процессов и алгоритм проведения расчетов при изготовлении коллекторного узла лампы.
курсовая работа [1,9 M], добавлен 05.06.2011Разработка контроллера прибора, обеспечивающего реализацию функций оцифровки аналоговых данных с выводом результата в виде графического вида сигнала. Выбор контроллера и элементов схемы, их описание. Общий алгоритм работы и листинг программы управления.
курсовая работа [1,1 M], добавлен 26.12.2012Анализ и сравнение технологий передачи данных на магистральных линиях связи. Применение систем волнового мультиплексирования. Организация управления и мониторинга сети DWDM. Расчет длины регенерационного участка, планируемого объема передачи данных.
дипломная работа [1,8 M], добавлен 20.09.2013Требуемая импульсная характеристика ФНЧ. Работа разветвителя-дециматора: формирование входного сигнала; оценка работы устройства. Спектры действительной и мнимой составляющих сигнала. Схема переноса спектра устройства. Сигналы на выходах дециматоров.
курсовая работа [1,8 M], добавлен 12.07.2011Рассмотрение технических характеристик современных осциллографов. Описание принципов работы малогабаритного двулучевого осциллографа и вычисление потребляемой мощности. Разработка принципиальной схемы устройства исследования сигнала в формате Splan.
курсовая работа [501,3 K], добавлен 04.05.2014Понятие и классификация систем передачи данных, их применение в глобальных и локальных сетях. Изучение особенностей дисперсного распространения в ионосфере декаметровых линейно-частотно-модулированных радиосигналов с различной средней частотой спектра.
курсовая работа [410,5 K], добавлен 18.07.2012Расчет и выбор основных элементов силовой схемы: инвертора, выпрямителя, фильтра. Расчет и построение статических характеристик в разомкнутой и замкнутой системе. Разработка функциональной схемы системы управления электропривода и описание ее работы.
дипломная работа [1,3 M], добавлен 25.10.2011Прохождение прямоугольного импульса по частотно ограниченному каналу связи. Причины возникновения межсимвольной интерференции, формирование спектра сигнала при помощи формирующего фильтра. Зависимость качества адаптивной коррекции от отношения сигнал шум.
курсовая работа [2,7 M], добавлен 22.08.2016Определение принципа работы емкостного датчика присутствия. Схемы включения датчиков внесения ёмкости к МК. Технические характеристики и построение электрической схемы прибора со звуковым индикатором. Применение охранных извещателей для помещений ПИК.
курсовая работа [2,0 M], добавлен 23.09.2011Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.
курсовая работа [2,2 M], добавлен 02.01.2010Обзор существующих методов измерения центральной частоты в радиотехнике. Особенности расчета и проектирования измерителя центральной частоты частотно-манипулированных сигналов, функционирующего в составе панорамного приемного устройства "Катран".
курсовая работа [1,8 M], добавлен 26.10.2011Краткое описание морского гирокомпаса модели NAVIGAT X. Специфика вычисления возможных девиации и поправки компасов при различных условиях. Анализ и оценка качества работы заданного прибора, определение степени соответствия показаний реальным параметрам.
курсовая работа [3,2 M], добавлен 28.04.2014Расчет спектра, полной и неполной энергии сигналов. Определение параметров АЦП и разработка математической модели цифрового сигнала. Согласование источника информации с каналом связи. Определение вероятности ошибки в канале с аддитивным белым шумом.
курсовая работа [1,2 M], добавлен 07.02.2013Развитие фрактальных антенн. Методы построения и принцип работы фрактальной антенны. Построение кривой Пеано. Формирование фрактальной прямоугольной ломанной антенны. Двухдиапазонная антенная решетка. Фрактальные частотно–избирательные поверхности.
дипломная работа [1,3 M], добавлен 26.06.2015Цифровые приборы частотно-временной группы. Основа построения цифровых частотометров. Структурная схема ЦЧ, измерение частоты. Погрешности измерения частоты и периода. Повышение эффективности обработки сигналов при оценке частотно-временных параметров.
контрольная работа [843,7 K], добавлен 12.02.2010Анализ существующих методов построения проектируемого передатчика. обоснование технологических требований. Расчет выходного усилителя мощности, задающего генератора. Выбор и описание работы и характеристик модуля. Расчет коэффициента полезного действия.
курсовая работа [618,8 K], добавлен 22.04.2015Назначение и принципы построения диспетчерского контроля. Построение и расчёт принципиальной схемы устройства. Патентный поиск и анализ существующих систем. Расчёт частот для использования микроконтроллера. Описание альтернативной модели устройства.
дипломная работа [4,8 M], добавлен 15.03.2013Изучение основных принципов построения баз данных - именованной совокупности данных, отражающей состояние объектов и их отношений в рассматриваемой предметной области. Система управления базами данных. Концепции их построения и этапы проектирования.
контрольная работа [20,2 K], добавлен 14.12.2010