Homework (Домашнее задание)

Посмотреть архив целиком

ДОМАШНЕЕ ЗАДАНИЕ

«Построение программы голосового управления»

Цель домашнего задания:

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

Необходимые инструменты:

  1. Микрофон для записи звука;

  2. Программа обработки звука CoolEdit для удаления шума;

  3. Программа Spectra Lab для получения АЧХ;

  4. Программа Excel – обработка результатов.

Теоретическая часть

Распознаванием образа объекта называется процесс, при котором на основании набора признаков (дис­крип­торов) некоторого объекта определяется его принадлежность к определенному классу. Задачи такого класса требуют активного применения методов искусственного интеллекта и экспертных систем. Кроме того, для эффективного распознавания нужно, чтобы оно проводилось в тех же условиях, что и формирование признаков объекта. Во всяком случае, различия в значениях признаков объекта, полученных на этапе обучения и при распознавании, не должны быть слишком велики.

Условно все методы распознавания можно разделить на две группы: теоретические и структурные. Наиболее распространенные теоретические методы распознавания используют принципы теории принятия решений. Рассмотрим группу, состоящую из M классов объектов На этапе описания формируется n-мерное пространство признаков, такое, что каждому объекту соответствует свой вектор признаков Компонентами этого вектора обычно служат рассмотренные ранее геометрические признаки объекта. Тогда распознавание представляет собой процедуру отнесения данного объекта к одному из M клас­сов на основании анализа его вектора признаков. Согласно теории принятия решений, нужно найти M дискриминирующих функций таких, чтобы для произвольного вектора принадлежащего некоторому классу, выполнялось неравенство вида:

при всех

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

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

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

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

При голосовом управлении роботом словарь классов значительно меньше, чем в задачах распознавания речи. Число голосовых команд, как правило, не превышает 10 … 20 слов.

Порядок выполнения работы:

Домашнее задание состоит из пяти частей:

  • в первой части необходимо самостоятельно разработать простой алгоритм распознавания речевых команд;

  • вторая часть посвящена оптимизации полученного алгоритма средствами нечеткой логики;

  • в третьей части требуется составить программу для автоматического построения нечёткой модели и векторов признаков в среде MATLAB;

  • в четвертой части необходимо проверить первую часть, используя алгоритмы третьей части;

  • наконец, в пятой части предлагается построить систему распознавания на основе нейронной сети.

Часть 1: Разработка простого алгоритма распознавания речевых команд

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

Необходимо решить следующие две задачи:

  • провести предварительную обработку звуковых команд и сформировать вектора признаков;

  • выполнить непосредственное распознавание команд.

1.1. Ознакомление с возможностями программ CoolEdit Pro и Spectra_Lab

Графический интерфейс программы CoolEdit состоит из главного и вспомогательного меню, меню управления воспроизведением/записью и рабочей области. Слева расположено окно выбора трека, внизу – индикатор допустимой амплитуды.

Существует два режима работы этой программы (переключаются кнопками и соответственно). Первый служит для микширования, другой - для записи одного wav-файла. В работе используется второй режим, который позволяет записать звуковой сигнал, вырезать ненужные куски, клеить, накладывать эффекты, просматривать АЧХ и др.

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

1.2 Запись команд

Запишем 6 любых голосовых команд, к примеру: «один», «два», «три», «четыре», «восемь» и «тринадцать». Каждую команду запишем по три раза с приблизительно одинаковой интонацией. Для этого сначала подключите микрофон к соответствующему выходу компьютера, затем откройте окно настройки звука и убедитесь, что в свойствах записи выбран микрофон (рис.2).


Откройте окно программы CoolEdit, перейдите в режим одного трека, затем выберите меню «File» => «New», параметры записи 44,1 кГц, 16 бит, моно, можно и другие, и запишите первое слово (кнопка ). (При других настройках, возможны проблемы в работе программы). Если амплитуда «зашкаливает» за белую линию, как на рис. 3, уменьшите уровень записи и повторите операцию (очень малый уровень сигнала также нежелателен). Затем сохраните документ в формате wav. Удобнее всего создать для каждого слова свою директорию и сохранить в ней 3 варианта записи. Запишите остальные файлы.


1.3. Обработка записанных треков

