Смекни!
smekni.com

«использование технологий xml и com для решения задач статистической радиофизики» (стр. 3 из 4)

· Dlldata.c – содержит информацию, необходимую для создания прокси dll

Классы, описанные в файле .h используются в качестве базовых классов для реализации интерфейсов, описанных в idl-файле.

2.1.3 Регистрация COM-компонент

Завершающим шагом создания COM-компонент является их регистрация в системе. Регистрация производится при помощи утилиты regsvr32.exe, которая в качестве аргумента принимает путь к регистрируемому файлу. Если файл содержит COM-компонент и соблюдены все зависимости, регистрация завершается успешно и компонент готов к использованию. Для удаления COM-компонент из системы необходимо вызвать утилиту regsvr32.exe с опцией /u.

2.2 Выводы

Технология Майкрософт COM является мощным инструментом, делающим возможным модификацию и расширение функциональных возможностей программного обеспечения в процессе его использования конечным пользователем и без изменения «ядра» программы. Технология Майкрософт COM легла в основу многокомпонентной системы индексации аудио, описанной в следующей главе.

ГЛАВА 3. СИСТЕМА ИНДЕКСАЦИИ АУДИОПОСЛЕДОВАТЕЛЬНОСТЕЙ

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

· расширяемость – возможность дополнения функциональных возможностей сторонними разработчиками, кроме того система должна иметь возможность работы с различными форматами данных, в том числе и пользовательскими

· язык писания экспериментов – возможность описания последовательности действий над исходными данными

· визуализация – возможность графического представления как результатов всего эксперимента, так и любого его этапа

В данной главе будут представлены предложенные решения для первых

двух задач.

3.1 Процессоры

Решением первой задачи стало создания обобщенного программного интерфейса, с одной стороны предоставляющего унифицированный доступ ко всем компонентам обработки сигнала (получившим название процессоров), а с другой стороны, предоставляющего пользователю доступ по всех возможностям настройки работы процессора. Решение объединило два описанных в предыдущих главах стандарта – описание настроек процессора при помощи XML позволило скрыть различия внутренней структуры процессоров от ядра системы, а общий для всех компонент COM-интерфейс позволил системе работать с любым процессором, зарегистрированным в системе вне зависимости от его функциональных особенностей. Ниже представлен интерфейс, который реализует каждый процессор, и который используется для взаимодействия процессоров с системой:

сlass Processor : public Idispatch {

public:

virtual HRESULT STDMETHODCALLTYPE loadSettings(const char* settings);

virtual HRESULT STDMETHODCALLTYPE work(DataStruct** data) ;

virtual HRESULT STDMETHODCALLTYPE getProcessorId(char** id) ;

virtual HRESULT STDMETHODCALLTYPE getSize(int* val) ;

virtual HRESULT STDMETHODCALLTYPE getStep(int* val) ;

virtual HRESULT STDMETHODCALLTYPE getSettings(char**) ;};

Метод loadSettings(const char* settings) предназначен для загрузки настроек. Настройки представляют собой XML-строку. Если настройки не указываются, устанавливаются настройки по умолчанию.

В методе work(DataStruct** data) выполняется то, что должен выполнять процессор. Через аргумент передаются данные над которыми должен работать процессор и результат работы процессора.

Метод getProcessorId(char** id) возвращает через аргумент имя процессора.

Метод getSize(int* val) возвращает через аргумент размер данных, с которыми будет работать процессор.

Метод getStep(int* val) возвращает через аргумент шаг, с которым следует читать данные из базы.

Метод getSettings(char**) возвращает через аргумент XML-строку с дефолтными настройками.

3.2 Компоненты чтения

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

class ReaderInterface : public IDispatch

{

public:

virtual HRESULT STDMETHODCALLTYPE open(const char*, ResultStruct*); virtual HRESULT STDMETHODCALLTYPE read(DataStruct**, ResultStruct);};

Метод open(const char* name, ResultStruct* result) открывает файл с именем name и возвращает результат открытия через result.

Если open отработал успешно, метод read(DataStruct** data, ResultStruct* result) считывает данные из файла в data и возвращает результат чтения через result.

