Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Распознавание речи


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

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


Автор: Step 14.1.2003, 23:00
Товарищи, а кто подскажет  с распознованием слогов?

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


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

Автор: Step 15.1.2003, 06:53
Жалко тебя огорчать, но пока не как не видем...

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

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

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

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


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

Автор: Step 16.1.2003, 00:57
мужики, эт вы круто загнули.

Автор: val 16.1.2003, 01:48
Цитата
мужики, эт вы круто загнули.

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

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

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

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

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

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


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

Автор: podval 17.1.2003, 07:25
Цитата
Это может помочь снизить эффект затяжек при произнесении команд...

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

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

Ну, смотри... Алгоритм примерно таков...
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].

__

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


Автор: Step 23.1.2003, 22:44
http://www.swd.nnov.ru/deep.htm
Там есть ссылки по распазнованию речи

Автор: Гость 26.1.2003, 13:01
Цитата
НО! У них очень низкое быстродействие при большой размерности задачи. Даже если считать на сверхбыстром процессоре, все равно мое мнение - нельзя в хорошую железяку закладывать плохую математику.


А если я скажу, что ещё в СССР серийно производилась плата с ДП-алгоритмом? Всё ещё будете считать это плохой математикой??

Автор: podval 27.1.2003, 04:34
Цитата
А если я скажу, что ещё в СССР серийно производилась плата с ДП-алгоритмом? Всё ещё будете считать это плохой математикой??

Ну и что? Я вот когда-то придумал устройство для решения задач целочисленного линейного программирования.
Все зависит от того, какую задачу надо решить. Если задачу удалось формализовать только так, что возможно применить только метод ДП, то куда деваться? Здесь надо выбирать, чем можно поступиться: быстродействием, точностью, требуемой памятью и т.д.

Автор: val 28.1.2003, 03:06
Абсолютно согласен с Вами, PODVAL. ДП - это достаточно сложный и медленный алгоритм для распознавания с большим словарём, но вместе с тем и самый надёжный. Тут уж против этого ничего не скажешь... Правда и вевлет анализ во времена СССР еще не был распространён... У меня просьба... не могли бы Вы более детально описать мне структуру алгоритма распознавания путём вейвлетов...

Автор: podval 28.1.2003, 07:18
ОК, только попозже. Полно работы.
Немного терпения! smile.gif

Автор: val 29.1.2003, 23:46
Уважаемые участники обсуждения! Я немного сменил свой аватар... Теперь у меня пирамида... вместо солнца. Но в общем это неважно...
Продолжая данную тему... На сайте http://www.datacompression.info я обнаружил небольшую статью под названием:
"How can I build a simple speech recogniser?" В общем, в статье говорится, что простой распознаватель речи можно постройть используя следующий алгоритм:
Цитирую:
1. Find the begining and end of the utterance.
2.Filter the raw signal into frequency bands.
3.Cut the utterance into a fixed number of segments.
4.Average data for each band in each segment.
5.Store this pattern with its name.
6.Collect training set of about 3 repetitions of each pattern (word).
7.Recognize unknown by comparing its pattern against all patterns in the training set and returning the name of the pattern closest to the unknown.

У меня просьба, не могли вы прокомментировать данную последовательность действий и, если несложно, немного формализировать до конкретного алгоритма...

Автор: stab 30.1.2003, 06:09
интересно было бы реализовать вышеописанное. Что посоветуете для частотного анализа? БПФ?

Автор: stab 30.1.2003, 06:13
Step ты что увлекся Deeptown'ом ?

Автор: val 30.1.2003, 22:28
Цитата
интересно было бы реализовать вышеописанное. Что посоветуете для частотного анализа? БПФ?


На самом деле это абсолютно неважно... Сейчас не стоит вопрос о способах вычисления Фурье... Бери простое ДПФ и не засоряй алгоритм. Самое интересное - структура и способ задания эталонных элементов... Я уже пробовал реализовывать этот алгоритм, но наткнулся на непонимание того, что из себя в конечном счете должен представлять эталон...

