Menu

Home

Oleg Dorozhko

Welcome to your wiki!

This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].

The wiki uses Markdown syntax.

Project Admins:


Discussion

  • Oleg Dorozhko

    Oleg Dorozhko - 2012-09-11

    Основы алгоритма распознавания и сличения образцов:

    Допустим, у вас есть две последовательности чисел

    10, 20, 30, 40, 50
    и
    11, 19, 30, 44, 50

    Эти последовательности при отображении, скажем на графике дадут примерно подобные линии

    Вопрос, как запрограммировать программу, чтобы она эти две последовательности посчитала равными?

    На помощь придет объект Cell - ячейка и такая присказка: у любой ячейки есть и начало и конец.

    Итак, объект Cell имеет два поля s и f

    Создаем 5 объектов Cell на основе первой последовательности

    Вот они: (10,10)(20,20)(30,30)(40,40)(50,50)

    Объект Cell также имеет метод eql, который возвращает истину, если входной параметр
    помещается между граничными значения s и f (включительно)

    Таким образом, после инициализации 5 ячеек первой последовательностью и сравнении в цикле этих ячеек с каждым элементом

    второй последовательности получим 40% совпадение между двумя последовательностями.

    Но что будет, если под чутким руководством оператора, одна из ячеек изменит свое значение?

    (10,11) <- эта (20,20)(30,30)(40,40)(50,50)

    Теперь при сравнении в цикле этих ячеек с каждым элементом второй последовательности получим уже 60% совпадение
    между двумя последовательностями.

    Такое изменение возможно при вызове метода learning нашего объекта Cell.

    В этом методе входной параметр сравнивается с граничными условиями и если он меньше s то s присваивается входной параметр.
    Если он больше f то f присваивается входной параметр.

    Так происходит обучение ячейки на распознавание близко лежащих значений.

    Обучив все ячейки добиваемся 100% результата распознавания наших двух последовательностей, как похожих между собой.

    Более того, если подать на вход третью подобную последовательность то также получим результат близкий к 100%

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

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

    Используя классы CellsManager и Cell я написал простенькую обучаемую программу распознавания речи.
    (разместил ее на sourceforge.net)

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

     

    Last edit: Oleg Dorozhko 2012-09-11
  • Oleg Dorozhko

    Oleg Dorozhko - 2012-09-11

    запускаете из cmd

    java p226.RecordingTest

    а если хотите звук Ма записать, то так:

    java p226.RecordingTest ma

     
  • Oleg Dorozhko

    Oleg Dorozhko - 2012-09-13

    Добавил в архив краткую инструкцию по работе с кнопками программы
    и бат файл для запуска (под Windows 7)
    Также привожу инструкцию по кнопкам ниже:

    RS при клике на эту кнопку программа переводится в режим Recognize Sound
    Вы говорите - она распознает исходя из ранее записанных звуков
    P при клике на эту кнопку программа выдает результат сличения на консоль, с которой была запущена (пока так)
    RNS запись нового звука или слога. Скажите слог и подождите секунд десять, потом нажмите паузу.
    LSM режим обучения, в этом режиме вы повторяете ранее записанный звук для программы. Скажите слог и подождите секунд десять, потом нажмите паузу.
    EXIT выход из программы

     

    Last edit: Oleg Dorozhko 2012-09-13
  • Oleg Dorozhko

    Oleg Dorozhko - 2012-09-16

    UPDATE 1.1:

    Добавлена консоль и окно логов
    Консоль работает так:
    При вводе команды: def out point и нажатия ENTER запускается определитель точки,
    в которой будут печататься распознанные слова.
    Вы просто подводите мышку к нужному вам месту (например окну ввода чата посередке)
    и кликаете левым кликом. Координаты запомнятся программой и распознанные слова она будет выводить именно в этой точке.
    Также в консоль можно просто вводить любые предложения и они будут печататься в ранее определенной точке.
    Продолжается работа над другими командами для консоли

     

Log in to post a comment.