3.3 Язык описания сценариев

Разработанная система предоставляет пользователю простой, интуитивно понятный и в то же время предоставляющий определенную свободу действий язык описания сценариев, основанный на XML. В этом разделе представлено описания языка описания сценариев.

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

Общий вид сценария следующий:

[имя_сценария] : [входные_данные_1], [входные_данные_2] … [входные_данные_N] | [процессор_1], [процессор_2] … [процессор_N] -> [имя_результата_1], [имя_результата_2] … [имя_результата_N];

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

Для улучшения читаемости сценария предусмотрена возможность переименования данных, процессоров:

[новое_имя] = [имя_понятное_системе];

Переименование может производиться в любом месте файла эксперимента и действует глобально.

Имена файлов записываются в двойных кавычках “имя_файла”. Для каждого сценария может использоваться список специфических настроек для каждого процессора. Список настроек процессоров для сценария задается в следующем виде:

<@ имя_сценария>[список настроек]</@>

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

[имя_процессора]:<settings>

<свойство_1>[значение_свойства_1]</свойство_1>

<свойство_2>[значение_свойства_2]</свойство_2>

</settings>;

3.4 Выводы

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

ЗАКЛЮЧЕНИЕ

Представленное в данной работе описание стандартов XML и COM и их применение для построения системы индексации аудиопоследовательностей демонстрирует возможность использования данных технологий. Язык XML был использован в качестве основы для языка описания сценариев, а также для описания данных внутри системы. Технология COM использовалась для того, чтобы сделать возможным подключение дополнительных модулей обработки данных в процессе использования системы конечным пользователем. Проведенные на основе системы эксперименты продемонстрировали возможности системы и подтвердили ее полезность.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Список использованных источников

1. Xuedong Huang, Alex Acero, Hsiao-Wuen Hon. Spoken Language Processing, a guide to theory, algorithm and system development. //Prentice-Hall, 2001.

2. Л.Р. Рабинер. Скрытые Марковские Модели и их применение в избранных приложениях при распознавании речи: Обзор. //ТИИЭР т. 77, №2, февраль 1989.

3. Yi-Lin Lin, Gang Wei. Speech Emotion Recognition on HMM and SVM. Proceedings of the Fourth International Conference on Machine Learning and Cybernetics,// Guangzhou, 18-21 August 2005.

4. Ч. Кирк. XML в подлиннике.// BHV, 2003

5. Д.Роджерсон. Основы СОМ.

6. Э. Трельсен. Модель COM и применение ATL 3.0.//BHV, 2005

Список публикаций

1. A - Трус А.А., Сорока А.М., Янь Цзиньбинь, У Ши, Егоров В.Н.Использование синтезатора речи по тексту в задачах образования // Тезисы международной научно-технической конференции, посвященной 45-летию МРТИ-БГУИР 19 марта 2009, Минск. - С. 291

2. A - Трус А.А., Сорока А.М., Алиев Р.М. Многокомпонентная система на платформе .NET для настройки и оптимизации алгоритмов анализа аудиосигналов // Труды VI Всероссийской научной конференции студентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования» 1-2 апреля 2009, Москва. - С. 53 - 54

3. A - Трус А.А., Янь Цзиньбинь, У Ши,. Сорока А.М. Классификация аудиосигналов с использованием одноклассового метода опорных векторов для опорных векторов для систем поиска информации в мультимелиа-архивах // «Речевые технологии» №4 2009, Москва. – С. 15 - 24

4. A - Трус А.А., Янь Цзинбинь, Сорока А.М., Хейдоров И.Э., Верификация ключевых слов на основе мер доверительности и метода опорных векторов // «Электроника инфо» №5 2009, Минск. – С. 44 - 49

5. A - Трус А.А., Сорока А.М. Алгоритм построения векторов признаков на основе вейвлет-преобразования для классификации фонем русского языка // Труды 52-й научной конференции МФТИ «Современные проблемы фундаментальных и прикладных наук», Москва-Долгопрудный, 2009. - С. 103 - 106