Автор: stab 31.1.2003, 02:11
как я понял эталон -- это набор амплитуд частот (band), набор имеет фиксированую длинну, скажем все слова (звуки отделенные друг от друга тишиной) бьются на 64 блока в каждом ищется для каждой band ее амплитуда и все это является эталоном.

Автор: podval 31.1.2003, 05:53
КОММЕНТАРИИ

Цитата
Я уже пробовал реализовывать этот алгоритм, но наткнулся на непонимание того, что из себя в конечном счете должен представлять эталон...


Цитата
1. Find the begining and end of the utterance.
2.Filter the raw signal into frequency bands.
3.Cut the utterance into a fixed number of segments.
4.Average data for each band in each segment.
5.Store this pattern with its name.

Вот после выполнения этих шагов и получим эталон. Эти шаги повторяем для всех классов, подлежащих распознаванию.

Цитата
Collect training set of about 3 repetitions of each pattern (word).

Это попытка так сказать "усреднить" каждый из эталонов, улучшить их свойства стационарности.

Цитата
.Recognize unknown by comparing its pattern against all patterns in the training set and returning the name of the pattern closest to the unknown.

Будьте внимательными! "Неизвестный" означает, что мы не знаем заранее, какому из эталонов он наиболее близок. Но это не значит, что на вход можно подать абы какой сигнал. Он обязательно должен принадлежать одному из известных (образцы которых у нас хранятся) классов.

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

Автор: val 31.1.2003, 23:44
Хорошо, а теперь давайте посмотрим внимательнее...
1. Find the begining and end of the utterance.
Да, это действительно просто. Найти начало и конец слова можно по установленному порогу амплитуды...
2.Filter the raw signal into frequency bands.
Первые непонятные моменты... Каким окном мы будем "идти" по сигналу? Но ладно... Предположим, что идём мы окном по 80 дискрет. Итого, получили линейку из 80 амплитуд частот.
3.Cut the utterance into a fixed number of segments.
Непонятно, по какому критерию происходит сегментация частот. Каково количество сегментов, каковы их длины.
4.Average data for each band in each segment.
Усреднить значения частот в каждом сегменте, как это?
5.Store this pattern with its name.
Тут уже по обстоятельствам...


Автор: podval 2.2.2003, 06:31
Дело в том, что здесь надо провести кое-какую экспериментальную работу.
Цитата
Каким окном мы будем "идти" по сигналу?

Это как сам решишь. Подбирай.

Цитата
Непонятно, по какому критерию происходит сегментация частот. Каково количество сегментов, каковы их длины.

Я бы выбрал те сегменты, где концентрируется основная энергия сигнала. А как иначе?
Какое их количество - опять смотри, думай и подбирай. Возьми несколько примеров, тогда сможешь определить примерное количество сегментов, достаточное для работы.
А вот каковы их длины - видно на частотной диаграмме. Можешь сортировать по пороговому значению амплитуды, а если не хочешь - сломай в себе привычное Фурье-представление о спектрах. В вейвлет-пакетах такой вопрос просто не возникает.

Цитата
Усреднить значения частот в каждом сегменте, как это?

Скорее всего, речь идет о том, чтобы отнормировать значения амплитуд спектральных компонент к максимальному значению. Это для того, чтобы все эталоны имели как бы одну шкалу (от 0 до 1). А то получатся одни эталоны "громкие", другие "тихие" - это лажа, так низя smile.gif .

Автор: val 5.2.2003, 00:19
Большое спасибо, podval, за ценные ответы...
А если подходить к проблеме, используя аппарат вейвлет анализа... Как я понимаю, вейвлеты - это базисные функции, сжатие и растяжение которых обеспечивает аппроксимацию входного сигнала. Тогда, в рамках вейвлетов, как можно трансформировать этот алгоритм... Какие параметры (эталоны) нам дают вейвлеты?

Автор: val 5.2.2003, 01:13
Еще одна проблема... Непонятно, как использовать Расстояние Махаланобиса в рамках решения задачи классификации сигналов.

