Программная реализация анализатора аудиофайлов | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 4 мая, печатный экземпляр отправим 8 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №12 (92) июнь-2 2015 г.

Дата публикации: 19.06.2015

Статья просмотрена: 1023 раза

Библиографическое описание:

Тютин, С. В. Программная реализация анализатора аудиофайлов / С. В. Тютин. — Текст : непосредственный // Молодой ученый. — 2015. — № 12 (92). — С. 42-48. — URL: https://moluch.ru/archive/92/20318/ (дата обращения: 20.04.2024).

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

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

В настоящее время анализ различных аудиозаписей в общем и речи в частности является крайне необходимым и актуальным. Он требуется для решения поставленных задач в следующих областях: голосовые диалоговые системы, мобильные технологии, веб-технологии, биометрическая защита, криминалистическая экспертиза. Например, голос человека можно использовать как пропуск в системах с ограничением доступа (к примеру, в автоматическом контрольно-пропускном пункте). Это позволит избежать несанкционированного доступа и исключит вероятность ошибки. Кроме того, при производстве судебной экспертизы материалов звукозаписи зачастую возникает необходимость провести идентификацию личности. По параметрам устной речи можно даже определять эмоциональное состояние (уровень стресса) человека.

Автором была разработана программа для отображения и анализа содержимого аудиофайлов. С её помощью пользователь получает возможность визуализировать аудиофайлы самых распространенных форматов. Основными достоинствами проекта являются наглядное отображение структуры аудиоданных, облегчение сравнения различных аудиофрагментов (например, путём наложения их визуализаций) и поддержка любых частот дискретизации.

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

-          кроссплатформенное приложение;

-          возможность работы с любыми аудио-картами и графическими ускорителями.

На основе вышеупомянутых требований была разработана следующая схема взаимодействия пользователя и системы:

Рис. 1. Диаграмма вариантов использования

 

Роль «Пользователь» подразумевает следующую схему взаимодействия с приложением: пользователь загружает в приложение аудиофайл, а затем, в ходе выполнения анализа, пользователь получает конечные результаты в графическом виде.

Рис. 2. Схема входных и выходных данных

 

Схема входных и выходных данных показывает, какие данные необходимы для функционирования приложения. От пользователя требуется только аудиофайл.

Интерфейс приложения построен на технологии WinForms и OpenGL. Это обеспечивает высокую совместимость и скорость работы интерфейса на различных компьютерах.

Рис. 3. Интерфейс программы

 

Рис. 4. Подсветка участков тишины

 

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

-          Язык разработки: С#

-          Расширение OpenTK (OpenGL для.NET)

-          Расширение NAudio (Работа со звуковой картой)

-          Среда разработки: MS Visual Studio 2012

-          Платформа:.NET 4.5

-          Система контроля версий: Mercurial

-          Сервис хостинга репозиториев: Bitbucket

-          Issue tracker: Bitbucket

-          Разработка диаграмм: Draw.io

-          Автоматизация сборки: NAnt 0.9.2

Данный набор средств хорошо зарекомендовал себя в разработке проектов различной сложности. Многие из инструментов, по сути, являются стандартом де-факто в своей области.

C# выбран в качестве основного языка разработки, потому что он обеспечивает легкую интеграцию с внешними библиотеками и быструю разработку интерфейса ПО.

IDE — на данный момент последняя версия среды разработки от Microsoft, в которой были исправлены некоторые недочеты предыдущих версий.

Mercurial, в качестве VCS, выбран из-за подробной документации и обширного коммьюнити пользователей, а Bitbucket — из-за наличия встроенного issue tracker-а.

Для разработки диаграмм и интерфейса использовался онлайн-ресурс http://draw.io, плюсами которого являются дружественный интерфейс, бесплатность и обширный банк шаблонов проектирования.

В качестве инструмента для автоматизации сборки выступает NAnt из-за открытости кода, кроссплатформенности и ориентированности на платформу.NET (в отличии от того же Apache Ant).

Минимальные аппаратные требования:

-          512Mb RAM

-          Intel Pentium IV или совместимый

-          Звуковая карта

