![]() |
CLAIM – научно-образовательный кластер |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
1. АннотацияВ данной работе представлена программа, решающая задачу распознавания гласных звуков с использованием однослойной нейронной сети.
2. Условие задачиПрограмма принимает от пользователя звуковой файл в несжатом формате (WAV PCM, 8 kHz, 16 bit, mono), и на основании имеющихся данных о характеристиках звуков даёт ответ, на какой из четырёх гласных звуков (А, О, И, У) больше всего похож звук, загруженный пользователем. Данные о характеристиках звуков собираются в режиме обучения. Программа работает в режиме обучения (пользователь загружает файл и указывает, какой это звук, программа сохраняет информацию в виде весовых коэффициентов входа нейрона), и в режиме распознавания (пользователь загружает файл, программа сообщает, на какой звук из четырёх больше всего похож тот, который был загружен пользователем). 3. Используемые технологииПрограмма написана на языке PHP и построена на основе Web-технологий. Для её работы требуется следующее ПО:
Так как программа построена на основе Web-технологий, она может быть доступной через сеть Интернет. Для запуска программы нажмите на эту ссылку.
. Программа использует алгоритм быстрого преобразования Фурье (БПФ), приведённый в статье Wikipedia (http://ru.wikipedia.org/wiki/Быстрое_преобразование_Фурье). Этот алгоритм используется с целью разложения сигнала на гармоники с целью последующего анализа.
4. Этапы работы программыИнтерфейс пользователя программы имеет вид, представленный на рис. 1. Основные элементы интерфейса:
Рис. 1. Интерфейс пользователя программы.
Приняв от пользователя файл, программа проверяет его на корректность (по размеру и содержимому заголовка файла). Если файл не соответствует по размеру или по формату, программа выдаёт сообщение об ошибке, иначе она считывает 8192 байта в массив из 4096 двухбайтовых слов и подаёт на вход алгоритма БПФ. С выхода алгоритма БПФ снимается массив из 2048 вещественных чисел А, которые представляют собой амплитуду каждой гармоники сигнала:
Затем производится поднятие верхних гармоник по формуле В реальных звуковых сигналах низкочастотные гармоники имеют большую амплитуду, чем высокочастотные, но высокочастотные содержат большую часть полезной информации (по этой причине, например, при нарушениях слуха с ограничением верхних частот воспринимаемая громкость сигнала практически не изменяется, а разборчивость речи заметно снижается). После этого значения амплитуд нормализуются путём деления на максимальное значение приведённой амплитуды: Далее производится подбор чувствительности рецептора. Для каждого К, начиная с 2, ищется число таких входов нейрона (нормализованных амплитуд), при которых Если число таких гармоник меньше
После этого формируются входные сигналы нейрона по формуле сигмоида: Параметр М1 определяет крутизну характеристики. Чем он больше, тем ближе характеристика к пороговой. Сигмоидальная характеристика используется для того, чтобы учесть не только максимальные значения гармоник, но и близкие к ним. Слишком маленькое значение М1 приводит к размыванию разницы между значениями гармоник, и тоже нежелательно. В данном примере используется значение М1=5. После преобразования пользователю
передаются номера активных нейронов
(т. е. таких, что
Затем производится считывание таблицы весов входов нейрона, которая хранится в текстовом файле. Файлы с таблицами весов (по одному файлу для каждого звука) хранятся в каталоге, задаваемом переменной $dir, например, «/var/www/neuro/». Если файл не найден, значения коэффициентов полагаются равными нулю. После чего выполняется непосредственно обучение нейрона. Если Pk — значение сигнала на входе нейрона, S — значение сигнала на выходе сумматора, где
Значение коэффициента M2 определяет крутизну выходной характеристики нейрона. Чем он больше, тем ближе характеристика к пороговой. В данной программе выбрано значение 0.2. Новый вес входа ck.c вычисляется по формуле:
таким образом, сумма весов равняется нулю. После этого новые значения весов записываются в тот же файл, из которого они были прочитаны. Если пользователь работает с программой режиме распознавания, программа аналогичным образом анализирует звук, читает каждую таблицу весов входов нейрона, вычисляет значение «степени уверенности» Q по приведённой выше формуле, и выбирает звук с наибольшим значением Q.
5. Результаты проведённых экспериментовВ ходе отладки программы была проведена запись нескольких звуков из числа распознаваемых программой, которые затем загружались для обучения и распознавания. Сначала программа обучалась на всех четырёх звуках из набора звуков для обучения, потом делалась попытка провести распознавание звуков из набора для распознавания. Звуки для обучения и распознавания записывались в разное время. Результаты экспериментов приведены в таблице. Значение чувствительности равнялось 10. Правильная последовательность звуков: А О У И О А О, последний звук представляет собой не очень чёткое О.
Видно, что обучение проходит не очень эффективно. Попробуем увеличить значение чувствительности до 30 (число активных входов нейронов должно возрасти):
Качество обучения возрастает.
Увеличим чувствительность до максимального значения (99):
Качество распознавания снижается за счёт того, что звуки О и У сильнее перекрываются по активным нейронам.
6. Выводы
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© НОК CLAIM. Замечания, вопросы и сведения об ошибках просим сообщать в форуме или присылать администратору сайта. |