Кратко дам теорию:

В общем, расстояние Махаланобиса является мерой расстояния между двумя точками в пространстве, определяемым двумя или более коррелированными переменными. Например, если имеются всего две некоррелированных переменные, то вы можете нанести точки (образцы) на стандартную 2М диаграмму рассеяния. Расстояние Махаланобиса между точками будет в этом случае равно расстоянию Евклида, т.е. расстоянию, измеренному, например, рулеткой. Если имеются три некоррелированные переменные, то для определения расстояния вы можете по-прежнему использовать рулетку (на 3М диаграмме). При наличии более трех переменных вы не можете более представить расстояние на диаграмме. Также и в случае, когда переменные коррелированы, то оси на графике могут рассматриваться как неортогональные (они уже не направлены под прямыми углами друг к другу). В этом случае простое определение расстояния Евклида не подходит, в то время как расстояние Махаланобиса является адекватно определенным в случае наличия корреляций.

Расстояние Махаланобиса и классификация. Для каждой совокупности в выборке вы можете определить положение точки, представляющей средние для всех переменных в многомерном пространстве, определенном переменными рассматриваемой модели. Эти точки называются центроидами группы. Для каждого наблюдения вы можете затем вычислить его расстояние Махаланобиса от каждого центроида группы. Снова, вы признаете наблюдение принадлежащим к той группе, к которой он ближе, т.е. когда расстояние Махаланобиса до нее минимально.



Автор: podval 5.2.2003, 05:53
Так что же непонятно? Формулу что ли подсказать?

Автор: podval 5.2.2003, 06:05
Цитата
Какие параметры (эталоны) нам дают вейвлеты?

Они дадут основные различия в "деталях" того или иного сигнала. Разложив сигнал по вейвлет-коэффициентам, мы увидим, в каких областях вейвлет-спектра концентрируется основная энергия сигнала. Соответственно, основным классификационным признаком становятся эти самые коэффициенты.

Автор: val 6.2.2003, 00:06
Цитата
Так что же непонятно? Формулу что ли подсказать?


Да

Автор: podval 6.2.2003, 01:42
D = (X1 - X2)'*S*(X1 - X2)

X1 и Х2 - центроиды классов 1 и 2 - не что иное, как математические ожидания или их статистический аналог, т.е. выборочные средние;
' - символ транспонирования (предполагается, что X1 и Х2 - это векторы);
* - символ матричного умножения;
S - матрица, обратная к обобщенной ковариационной матрице для X1 и Х2.

Автор: val 6.2.2003, 02:46
Цитата
S - матрица, обратная к обобщенной ковариационной матрице для X1 и Х2.


Прокомментируйте пожалуйста...


Автор: podval 6.2.2003, 07:04
ОК. Пишу сразу в матричном виде. Найдем сначала ковариационные матрицы (точнее, их оценки) для выборок А1 и А2. Соответствующие им векторы средних Х1 и Х2 мы уже имеем.
1. Центрирование:
В1 = А1 - Х1 - из каждого столбца матрицы А1 надо вычесть вектор средних Х1. То же делаем для А2:
В2 = А2 - Х2.

2. Определяем ковариационные матрицы

Cov1 = В1'*В1 - это значит умножить В1 транспонированную на В1 (по правилам умножения матриц!) Соответственно
Cov2 = В2'*В2.

Лирическое отступление: строго говоря, чтобы получились действительно ковариационные матрицы, надо поделить Соv1/(n1 - 1) и Соv1/(n2 - 1) , где n1 и n2 - длины векторов Х1 и Х2. Но это сейчас не понадобится.

3. Вычисляем объединенную (пардон, выше сделал очепятку smile.gif) матрицу:

Cov12 = (Cov1 + Cov2)/(n1 + n2 - 2)

А для вычисления расстояния Махаланобиса Cov12 надо обратить.

Автор: val 7.2.2003, 02:51
Является ли предложенный вариант распознавателя дикторонезависимым?

