Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.152.162] |
|
Страницы: (23) « Первая ... 18 19 [20] 21 22 ... Последняя » ( Перейти к последнему сообщению ) |
Сообщ.
#286
,
|
|
|
Цитата Вычистил звук отдельно ladspa Различные алгоритмы обработки звука обычно повреждают сигнал и ухудшают качество распознавания Цитата Хотя там вообще чистая линия синусоиды. Подскажите пожалуйста почему так? В pocketsphinx VAD простой - он отслеживает уровень шума и уровень сигнала и просто смотрит, чтобы сигнал был больше шума. Синусоиду тоже может принять за сигнал. Если хочется более сложный VAD лучше попробовать https://github.com/wiseman/py-webrtcvad. |
Сообщ.
#287
,
|
|
|
Приветствую!
Если не затруднит кого-нибудь направить меня на путь истинный и ответить на пару вопросов. Просто столько разных версий было и куча тем, что не разберешься, что уже есть, а чего нет и не понятно правильно ли я делаю. Так как с недавних пор меня заинтересовала данная тема, я почитал информацию об этом, темы и вопросы, но не понял одного момента: 1) Я скачал Pocketsphinx и все необходимое к нему для Windows, построил решения pocketsphinx и sphinxbase в Visual Studio 2012 (2010 как оказалось не подходит), скачал акустическую модель, словарь и языковую модель для русского языка. Запустил через командную строку pocketsphinx_continuous.exe с аргументам pocketsphinx_continuous.exe -hmm c:\zero_ru.cd_cont_4000 -dict c:\ru.dic -lm c:\ru.lm -inmic yes Здесь все работает, оно и понятно. Тут другой вопрос, я пока решил просто с аргументами разобраться и посмотреть в общем как это работает, почитал про ключевую фразу\слово, что можно через -keyphrase задать слово\фразу или через файл, я выбрал через файл, т.к. через командную строку в винде русское слово не воспринимается. Файл я создал как было написано keyphrase.list и задал через параметр -kws. Файл создал в кодировке UTF-8 без BOM. И как я понял языковая модель при использовании kws не нужна. В общем запустил в таком виде: pocketsphinx_continuous.exe -hmm z:\zero_ru.cd_cont_4000 -dict z:\ru_key.dic -inmic yes -kws keyphrase.list Опять же все работает, определяется только ключевое слово остальные не воспринимаются. Но есть еще тип файла .jsgf который тоже можно создать, я так понял это наподобие языковой модели только упрощенная. Здесь я не совсем понял для чего она, файл делал по примеру из этой же темы второе сообщение, сначала я думал, что воспринимается только определенная последовательность, т.е. сказал "один два три" он так и вывел, но если просто говоришь "три" или "два" то выводит опять тоже самое, т.е. как будто до этого один и два тоже звучали. И еще я правильно понял, что ключевое слово с этим файлом не работает? Потому как я пытался запустить их вместе, а ключевое слово никак не воспринималось: pocketsphinx_continuous.exe -hmm z:\zero_ru.cd_cont_4000 -dict z:\ru_key.dic -jsgf z:\ru_key.jsgf -inmic yes -kws keyphrase.list Мне интересная активация по ключевому слову, с последующем вводом команды и я так почитал и понял, что используя аргументы для pocketsphinx_continuous.exe это не посмотреть. Скажите прав ли я в своим рассуждениях и выводах, чтобы не тратить время зря. Спасибо. |
Сообщ.
#288
,
|
|
|
Цитата therunman Здесь я не совсем понял для чего она Не всегда нужна статистическая модель, иногда проще описать возможные последовательности слов простой грамматикой. Цитата therunman @ что используя аргументы для pocketsphinx_continuous.exe это не посмотреть. Это так. Если нужно более сложное поведение, можно написать простую программу на Python. |
Сообщ.
#289
,
|
|
|
Цитата nsh @ можно написать простую программу на Python. Т.е. это будет проще, чем в C++? Возможно ли потом использовать этот код для прошивки или создания приложения, просто я не знаю его? Про jsgf мне непонятно, он задает определенную последовательность какая должна прозвучать или как, потому что когда я прописываю этот файл, то все работает, как бы, но почему-то даже если произносишь не все возможное предложение, а например, "старт тест номер один", если произнести просто тест или просто один, то выводится "старт тест один" или вообще другое слово в конце. Просто везде где ни читаю, пишут что это именно последовательность ожидаемых предложений или команд. И еще вопрос, про синтез речи, это в рамках данной наработки или уже отдельный вопрос? Хотел использовать RHvoice, но голоса, даже новые слишком уж роботоподобные, хотя это бесплатно и если выбора не останется придется использовать их наверное. |
Сообщ.
#290
,
|
|
|
Цитата therunman @ Т.е. это будет проще, чем в C++? Возможно ли потом использовать этот код для прошивки или создания приложения, просто я не знаю его? Можно и в C++, если хочется Цитата Про jsgf мне непонятно, он задает определенную последовательность какая должна прозвучать или как, потому что когда я прописываю этот файл, то все работает, как бы, но почему-то даже если произносишь не все возможное предложение, а например, "старт тест номер один", если произнести просто тест или просто один, то выводится "старт тест один" или вообще другое слово в конце. Просто везде где ни читаю, пишут что это именно последовательность ожидаемых предложений или команд. Распознаются предложения в соответствии со спецификацией. Если нужно, чтобы распознавались более короткие предложения, нужно включить их в спецификацию. Цитата И еще вопрос, про синтез речи, это в рамках данной наработки или уже отдельный вопрос? Хотел использовать RHvoice, но голоса, даже новые слишком уж роботоподобные, хотя это бесплатно и если выбора не останется придется использовать их наверное. Это вопросы к RHVoice. Есть другие синтезаторы - openmary, festival |
Сообщ.
#291
,
|
|
|
Цитата nsh @ Распознаются предложения в соответствии со спецификацией. А что есть спецификация? |
Сообщ.
#292
,
|
|
|
Цитата therunman @ А что есть спецификация? JSGF грамматика |
Сообщ.
#293
,
|
|
|
Цитата nsh @ JSGF грамматика Спасибо, буду разбираться дальше |
Сообщ.
#294
,
|
|
|
Коллеги, добрый день.
Столкнулся с тем, что не очень понимаю, что делать вот в такой ситуации. Мы занимаемся распознаванием "живой" разговорной речи, в которой встречаются всякие "паразитные" звуки, издаваемые говорящими, типа "ээээ", "ммм", "аа". Понятно, что можно для этих "слов" сделать транскрипцию и работать с ними как с "настоящими" словами, но не ясно, есть ли в этом смысл? На сколько я понимаю, такие паразитные звуки должны, во-первых, портить языковую модель, а во-вторых — все равно скорее всего учесть все возможные звуки, издаваемые в таких случаях людьми, не реально. С другой стороны, можно все такие ситуации разметить как шум, но тогда не ясно, что будет делать модель в процессе распознавания, когда встретит звук, состоящий в общем-то из нормальных фонем. Сходная проблема с тем, что довольно часто в разговорной речи люди запинаются, или их перебивают, и получаются обрывки слов. Опять же понятно, что можно все имеющиеся в обучающих данных обрывки транскрибировать и работать с ними, как с обычными словами. Но проблема строго такая же — во-первых должна портиться языковая модель, а во-вторых — не загонять же теперь в словарь все возможные варианты префиксов для всех возможных слов. Пожалуйста подскажите, как решают такие проблемы? |
Сообщ.
#295
,
|
|
|
Цитата mikemvpi @ Пожалуйста подскажите, как решают такие проблемы? Недавно отвечал: https://sourceforge.net/p/cmusphinx/discuss...hread/167036a0/ Цитата На сколько я понимаю, такие паразитные звуки должны, во-первых, портить языковую модель, а во-вторых — все равно скорее всего учесть все возможные звуки, издаваемые в таких случаях людьми, не реально. Достаточно одну фонему GARBAGE натренировать для всех таких звуков. |
Сообщ.
#296
,
|
|
|
Спасибо за ответ и за ссылки в тикете. Теперь понятно, как гуглить по проблеме дальше.
|
Сообщ.
#297
,
|
|
|
Здравствуйте.
Прочитал ветку, но не нашел решения моей проблемы. Использую pocketsphinx для обработки непрерывного потока речи. Нужно распознавать несколько ключевых слов. Всё хорошо, но есть проблема. Для примера использую несколько слов: пицца, тест, чек. Всё распознаёт отлично, но проблема в том, что он распознаёт слово, если совпадает хотя бы 2 буквы. Например если сказать "ца", "ица", "пи" - то слово распознаётся как пицца "че", или "ек" - распознает чек Если в произносимой фразе есть это сочетание букв, то произойдет тоже самое. Например: "цапля" - распознает как пицца "громче" - распознает как чек Файл языковой модели: Скрытый текст \data\ ngram 1=5 ngram 2=3 ngram 3=0 \1-grams: -1.8467 </s> 0.0000 -99.0000 <s> -0.5796 -5.8947 пицца -0.1995 -5.2345 тест -0.2794 -4.8681 чек -0.3578 \2-grams: -0.7674 пицца </s> 0.0000 -0.7486 тест </s> 0.0000 -0.8450 чек </s> 0.0000 \3-grams: \end\ Файл словаря: Скрытый текст пицца pj i0 c c a0 чек ch e0 k тест tj e0 s t Причём проблема не зависит от того, произвожу я поиск через keyphrase, или использую jsgf грамматику. В чём может быть дело? |
Сообщ.
#298
,
|
|
|
Цитата В чём может быть дело? В документации указано что ключевое слово должно быть минимум 4 слога. Ещё написано, как настраивать пороги: http://cmusphinx.sourceforge.net/wiki/tuto...m#keyword_lists Цитата Файл языковой модели: Языковая модель при поиске ключевых слов не используется. |
Сообщ.
#299
,
|
|
|
Цитата В документации указано что ключевое слово должно быть минимум 4 слога. Ещё написано, как настраивать пороги: http://cmusphinx.sourceforge.net/wiki/tuto...m#keyword_lists Спасибо, упустил этот момент) Вместо коротких ключевых слов сделал ключевые фразы, всё заработало. Цитата Языковая модель при поиске ключевых слов не используется. Да, это знаю. Я просто пробовал тремя способами - с помощью языковой модели, грамматики и поиска ключевых слов, по отдельности. Есть еще одна проблема. Буду очень благодарен, если подскажете. В общем сделал поиск по ключевым фразам, вот 3 для примера: Цитата 1. "включи свет" 2. "выключи свет" 3. "сделай фото" С 1 и 3 проблем нет, а вот вторая ключевая фраза "выключи свет" очень часто определяется как "включи". Настройка порогов не повлияла на ситуацию. Решил сделать адаптацию звуковой модели по инструкции. http://cmusphinx.sourceforge.net/wiki/tutorialadapt Записал 5 звуковых файлов: "включи свет" "выключи свет" "сделай фото" "включи" "выключи" Файл транскрипции arctic5.transcription Цитата <s> включи свет </s> (arctic_0001) <s> выключи свет </s> (arctic_0002) <s> сделай фото </s> (arctic_0003) <s> включи </s> (arctic_0004) <s> выключи </s> (arctic_0005) Файл словаря arctic5.dic Цитата включи v k lj u0 ch i1 выключи v y1 k lj u0 ch i0 свет s vj e1 t сделай s dj e1 l a0 j фото f o1 t o0 При выполнении bw Цитата ./bw \ -hmmdir ru-ru \ -moddeffn ru-ru/mdef.txt \ -ts2cbfn .cont. \ -feat 1s_c_d_dd \ -cmn current \ -agc none \ -varnorm no \ -cmninit 40,3,-1 \ -dictfn arctic5.dic \ -ctlfn arctic5.fileids \ -lsnfn arctic5.transcription \ -accumdir . упорно игнорируются записи в которых присутствует слово "выключи" Цитата ERROR: "backward.c", line 421: Failed to align audio to trancript: final state of the search is not reached ERROR: "baum_welch.c", line 324: arctic_0002 ignored ERROR: "backward.c", line 421: Failed to align audio to trancript: final state of the search is not reached ERROR: "baum_welch.c", line 324: arctic_0005 ignored Как можно решить эту ситуацию? И ещё никак не получается сохранить дебаг-вывод утилиты bw в файл, может знаете как сделать? |
Сообщ.
#300
,
|
|
|
Цитата Как можно решить эту ситуацию? Файлы выложить надо сначала. Цитата И ещё никак не получается сохранить дебаг-вывод утилиты bw в файл, может знаете как сделать? http://stackoverflow.com/questions/7526971...tderr-to-a-file |