Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распознавание речи, Алгоритмы распознавания речи 
:(
    Опции темы
val
  Дата 14.1.2003, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Всем привет! Помогите с идеей... Нужен алгоритм распознавания отдельных голосовых команд. Единственное требование - простота...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 14.1.2003, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Простой алгоритм в случае, если говорит один и тот же человек, - дело нехитрое. Но вот вопрос - нужно, чтобы этот алгоритм корректно работал применительно к разным "говорунам"? Тогда труба... Это к лингвистам.
Вообще неплохо было бы указать, сколько таких отдельных команд, что из себя они представляют: слова, фразы, нечленораздельные звуки и т.д.


PM WWW ICQ   Вверх
Step
Дата 14.1.2003, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



Товарищи, а кто подскажет  с распознованием слогов?


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
val
Дата 15.1.2003, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Цитата
Простой алгоритм в случае, если говорит один и тот же человек, - дело нехитрое. Но вот вопрос - нужно, чтобы этот алгоритм корректно работал применительно к разным "говорунам"? Тогда труба... Это к лингвистам.
Вообще неплохо было бы указать, сколько таких отдельных команд, что из себя они представляют: слова, фразы, нечленораздельные звуки и т.д.


Хорошо, что нехитрое... Пусть нужна программа, настроенная на голос только одного человека ("говоруна") и есть всего 3 команды: ОДИН, ДВА, ТРИ и соответствующая реакция - вывод чисел 1, 2 или 3... И как вы себе видите алгоритм этой программы...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Step
Дата 15.1.2003, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



Жалко тебя огорчать, но пока не как не видем...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
podval
Дата 15.1.2003, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



В общем случае алгоритм распознавания того или иного объекта включает в себя следующие обязательные процессы:
1. Выделение классификационных признаков.
2. Сравнение полученной совокупности признаков с эталонными описаниями классов.
3. Принятие решения о соответствии полученной реализации одному из известных классов.
Соответственно для корректного решения задачи о построении распознающего устройства/алгоритма необходимо предварительно выбрать способ описания характерных признаков объектов, составить эталонные описания классов, ввести критерий принятия решения.
Применительно к нашим N классам речевых сигналов (команд "Один", "Два", ... "Эн") можно поступить так.
Раз это речевые сигналы различной длительности, то удобнее с ними работать в частотной области. Это значит, что в качестве классификационных признаков могут выступать коэффициенты разложения по какой-либо системе функций. Самый известный случай - базис Фурье. конечно, для распознавания речи этот базис слабоват. Сейчас известно большое количество примеров использования других базисов. У нас довольно популярны были различные частотно-временные распределения, вейвлеты. Кстати говоря, вейвлеты, на мой взгляд, в плане возможностей по анализу тонкой структуры сигналов выглядят более предпочтительно.
Но и здесь надо долго выбирать, какой конкретно вейвлет (Добеши, Морлет и т.д. и т.п.) выбрать, сколько уровней разложения взять. Но все эти мучения окупятся. Здесь чисто экспериментальная работа.
Лично я в свое время мучил не просто вейвлет, а вейвлет-пакет.
Итак, допустим, выбрали вейвлет. Теперь беремся за базу эталонов. Садись за микрофон и записывай в какой-нибудь файл речевые команды. Затем из каждого файла берешь выборку, раскладываешь в вейвлет-пакеты. Но это еще не эталоны. Представь себе, что выбрал, к примеру, 7 уровней разложения в вейвлет-пакет. Посчитай, сколько получишь коэфициентов (домашнее задание :)). Так вот, чтобы упростить в вычислительном плане алгоритм, надо взять все полученные вейвлет-образы эталонных сигналов и посмотреть, какими коэффициентами (пронумерованы!) они максимально различаются. И сразу надо забить номера коэффициентов, которые (только эти!) будем вычислять в принятой реализации сигнала при решении задачи классификации. Вот теперь, когда мы таким образом "почистили" коэффициенты, мы получили эталонные описания.
Едем дальше.
Критерий принятия решения или некоторое правило принятия решения.
Понятие критерия принятия решения тесно связано с понятем показателя. Особо не философствуя, отмечу, что в ряде случаев эти понятия совпадают. Давай сразу - введем в качестве показателя (критерия близости) некоторое расстояние (метрику), характеризующее степень "похожести" полученной реализации и каждого из эталонов. Сейчас очень модны (и вообще говоря эффективны) критери близости, ранее появившиеся в статистике.
Например, всем известное расстояние Евклида. Все знают его из школьного курса геометрии как растояние между двумя точками на плоскости. Отличие только в том, что у нас n-мерный случай.
Расстояние Махаланобиса. Отличается от евклидова учетом обобщенной ковариационной матрицы. это дает более высокую точность работы в условиях шумов (искажений, помех). например, ты забил в базу эталон команды "Шестнадцать", когда у тебя было бодрое настроение. на следующий день тебе его испортили. Ты говоришь в микрофон так грустно: "Шишнаааацасссь" :(. В результате решающее устройство соврёт, но только не в том случае, если ты выбрал махаланобисский критерий!
Расстояние Минковского. Работает еще более устойчиво. Если интересно, из теории сообщу, чем отличается. Расстояние махаланобиса применяют в случае нормального закона распределения ошибок, а расстояние Минковского к нему инвариантно.
Итак, критерий можем сформулировать словесно: получена реализация сигнала того класса, от эталона которого она минимально отличается.
Таким образом предварительная работа проведена, получаем следующий алгоритм:
1. Выделить классификационные признаки в полученной реализации сигнала. В нашем случае разложить в вейвлет-пакет (либо другую систему функций).
2. Сравнить полученную совокупность признаков с эталонными описаниями. Это значит, вычисляем принятую метрику.
3. Смотрим, для какого эталона эта метрика оказалась минимальной. Отождествляем принятую реализацию сигнала с этим классом.

Я когда-то с помощью вейвлетов и расстояния Махаланобиса пытался распознавать принадлежность голоса тому или иному человеку. Получалось. И получалось по той же схеме распознавать не только речевые сигналы, но и радиосигналы со сложными видами модуляции.
Получится ли распознать слова - не знаю. Работай :)