Автор: podval 7.2.2003, 03:09
Я такой вопрос не исследовал. Распознать, кому из дикторов принадлежит голос, реально.
Но насчет дикторонезависимости я очень сомневаюсь.
Я думаю, что в таком случае надо воевать с фонемами, формантами и т.п.
Надо поковырять, конечно, попробуй.

Автор: val 17.2.2003, 23:52
К данной тематике немного отвлеченный вопрос... Пусть есть 2 реализации одного и того же слова, сказанного одним и тем же человеком. Давайте попробуем определиться с тем, что отличного в этих сигналов. Начну я...
1. Разная амплитуда
2. Разная длина за счет различной длины произнесенных гласных

Автор: podval 19.2.2003, 06:39
Тембр может отличаться.

Автор: 78125 22.2.2003, 00:38
Все намного проще!

Первое в етом деле (распознавании) это длинна фразы!

Автор: Vladgul 23.2.2003, 04:52
Уважаемый podval. Вы обмолвились что можете привести участки кода реализации алгоритма с помощью вейвлетов и расстояния Махаланобиса распознавания принадлежности голоса тому или иному человеку.
Я был бы очень признателен, если Вы их привели здесь или выслали мне на mail [email protected]
Мне интересен сам подход к идентификации человека по голосу, т.е. почитав этот форум и конкретно Ваши сообщения у меня возникла идея о распознавании членов моей семьи (ошибки распознавания не критичны, а кстати, насколько четко отрабатывала Ваша программа?)

Автор: Crait 23.2.2003, 07:48
 Мне тоже были бы интересны процедуры вейвлет-преобразования и вычисления расстояния Махаланобиса. 
Кроме того, нельзя ли рассказать о том, как строилась ковариационная 
матрица ?

Автор: val 25.2.2003, 03:00
Если уж раскрывать исходный код, то тогда не в частном порядке, а выложить это на форум... Возможно вместе мы сможем как-то усовершенствовать метод...

Автор: podval 25.2.2003, 18:44
Мне надо хорошо поковыряться в своих исходниках. И не только в них. То, что вы просите, изобретал не я один. А мы вдвоем smile.gif
Так что немного времени. Вопрос научной этики надо решить.

Автор: podval 4.3.2003, 05:04
Господа, я все еще помню о своем обещании. Сейчас я готовлю (в офф-лайне есссно) небольшую статейку с пояснениями. Ее я выделю в отдельный топик. Так что ждите. smile.gif

Автор: Unregistered 28.4.2003, 19:55
Посмотрите на dsp-book.narod.ru
Там довольно много про речь.

Автор: Albert 18.10.2004, 22:22
:qstn и что же решили?

Автор: podval 19.10.2004, 08:25
Уже давно решили: http://forum.vingrad.ru/index.php?showtopic=7220&hl=???????-?????

Автор: Interpretation 28.10.2004, 17:27
Здравствуйте, товарищи...
Я бы хотел пооучаствовать в обсуждении проблемы распознавания речи, т.к. передо мной тоже встала данная задача!

:gstn У меня вопрос! О распознавании какой речи идёт обсуждение??? Русской или английской???

Автор: Interpretation 28.10.2004, 17:38
В какой программе лучше всего программировать распознавание речи???

Автор: podval 28.10.2004, 20:56
Interpretation
А можно поточнее вопрос сформулировать?
Ты про Toolkit какой-нибудь говоришь?

Автор: Interpretation 31.10.2004, 14:14
Нет не про Toolkit!
Я хочу написать программу распознования речи на C++

Автор: podval 31.10.2004, 18:10
Тогда программируй на С++ в той среде, в которой тебе удобнее.
Какая собственно разница?

Автор: val 1.11.2004, 11:28
Цитата
У меня вопрос! О распознавании какой речи идёт обсуждение??? Русской или английской???


Не имеет значения... Просто - человеческой :)

Автор: chaos 1.11.2004, 14:01
можно много инетерсного узнать почитав про преобразования Фурье, Хаара и вейвлет преобразования