-          Видеоускоритель Intel GMA 950 или лучше

-          Программные требования

-          .NET Framework 4.5 или Mono и набор совместимых библиотек

Представленная диаграмма классов демонстрирует классы разработанной системы, их атрибуты, методы и взаимосвязи между ними.

Рис. 5. Диаграмма классов

 

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

Рис. 6. Диаграмма состояний

 

Под начальным состоянием здесь подразумевается состояние сразу после запуска программы. После того, как пользователь загрузил файл, программа осуществляет его воспроизведение и выводит график громкости. После окончания анализа данные становятся доступны для просмотра.

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

Рис. 7. Диаграмма последовательностей

 

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

Далее представлен фрагмент программы, реализующий анализатор.

using System;

using System.Collections.Generic;

using System.Text;

using System.Diagnostics;

using NAudio.Dsp;

using NAudio.Wave;

 

namespace AudioAnalizer.Core

{

    public class SampleAggregator : ISampleProvider

    {

        // volume

        public event EventHandler<MaxSampleEventArgs> MaximumCalculated;

        private float maxValue;

        private float minValue;

        public int NotificationCount { get; set; }

        int count;

 

        // FFT

        public event EventHandler<FftEventArgs> FftCalculated;

        public bool PerformFFT { get; set; }

        private readonly Complex[] fftBuffer;

        private readonly FftEventArgs fftArgs;

        private int fftPos;

        private readonly int fftLength;

        private int m;

        private readonly ISampleProvider source;

 

        private readonly int channels;

 

        public SampleAggregator(ISampleProvider source, int fftLength = 1024)

        {

            channels = source.WaveFormat.Channels;

            if (!IsPowerOfTwo(fftLength))

            {

                throw new ArgumentException("FFT Length must be a power of two");

            }

            this.m = (int)Math.Log(fftLength, 2.0);

            this.fftLength = fftLength;

            this.fftBuffer = new Complex[fftLength];

            this.fftArgs = new FftEventArgs(fftBuffer);

            this.source = source;

        }

 

        bool IsPowerOfTwo(int x)

        {

            return (x & (x - 1)) == 0;

        }

 

 

        public void Reset()

        {

            count = 0;

            maxValue = minValue = 0;

        }

 

        private void Add(float value)

        {

            if (PerformFFT && FftCalculated != null)

            {

                fftBuffer[fftPos].X = (float)(value * FastFourierTransform.HammingWindow(fftPos, fftLength));

                fftBuffer[fftPos].Y = 0;

                fftPos++;

                if (fftPos >= fftBuffer.Length)

                {

                    fftPos = 0;

                    // 1024 = 2^10

                    FastFourierTransform.FFT(true, m, fftBuffer);

                    FftCalculated(this, fftArgs);

                }

            }

 

            maxValue = Math.Max(maxValue, value);

            minValue = Math.Min(minValue, value);

            count++;

            if (count >= NotificationCount && NotificationCount > 0)

            {

                if (MaximumCalculated != null)

                {

                    MaximumCalculated(this, new MaxSampleEventArgs(minValue, maxValue));

                }

                Reset();

            }

        }

 

        public WaveFormat WaveFormat { get { return source.WaveFormat; } }

 

        public int Read(float[] buffer, int offset, int count)

        {

            var samplesRead = source.Read(buffer, offset, count);

 

            for (int n = 0; n < samplesRead; n += channels)

            {

                Add(buffer[n + offset]);

            }

            return samplesRead;

        }

    }

 

    public class MaxSampleEventArgs : EventArgs

    {

        [DebuggerStepThrough]

        public MaxSampleEventArgs(float minValue, float maxValue)

        {

            this.MaxSample = maxValue;

            this.MinSample = minValue;

        }

        public float MaxSample { get; private set; }

        public float MinSample { get; private set; }

    }

 

    public class FftEventArgs : EventArgs

    {

        [DebuggerStepThrough]

        public FftEventArgs(Complex[] result)

        {

            this.Result = result;

        }

        public Complex[] Result { get; private set; }

    }

}

Тестирование показало продуктивность системы, т. е. соответствие поставленным функциональным требованиям.

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

 