Если надо кому-нить, могу привести участки кода. Но ведь это уже не алгоритм, а его конкретное воплощение, да? :)

© Небольшой экспромт :)


PM WWW ICQ   Вверх
val
Дата 15.1.2003, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Большое тебе спасибо за ответ, podval... Весьма интересен подход к этой проблемме. Встречный вопрос, а что ты думаешь про использование динамического программирования в распознавании речи?


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Step
Дата 16.1.2003, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



мужики, эт вы круто загнули.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
val
Дата 16.1.2003, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Цитата
мужики, эт вы круто загнули.

Возможно, но почему бы не поговорить о наукоёмких алгоритмах...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Step
Дата 16.1.2003, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



Цитата
Возможно, но почему бы не поговорить о наукоёмких алгоритмах...

ТА В ПРИНЦИПЕ Я НИЧЕГО ПРОТИВ НЕ ИМЕЮ.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
podval
Дата 16.1.2003, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата(val @ 15.1.2003, 14:28)
а что ты думаешь про использование динамического программирования в распознавании речи?

Ты имеешь в виду метод динамического программирования? А на каком конкретно этапе общего алгоритма?
PM WWW ICQ   Вверх
val
Дата 16.1.2003, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Цитата
Ты имеешь в виду метод динамического программирования? А на каком конкретно этапе общего алгоритма?


Именно... На этапе сравнения эталоных параметров с параметрами входного сигнала... Это может помочь снизить эффект затяжек при произнесении команд...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 17.1.2003, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата
Это может помочь снизить эффект затяжек при произнесении команд...

Давай подробнее, а то не врубаюсь.
PM WWW ICQ   Вверх
val
Дата 17.1.2003, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



Цитата
Давай подробнее, а то не врубаюсь.