Автор: Interpretation 1.11.2004, 16:01
:qstn
Podval, у тебя нет алгоритма распознования речи??? Мне желательно русской!!!
Добавлено @ 16:03
Я просто даже и не знаю с чего начать, что использовать!!!
Как, чего, к чему???
Никогда передо мной не вставала задача распознавания речи... Эх... :-(((

Автор: chaos 1.11.2004, 16:45
Цитата(Interpretation @ 1.11.2004, 16:01)
:qstn
Podval, у тебя нет алгоритма распознования речи??? Мне желательно русской!!!
Добавлено @ 16:03
Я просто даже и не знаю с чего начать, что использовать!!!
Как, чего, к чему???
Никогда передо мной не вставала задача распознавания речи... Эх... :-(((

для начала тебе математику стоит почитать!!! И иметь представления как я уже говорил об преобразованиях Фурье, Лапласа, Хаара и вейвлетах

Автор: podval 2.11.2004, 13:50
Цитата(Interpretation @ 1.11.2004, 17:01)

Podval, у тебя нет алгоритма распознования речи???

Распознавание речи - это вершина всей теории и практики распознавания образов и никак не сводится к одному алгоритму.

Начни отсюда: http://www.speech.cs.cmu.edu/comp.speech/

Автор: Interpretation 4.11.2004, 11:20
Спасибо Podval, спасибо Chaos!!!
Воспользуюсь вашими советами...

Почитаю математику, посмотрю сайты по распознаванию речи и зайду сюда с новыми возникшими у меня вопросами...

Автор: chaos 4.11.2004, 12:28
Цитата(Interpretation @ 4.11.2004, 11:20)
Спасибо Podval, спасибо Chaos!!!
Воспользуюсь вашими советами...

Почитаю математику, посмотрю сайты по распознаванию речи и зайду сюда с новыми возникшими у меня вопросами...

есть книга так и называется: Преобразования Лапласа, Фурье, Хаара, там рассматривается мат аппарат для распознования, генерации речи, обработка графики и тд
Авторов не помню (я думаю в любой библиотеке вузов она есть, тк там я ее нашел)

Автор: Realist 21.4.2005, 14:33
Есть какие ссылки на рабочие исходники ?
Добавлено @ 14:34
Как записать файл в массив, чтобы выполнить над ним БПФ ?

Автор: podval 22.4.2005, 09:22
Realist
Модератор: Пожалуйста, один топик - один вопрос.
Начните другую тему.


Автор: grisania 23.4.2006, 13:11
Цитата(podval @  15.1.2003,  07:05 Найти цитируемый пост)
Самый известный случай - базис Фурье. конечно, для распознавания речи этот базис слабоват. Сейчас известно большое количество примеров использования других базисов. У нас довольно популярны были различные частотно-временные распределения, вейвлеты. Кстати говоря, вейвлеты, на мой взгляд, в плане возможностей по анализу тонкой структуры сигналов выглядят более предпочтительно.
Но и здесь надо долго выбирать, какой конкретно вейвлет (Добеши, Морлет и т.д. и т.п.) выбрать, сколько уровней разложения взять. Но все эти мучения окупятся. Здесь чисто экспериментальная работа.


Есть базис Карунена-Лоева, первые компоненты которго хавают максимум энергии случайного сигнала. Базис Карунена-Лоева это тоже самое что главные компаненты.
Есть статья амеров, где они применяют метод главных компанент для распознвания фонем.
"ROBUST PHONEME DISCRIMINATION USING ACOUSTIC WAVEFORMS"
http://www.uv.es/~balbelo/CBB_icassp02.pdf

ссылка на патент http://www.uv.es/~balbelo/patents.html
Год издания: http://intl.ieeexplore.ieee.org/xpl/abs_fr...rNumber=1005740
This paper appears in: Acoustics, Speech, and Signal Processing, 2002. Proceedings. (ICASSP '02). IEEE International Conference on
Publication Date: 2002
Volume: 1, On page(s): I-317- I-320 vol.1
Meeting Date: 05/13/2002 - 05/17/2002
Location: Orlando, FL, USA 


 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)