Литература:

 

1.         Шаров В. Компьютерный анализ звука, BYTE Россия 13.04.2005 (http://www.bytemag.ru/articles/detail.php?ID=6719)

2.         Кристиан Нейгел и др. C# 5.0 и платформа.NET 4.5 для профессионалов (Professional C# 5.0 and.NET 4.5.) — «Диалектика», 2013. — 1440 с. — ISBN 978–5-8459–1850–5

3.         Эндрю Троелсен. Язык программирования C# 5.0 и платформа.NET 4.5, 6-е издание = Pro C# 5.0 and the.NET 4.5 Framework, 6th edition. — «Вильямс», 2013. — 1312 с. — ISBN 978–5-8459–1814–7

Основные термины (генерируются автоматически): FFT, NET, пользователь, GMA, IDE, RAM, VCS, автоматизация сборки, график громкости, Звуковая карта.


Похожие статьи

Создание приложений «Генератор» и «Осциллограф» для работы...

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

Полная автоматизация измерения в данном случае не требовалась.

Применение библиотеки AForge.NET и ее расширения Accord.NET...

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов.

Каскады Хаара полностью совместимы с определениями, генерируемыми OpenCV, а сборка поставляется с прямой поддержкой...

Использование средств библиотеки SFML для написания игровых...

За работу с аудиофайлами отвечает заголовочный файл SFML/Audio.hpp, который позволяет работать с длинными музыкальными и короткими звуковыми файлами, принадлежащими классам

Потом производится расчет параметров, на которые влияют действия пользователя.

Речевые технологии — следующий уровень сервиса

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

Модель системы освещения на основе микроконтроллера.

Программная часть состоит из программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.

Макетная плата используется для быстрой сборки электрических схем без пайки. Для реализации модели системы необходимы...

Система управления устройствами «умного дома»...

Есть (платформа.NET). Как видно из таблицы (таблица 1) SDK облачного сервиса Microsoft Speech API ориентирован на платформу.NET и

‒ Ноутбук с операционной системой Windows 10, процессором Core i5 (1,3 GHz) и 4 гигабайтами RAM, на Java VM выделено 512 МБ RAM

Обзор функциональных возможностей и перспектив развития...

Основные термины (генерируются автоматически): устройство, домашняя автоматизация, система, ELKO, центральный элемент, кнопка управления, единый интерфейс пользователя, техническая сигнализация, беспроводная связь, производитель.

Генератор сигналов произвольной формы на микроконтроллере AVR

Память:RAM, КБайт.

БХВ-Петербург, 2012. — 256 с. Arduino IDE — установка, настройка и интерфейс.

Генератор звуковых сигналов аддитивного синтеза с использованием универсального параметра.

Создание приложений «Генератор» и «Осциллограф» для работы...

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

Полная автоматизация измерения в данном случае не требовалась.

Применение библиотеки AForge.NET и ее расширения Accord.NET...

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов.

Каскады Хаара полностью совместимы с определениями, генерируемыми OpenCV, а сборка поставляется с прямой поддержкой...

Использование средств библиотеки SFML для написания игровых...

За работу с аудиофайлами отвечает заголовочный файл SFML/Audio.hpp, который позволяет работать с длинными музыкальными и короткими звуковыми файлами, принадлежащими классам

Потом производится расчет параметров, на которые влияют действия пользователя.

Речевые технологии — следующий уровень сервиса

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

Модель системы освещения на основе микроконтроллера.

Программная часть состоит из программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.

Макетная плата используется для быстрой сборки электрических схем без пайки. Для реализации модели системы необходимы...

Система управления устройствами «умного дома»...

Есть (платформа.NET). Как видно из таблицы (таблица 1) SDK облачного сервиса Microsoft Speech API ориентирован на платформу.NET и

‒ Ноутбук с операционной системой Windows 10, процессором Core i5 (1,3 GHz) и 4 гигабайтами RAM, на Java VM выделено 512 МБ RAM

Обзор функциональных возможностей и перспектив развития...

Основные термины (генерируются автоматически): устройство, домашняя автоматизация, система, ELKO, центральный элемент, кнопка управления, единый интерфейс пользователя, техническая сигнализация, беспроводная связь, производитель.

Подсистема ввода и вывода видеоинформации процессоров серии...

Рис. 1. Функциональная блок- диаграмма процессора TMS320DM368. Подсистема обработки видео состоит из следующих частей

– Программируемая цветовая палитра с возможностью выбора между таблицей RAM / ROM с поддержкой 256 цветов.

Похожие статьи

Создание приложений «Генератор» и «Осциллограф» для работы...

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

Полная автоматизация измерения в данном случае не требовалась.

Применение библиотеки AForge.NET и ее расширения Accord.NET...

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов.

Каскады Хаара полностью совместимы с определениями, генерируемыми OpenCV, а сборка поставляется с прямой поддержкой...

Использование средств библиотеки SFML для написания игровых...

За работу с аудиофайлами отвечает заголовочный файл SFML/Audio.hpp, который позволяет работать с длинными музыкальными и короткими звуковыми файлами, принадлежащими классам

Потом производится расчет параметров, на которые влияют действия пользователя.

Речевые технологии — следующий уровень сервиса

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

Модель системы освещения на основе микроконтроллера.

Программная часть состоит из программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.

Макетная плата используется для быстрой сборки электрических схем без пайки. Для реализации модели системы необходимы...

Система управления устройствами «умного дома»...

Есть (платформа.NET). Как видно из таблицы (таблица 1) SDK облачного сервиса Microsoft Speech API ориентирован на платформу.NET и

‒ Ноутбук с операционной системой Windows 10, процессором Core i5 (1,3 GHz) и 4 гигабайтами RAM, на Java VM выделено 512 МБ RAM

Обзор функциональных возможностей и перспектив развития...

Основные термины (генерируются автоматически): устройство, домашняя автоматизация, система, ELKO, центральный элемент, кнопка управления, единый интерфейс пользователя, техническая сигнализация, беспроводная связь, производитель.

Генератор сигналов произвольной формы на микроконтроллере AVR

Память:RAM, КБайт.

БХВ-Петербург, 2012. — 256 с. Arduino IDE — установка, настройка и интерфейс.

Генератор звуковых сигналов аддитивного синтеза с использованием универсального параметра.

Создание приложений «Генератор» и «Осциллограф» для работы...

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

Полная автоматизация измерения в данном случае не требовалась.

Применение библиотеки AForge.NET и ее расширения Accord.NET...

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов.

Каскады Хаара полностью совместимы с определениями, генерируемыми OpenCV, а сборка поставляется с прямой поддержкой...

Использование средств библиотеки SFML для написания игровых...

За работу с аудиофайлами отвечает заголовочный файл SFML/Audio.hpp, который позволяет работать с длинными музыкальными и короткими звуковыми файлами, принадлежащими классам

Потом производится расчет параметров, на которые влияют действия пользователя.

Речевые технологии — следующий уровень сервиса

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

Модель системы освещения на основе микроконтроллера.

Программная часть состоит из программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.

Макетная плата используется для быстрой сборки электрических схем без пайки. Для реализации модели системы необходимы...

Система управления устройствами «умного дома»...

Есть (платформа.NET). Как видно из таблицы (таблица 1) SDK облачного сервиса Microsoft Speech API ориентирован на платформу.NET и

‒ Ноутбук с операционной системой Windows 10, процессором Core i5 (1,3 GHz) и 4 гигабайтами RAM, на Java VM выделено 512 МБ RAM

Обзор функциональных возможностей и перспектив развития...

Основные термины (генерируются автоматически): устройство, домашняя автоматизация, система, ELKO, центральный элемент, кнопка управления, единый интерфейс пользователя, техническая сигнализация, беспроводная связь, производитель.

Подсистема ввода и вывода видеоинформации процессоров серии...

Рис. 1. Функциональная блок- диаграмма процессора TMS320DM368. Подсистема обработки видео состоит из следующих частей

– Программируемая цветовая палитра с возможностью выбора между таблицей RAM / ROM с поддержкой 256 цветов.

Задать вопрос