В основе алгоритма распознавания лежит спектральный анализ звука. Поэтому, чем меньше шумов будет в звуковом сигнале, тем лучше. Для этого необходимо удалить фрагменты, не относящиеся к слову (например, вдох и выдох). При допустимом отношении сигнал/шум на временной шкале четко видно, где шум и где слово (рис. 4). Чтобы вырезать участок сигнала из звукового файла в окне программы CoolEdit необходимо выделить его (левой кнопкой мыши) и нажать DEL.

Проделайте те же действия с остальными командами и сохраните соответствующие файлы.

1.4. Построение АЧХ каждого слова и занесение данных в программу Excel

Для построения АЧХ откроем окно программы Spectra_lab. В меню «Mo­de» выбираем «Post Process». Для анализа ограничимся частотным диапазоном от 50 Гц до 4 кГц. С этой целью необходимо сделать следующее: щелчком правой кнопки мыши по рабочей области выбрать во всплывающем меню пункт «Properties»: появится некая форма. Укажите стартовую и конечную частоту в левом нижнем углу формы и нажмите OK.

Далее выберите пункты меню «Infinite» и «PeakHold», после чего нажмите кнопку «Run»; появит­ся АЧХ. Для запоминания значений соответствующей АЧХ нажмите любую кнопку от 1 до 4. Чтобы на экране отображались графики только некоторых АЧХ необходимо убрать галочки рядом с кнопками 1– 4. Затем щелчком правой кнопки мыши по рабочей области вызовите всплывающее меню и выберите пункт «copy as text».

Теперь открываем программу Excel. Выделяем первую ячейку первого столбца. Вставляем слово. Теперь проделайте тоже с остальными двумя вариантами первого слова и занесите данные в таблицу. Столбик Freq можно оставить только один остальные удалите. В общем, приведите таблицу к виду, пока­занному на рис. 5.


Для дальнейших действий необходимо определить АЧХ пустого микрофона, что можно сделать с помощью программы Cool­Edit или Spectralab. При использовании программы Spectralab перейдите в режим Recorder и нажмите Rec. Заметим, что чем больше времени занимает запись, тем точнее измерение (достаточно 10…15 сек). Сохраните звуковой файл и занесите дан­ные в таблицу.

Также в таблицу необходимо занести следующие данные:

  • среднее значение амплитуды на данной частоте (АМП1+АМП2+АМП3)/3;

  • «чистый сигнал» - вычитание микрофонной амплитуды из амплитуды слова. (Для этого, из среднего значения амплитуды на соответствующей частоте вычитается амплитуда микрофонного сигнала).

Постройте график этого столбца. В итоге у вас должно было получиться нечто подобное (рис. 6).



То же самое необходимо проделать с остальными словами. Данные лучше сохранять в одном xls-документе, поместив таблицы на разные листы.

1.5 Построение векторов признаков

Теперь наступила важнейшая часть работы: выделение характерных для каждого слова признаков и помещение их в таблицу. В качестве признаков каждого слова примем амплитуды его АЧХ на восьми частотах. Удобно сделать следующее: завести новый лист в xls-документе, скопировать в него графики АЧХ каждого слова с вырезанным шумом. Расположите их один под другим как на рис. 7.

В общем случае, для получения боль­шего количества признаков для распознавания, следует использовать большее количество частот сравнения. Проведя анализ АЧХ (рис. 7), можно выделить частоты, на которых амплитуды разных слов наиболее различаются. Для удо­бства проведите перпендикулярно им четкие линии. Теперь возьмите из таблиц численные значения, и занесите их в таблицу, как показано на рис. 8 -9.

Замечание.

Качество распознавания системы зависит от правильного выбора частот, на которых амплитуды разных слов наиболее различаются. После построения АЧХ, визуально трудно определить различия (так как присутствуют высокочастотные шумы), поэтому рекомендуется воспользоваться (или написать самостоятельно) программу, выполняющую высокочастотную фильтрацию.


Отметим, что сравнивать абсолютные значения сигналов бессмысленно, т.к. записанный на другой громкости или сказанный громче/тише звук будет отличаться. Поэтому предлагается составить базу признаков следующим образом: из восьми имеющихся значений для каждого слова составим семь, так, чтобы: Aотн = A(n+1) - An, где Aотн – относительное значение амплитуды слова, взятое из разности значений двух соседних точек абсолютных значений. (Для упрощения можно взять те же частоты, что и в рассмотренном примере - А1 = 646; А2 = 1270.5; А3 = 3757.5; А4 = 2164; А5 = 2939.2; А6 = 1065.9; А7 = 3197.7; А8 = 2228.7 Гц). В результате должно получиться примерно то, что изображено на рис. 9.