На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
Страницы: (7) [1] 2 3 ...  6 7 все  ( Перейти к последнему сообщению )  
> Алгоритм распознавания речи , выбор алгоритма
    Есть проблема выбора алгоритма распознавания речи, необходимо произвести анализ имеющихся алгоритмов и выбрать какой-то, и как результат представить программу, которая распознаёт несколько фиксированных слов от конкретного человека т.е. можно дикторозависимую.
    Основных алгоритмов как я понял(может ошибаюсь) два. Один изложен на сайте http://speech-text.narod.ru/ с предварительной цифровой обработкой и поиском по технологии СММ.
    Второй с помощью фонем, как я понял наиболее сложнореализуемый, но эффективный.
    Какой алгоритм лучше использовать? Или есть более простые алгоритмы?
      Если задача создать программу, распознающую несколько (несколько десятков или сотен) слов или фраз, то проще всего сделать это с помощью нейросетей. Причём можно сделать дикторонезависимую (если обучить на нескольких разных голосах).
        Нужно и программу создать и провести анализ алгоритмов (наиболее развитые, перспективные, пока не реализумые). Обосновать выбор исходя из конкретного задания (достаточно одного диктора и около десятка или двух слов)
        А какую нейросеть использовать?есть ли бесплатные разработанные сети, которые можно использовать? Я просто с нейросетями встречался около двух лет назад на лабах и все.
          Цитата rommag @
          провести анализ алгоритмов (наиболее развитые, перспективные, пока не реализумые).

          Наиболее развитые алгоритмы сейчас на основе СММ.
          Наиболее перспективные - на нейросетях.
          Пока не реализованые - алгоритмы выделения инвариантных признаков.
          Алгоритмы будущего - распознавание образов нейросетями, способными выделять инвариантные признаки образов (т.е. признаки, не зависящие от масштабов, поворотов, временных, частотных, пространственных вариаций и искажений).

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

          В выходном слое взять столько нейронов, сколько нужно распознать слов.
          Во входном - максимальное число сегментов умножить на количество признаков в одной точке и умножить на количество точек (в которых вычисляются признаки) в сегменте.
          Число нейронов скрытого слоя нужно подбирать экспериментально.

          Для обучения сети нужно создать (надиктовать) несколько наборов из всех слов.

          Для обучения сети можно использовать или готовые сети з обратным распостранением, или самому написать.

          Ну а для распознавания алгоритм такой:
          1.С определенным шагом вдоль сигнала вычисляете признаки сегментации.
          2.Автоматическая сегментация слова (равномерная или на фонемы, слоги, дифоны...)
          3.Вычисление признаков распознавания в определённых местах сегментов.(это могут быть такие же как и для сегментации)
          4.Набор признаков подаёте на вход сети.
          5.На выходе находите нейрон с максимальным значением.
            Анатоль, Вы описали алгоритм "распознавания речи".
            Почемы-бы Вам не проделать все эти операции и не предоставить
            работающую программу?
            Думаю, что проблема в том, что это ни у кого, к сожалению, не получилось.
            Вот Вы говорите - "нейрон" и по Вашему - это персептрон.
            Забавно. Вы застряли годах в 50-60 прошлого века.
            Нет, если получится, я только за и буду просто счастлив, что
            имел удовольствие читать Ваши посты одним из первых.
            Это не сорказм, честно.
            Ну хорошо, есть Speech API 5 и еще много чего и что изменилось ?
            Прорыв?
            Нет, просто эволюция.
            Сообщение отредактировано: shur_nn -
              Цитата shur_nn @
              Анатоль, Вы описали алгоритм "распознавания речи".

              Ну, это сильно сказано. Я всего лиш сказал, как сделать простенькую програмку для распознавания десятка-двух слов или фраз.
              Цитата shur_nn @
              Почемы-бы Вам не проделать все эти операции и не предоставить
              работающую программу?

              Я давно это проделал. Такую програмку можете посмотреть на моем сайте (http:\\proekt-ai.kh.ua). Называется "Вася".
              Цитата shur_nn @
              Думаю, что проблема в том, что это ни у кого, к сожалению, не получилось.

              "Вася" распознаёт свои фразы очень хорошо. Любым голосом, даже шепотом. Кроме того он может говорить. У него есть свой синтезатор. Это простенькая диалоговая програмка. (Язык украинский).
              Цитата shur_nn @
              Вот Вы говорите - "нейрон" и по Вашему - это персептрон.
              Забавно. Вы застряли годах в 50-60 прошлого века.

              Персептрон состоит из нейронов. В 50-60 годах ещё не умели обучать многослойних персептронов (со скрытым слоем).
              Алгоритм обратного распостранения ошибки появился в 80-тых.
              Кроме того я не говорил, где я застрял, а только как можно сделать простую програмку для распознавания нескольких десятков слов (фраз).
              Сообщение отредактировано: Анатоль -
                Очень заинтересовался "Васей". Жаль, что только по украински.
                Ну да ладно, вроде понятно. В конце концов у меня друг с украины, поможет.
                Попробую немедленно потестить.
                Если все так, как Вы описали, почему нет релиза №2 и т.д.?
                Или при большем числе распознаваемых слов начинаются проблемы ?
                И над чем сейчас Вы работаете ?

                Добавлено
                Потестил.
                У меня обычная китайская гарнитура. Ни при каких уровнях чувсвительности микр. не сумел
                добиться распознавания ни одного слова :(
                К сожалению в основном распознается "Дурная машина" и "Пить будешь".
                Может я как-то не так изпользую программу ?
                Если нетрудно, опишите как ей пользоваться.
                На других программах распознавания хотя-бы 50 на 50 было.
                  Цитата shur_nn @
                  Или при большем числе распознаваемых слов начинаются проблемы ?

                  Я пробовал и на 300 слов (фраз) но только на свой голос. (совести не хватало других людей заставлять 300 фраз записывать). Работало нормально.
                  Цитата shur_nn @
                  почему нет релиза №2 и т.д.?

                  Нет смысла. Обучениение на целые слова (фразы) не перспективно. Слишком много слов в языке.
                  Перспективней обучать распознавать слоги, дифоны. Их меньше.
                  Цитата shur_nn @
                  И над чем сейчас Вы работаете ?

                  Хочу создать психоакустическую модель звуков речи. В которой бы были постоянные параметры, характеризующие даный звук (дифон), параметры, задающие просодику (темп, интонации...) и параметры индивидуального голоса.
                  Если б такую модель удалось создать, то можно было бы синтезировать любой голос (задав только параметры индивидуальности), распознавать звуки речи (выделяя из речи параметры дифонов), идентифицировать диктора...
                  Цитата shur_nn @
                  У меня обычная китайская гарнитура.

                  Я пробовал Васю с разными микрофонами. Он работал и с самыми дешёвыми.
                  Цитата shur_nn @
                  Ни при каких уровнях чувсвительности микр. не сумел
                  добиться распознавания ни одного слова

                  Был бы благодарен Вам, если б Ви записали и выслали мне образцы тех фраз Вашим голосом. (wave, 11кгц. 8 бит. моно) на ящик ant54@yahoo.com
                  Я посмотрел бы в чём там дело.
                  Цитата shur_nn @
                  Если нетрудно, опишите как ей пользоваться

                  Слабым местом Васи является то, что любой шумок, щелчёк он воспринимает за начало фразы и начинает "распознавать".
                  Т.е. с ним надо работать в относительной тишине.
                  Попробуйте отключить голосовой ответ Васи что б не мешал (меню "Голос(-) ).
                  Обратите внимание на осцилограмму. Правильно ли определяется начало и конец фразы (между вертикальными серыми линиями). Правильно ли сделана сегментация (между красными и зелёными вертикальными линиями - гласные.)
                  Цитата shur_nn @
                  На других программах распознавания хотя-бы 50 на 50 было

                  На всех голосах, что я пробовал, распознавание было 100%. (осечки были только в тех случаях, когда распознавание запускалось не настоящим началом фразы, а каким-то шумом)
                    Снова попробовал, но результат неудовлетворительный.
                    Судя по тому, что Вы описали, проблема в шумах. Мой ноут (Asus F3Jseries) ловит помеху 50 Гц,
                    как со встроенного микрофона, так и с микрофона гарнитуры.
                    С самого начала использования ноута эта проблема присутсутсвовала.
                    Мне она особо правда не мешает, даже наоборот.

                    Судя по всему Ваша программа неустойчива к шумам и случайным помехам.
                    И Вы сами описали отчего, неправильно определяется начало распознаваемого фрагмента.
                    Скорее всего в основе корреляционный алгоритм.
                    Подобные проблемы вполне предсказуемы.
                    Думаю, что программа будет сильно ошибаться и на образцах с разной скоростью произнесения.
                    Кто-то говорит быстрее, кто-то медленнее и т.д.

                    Добавлено
                    По поводу создания модели различных голосов - видимо об этом пока рано думать.
                    Проблема полноценного распознавания даже отдельных комманд - нереализована пока никем.
                    Мне, например была поставлена задача: создание на базе терминала оплаты услуг
                    речевого интерфейса. Требования - уверенное распознавание цифр (от 0 до 9) в условиях посторонних шумов
                    (торговый центр). Цель - ускорить процесс оплаты услуг, за счет простого произнесения
                    номера телефона, номера договора, счета, суммы.
                    Работа расчитана на год, оплата по итогам тестирования программы.
                    Договор практически словесный, поскольку ни я ни клиент не готовы заключить
                    юридически обязыающий договор. "Низы не могут, верхи не хотят". :)
                    Я провел свое ислледование. Опробовал множество существующих программ, коммерческих, любительских.
                    Результат -> 0. Ни одна программа не способна справиться с этой, казалось-бы, элементарной задачей.
                    Даже цирковые собаки способны на подобные фокусы :)

                    Сейчас разрабатываю свою модель распознавания. Как обычно голый энтузязизм :)
                      Цитата shur_nn @
                      Мой ноут (Asus F3Jseries) ловит помеху 50 Гц,
                      как со встроенного микрофона, так и с микрофона гарнитуры.

                      Сетевую наводку можно на порядок уменьшить, коснувшись рукой металлической части компютера.
                      Но Вася на 50 гц. не реагирует. Там от каждого значения вычитается смещенное на пол периода для 50 гц.

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

                      Нужна ли психоакустическая модель звуков речи?
                      Нужна в любом случае. В явном, или неявном виде.
                      При обучении на большом количестве примеров программа (нейросеть, СММ...) создает такую модель в неявном (скрытом от человека) виде.
                      Но модель в явном виде была бы в вычислительном плане намного эфективней. В ней не было бы лишних параметров.
                      Ведь при создании модели обучением нужно заложить огромное число свободных параметров, и убрать лишние в обученой модели задача очень сложная.
                        По сути Вы приверженец пофонемного распознавания. Я например то-же.
                        На мой взгляд, обучать псевдо нейросеть, пустая трата времени.
                        Их обобщая способность на много порядков ниже человеческой, возможно
                        гораздо эффективнее и быстрее разобраться самому в обрабатываемых данных.
                        По природе мы все лентяи. Пусть лошадь думает, у нее голово большая :)
                          Цитата shur_nn @
                          По сути Вы приверженец пофонемного распознавания

                          Я бы сказал: посегментного.
                          Нужно брать сегменты большие, чем фонемы. Отдельные фонемы в речи распознать невозможно. Даже человеку. В быстрой речи даже отдельные слоги невозможно распознать.
                          Цитата shur_nn @
                          возможно гораздо эффективнее и быстрее разобраться самому в обрабатываемых данных

                          Разбираются уже лет 60...
                          Надо уловить какую-то закономерность, построить модель со свободными параметрами и обучением на образцах речи вычислить эти параметры.
                          Чем лучше мы будем понимать психоакустические закономерности, чем удачнее построим модель (с минимальным количеством параметров) тем эфективней она будет работать.
                            По поводу N лет, Вы в самую точку. Традиции не всегда хорошо.
                            Есть естественный отбор и эволюция.
                            Естественный отбор - это когда идет отбор наилучших качеств.
                            Эволюция - скачкообразный процесс, приводящий к новым качествам.
                            Практически всё по Дарвину.
                            Эволюции алгоритмов в распознавания речи пока нет, есть естественный отбор.
                            Значит нужен поиск других методов и подходов.
                            Я уже писал в других ветках о применении методов нелинейной динамики к распознаванию речи.
                            У меня уже есть очень хороший результат. Сейчас дорабатываю метод и пишу простенькую (пока) программку
                            речевого калькулятора.
                            Без конкретного результата я бы и не стал так настаивать.
                            Анатоль, советую и Вам изучить направление в области нел. динамики - моделлирование по временным рядам.
                            В этой области уже достаточно наработано, для создания эффективных алгоритмов распознавания образов.
                            Пока математики смакуют "новую игрушку", инженеры должны ее использовать.
                              Цитата shur_nn @
                              Я уже писал в других ветках о применении методов нелинейной динамики к распознаванию речи.

                              Что єто за зверь такой? Не могли бы Ви рассказать о "физической" сущности метода. Без математики.
                              Что там обрабатывают, сигнал, спектр, кепстр?
                              Что обучают распознавать, фонемы, дифоны, слоги, слова?
                                Физическая сущность проста и понятна. Совсем без математики конечно трудно объяснить.
                                Вы наверное слышали о дифференциальных уравнениях. Вся физика на них построена,
                                начиная от механики и кончая квантовой физикой. Физический смысл диф. уравнения
                                установить взаимосвязь между существенными параметрами влиящими на процесс.
                                Фактически установив вид уравнения Вы получаете модель реальной системы.
                                Определив начальные условия уравнения Вы получаете текущее состояние системы.
                                Диф. уравнение по сути и есть мат. аналог реальной системы. Определив начальные условия и вид
                                уравнения можно предсказать поведение реальной системы на некоторый интервал времени (горизонт предсказания).
                                По сути - это и есть распознавание, идентификация системы, явления, процесса.
                                Физический смысл диф. уравнений заложен в их структуре и они определяют закон по которому
                                развивается система.
                                Создания диф. уравнения очень сложный процесс, фактически это и есть открытие нового закона
                                и являлось во все времена уделом избранных.
                                Сейчас появилась возможность реконструировать диф. уравнение по
                                временной реализации параметров, полученных в результате измерения реального процесса.
                                Это стало возможно благодаря развитию собственно компьютеров, а также математики.
                                Я к сожалению не могу Вам в рамках данного общения объяснить все, что уже наработано
                                в данной области. Могу только дать ссылки на литературу в интернете. При желании Вы
                                без труда и сами можете найти информацию на эту тему. Задайте например поиск в гугле -
                                методы глобальной реконструкции, или например реконструкция отображений по временному ряду.

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

                                Допишу программку на Си, обязательно сброшу. Сейчас пока все результаты в маткаде.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (7) [1] 2 3 ...  6 7 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0422 ]   [ 16 queries used ]   [ Generated: 29.03.24, 12:42 GMT ]