Ну, смотри... Алгоритм примерно таков...
1. Формируем эталонные параметры сигнала.
2. Получаем параметры входного сигнала.
3. Сравниваем оба множества параметров методом динамического программирования (метод динамического искажения времени - ДИВ).
    В конце 60-х годов для измерения степени сходства между реализацией и эталоном слова было предложено использовать динамическое программирование, которое позволяло отыскать минимум расстояния в заданной метрике с учетом нелинейных деформаций оси времени. Впоследствии метод динамического программирования был распространен на полунепрерывное по времени представление речевого сигнала в виде последовательности символов сегментов из конечного множества.
Применение динамического программирования позволило достичь весьма высокой (97-99%) надежности распознавания изолированных слов с настройкой на диктора для словарей объемом до 100-200 слов.
    Речь является процессом, изменяющимся во времени. Различные произношения одного и того же слова обычно имеют разную длительность, а произношения одного и того же слова одинаковой длительности отличаются в середине из-за  различных частей слова, произносимых с разной скоростью. Чтобы получить глобальную оценку расхождения между двумя речевыми образцами, представленными как вектора , должно быть выполнено выравнивание по времени. Входной сигнал  сравнивается со всеми эталонами хранящимися в модели пользователя. Результатом сравнения будет эталон, для которого было найдено минимальное расхождение между входящим сигналом и эталоном . Глобальная оценка расстояния для маршрута — это просто сумма локальных расстояний между кадрами сигнала и эталона .

                             На процесс сравнения накладываются следующие ограничения:
1.  Маршрут анализа не может идти назад во времени.
2. Каждый кадр входящего сигнала и шаблона должен быть использован при сравнении.
3. Локальные оценки совпадения объединяются добавлением к текущему
глобальному расхождению.
Алгоритм поиска глобального наименьшего маршрута:
1 . Вычислить нулевой столбец, начиная с самой нижней ячейки. Глобальная оценка для этой ячейки равна локальной.  Тогда глобальная оценка для каждой последующей ячейки равна локальной оценке для этой ячейки плюс глобальная оценка до ячейки под ней.
2. Вычислить глобальную оценку для первой ячейки следующего столбца, сложив локальную оценку с глобальной оценкой для самой нижней ячейки предыдущего столбца .
3. Вычислить глобальную оценку для оставшихся ячеек текущего столбца. Например , для точки (i, j) — локальная оценка для точки (i, j) плюс минимальная глобальная оценка из (i-1 , j), (i, j-1 ) или (i-1 , j-1 ).
4. Текущий столбец становится предыдущим, и все повторяется со второго шага, до тех пор, пока не будут просчитаны все столбцы.
5. Глобальная оценка — это значение, сохраненное в самой верхней ячейке последнего столбца.

Ниже показан псевдокод описанного процесса :
calculate first column (predCol)
for i=1 to number of input feature vector frames
{
curCol[0] = local cost at (i,0) + global cost at (i-1,0);
for j=1 to number of template feature vector frames
{
curCol[j] = local cost at (i,j) + minimum of global cost
at (i-1,j), (i,j-1) or (i-1,j-1);
}
predCol = curCol;
}
minimum global cost is value in curCol[number of template fea-turevector frames].

__


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 18.1.2003, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Понятно. Ты говоришь о временной области. А я говорил о частотной. ИМХО так проще и удобнее (для моего случая). Особенно если использовать вейвлеты, т.к. они локализованы и по времени, и по полосе.
Ну а по поводу ДП вот что скажу. Алгоритмы, основанные на методе ДП, обладают абсолютной сходимостью в рамках заданных условий и ограничений. НО! У них очень низкое быстродействие при большой размерности задачи. Даже если считать на сверхбыстром процессоре, все равно мое мнение - нельзя в хорошую железяку закладывать плохую математику.
Подумай хорошенько. Нельзя ли сфорулировать задачу попроще, чтобы удобнее было строить вычислительный процесс.


PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0890 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.