
- •Домашнее задание
- •Порядок выполнения работы:
- •Часть 1: Разработка простого алгоритма распознавания речевых команд
- •1.1. Ознакомление с возможностями программ CoolEdit Pro и Spectra_Lab
- •1.2 Запись команд
- •1.3. Обработка записанных треков
- •1.4. Построение ачх каждого слова и занесение данных в программу Excel
- •1.5 Построение векторов признаков
- •Часть 2: Построение нечетко-логического алгоритма распознавания голосовых команд
- •2.1 Общие сведения
- •2.2 Ознакомление с главным окном программы FuzzyLogictoolbox
- •2.3 Создание входных переменных
- •2.4 Формирование выходных переменных и базы правил
- •2.5 Заключение
- •Часть 3: Автоматизация
- •3.1 База данных признаков
- •3.2 Постановка задачи
- •3.3 Построение нечетко-логической модели
- •3.4 Распознавание слова
- •Часть 4: Выполнение первой и второй части с использованием аппроксимации ачх и сравнение решения с третей частью
- •Часть 5: Алгоритм распознавания, построенный на нейронной сети
- •5.1. Построение нейронной сети
- •5.2. Обучение сети
- •5.2. Испытания модели
- •5.2.1. Испытание 1. Обучение нейросети по первому и второму файлу
- •5.2.2. Испытание 3. Обучение нейросети по среднему
- •Направления дальнейшей работы
- •Рекомендуемая литература
3.2 Постановка задачи
Известны вектора признаков слов-эталонов и вектор признаков распознаваемого слова. Необходимо определить, к какому из слов-эталонов распознаваемое слово наиболее близко. Для решения этой задачи используется аппарат нечеткой логики, реализованный в Fuzzy Logic Toolbox системы Matlab.
3.3 Построение нечетко-логической модели
Нечетко-логическая модель в Fuzzy Logic Toolbox представляет из себя множество входных переменных, которые соответствуют компонентам вектора признаков распознаваемого слова, множество выходных переменных, которые соответствуют словам-эталонам, и множество правил, согласно которым определяется принадлежность распознаваемого слова к одному из эталонных классов. Рассмотрим этапы построения нечетко-логической модели в Matlab.
Инициализация структуры, соответствующей нечетко-логической модели, производится функцией newfis. Синтаксис функции следующий:
FIS = newfis(FISNAME);
где FIS – имя переменной, FISNAME – название модели.
Создание входных и выходных переменных. Функция addvar. Синтаксис функции:
fuzzyStruct = addvar(fuzzyStruct, varType, varName, varBounds);
здесь fuzzyStruct – структура, соответствующая нечетко-логической модели, varType – тип переменной (‘input’ – входная, ‘output’ – выходная), varName – имя переменной, varBounds – вектор, описывающий область определения переменной.
Область определения входной переменной выбирается исходя из диапазона значений компоненты вектора признаков, соответствующей данной переменной.
Определение функций принадлежности. Функция addmf. Синтаксис функции:
fuzzyStruct = addmf(fuzzyStruct, varType, varIndex, mfName, mfType, mfParams);
где fuzzyStruct – структура, соответствующая нечетко-логической модели, varType –тип переменной, к которой будет добавлена функция принадлежности (‘input’ – входная, ‘output’ – выходная), varIndex – индекс переменной, к которой будет добавлена функция принадлежности, mfName – имя функции принадлежности, mfType – тип функции принадлежности, mfParams – вектор, который определяет значения функции принадлежности в ключевых точках.
Функции принадлежности входных переменных соответствуют соответствующим компонентам векторов признаков слов-эталонов и являются функциями треугольного типа (mfType = 'trimf'). Но возможно, что это не оптимальный выбор с точки зрения точности распознания.
Определение правил. Функция addrule. Синтаксис функции:
fuzzyStruct = addrule(fuzzyStruct, ruleList);
где fuzzyStruct – структура, соответствующая нечетко-логической модели, ruleList – матрица правил.
Матрица правил имеет размерность n x (m + n + 2), где n – число выходных переменных, m – число входных переменных. Матрица имеет следующий вид:
1 1 … 1 1 0 0 … 0 1 1
2 2 … 2 0 1 0 … 0 1 1
… … …
n n … n 0 0 0 … 1 1 1
Строка i является правилом, выявляющим i-ое слово-эталон.
Подробнее о синтаксисе и работе каждой функции можно узнать из справочной системы Matlab.
3.4 Распознавание слова
Для распознавания слова по заданному вектору признаков необходимо воспользоваться FIS Editor (команда Matlab – fuzzy). С помощью него можно просмотреть созданную нечетко-логическую модель (команда File -> Import -> From Workspace… имя структуры, соответствующей нечетко-логической модели - в программе она названа MODEL) и ее работу (команда View->Rules). Заглавные буквы в слове MODEL – принципиальны!