Здравствуйте Николай,
Хотел спросить про pocketsphinx_continuous - например мне нужно, чтобы
программа проверяла входящий звук на "da" и "net" - я сделал словарь из двух
слов да и нет, сделал языковую модель из такого текста:
<s>da</s><s>net</s>
распознается замечательно и "да" и "нет"
но вот такой вопрос - когда я говорю другие слова, которые на да и нет совсем
не похожи - например "кукушка" - он пишет:
как сделать так чтобы он не распознавал слова "да" и "нет" в словах, которые
не являются такими?
насколько я понял, записанный звук разбивается на кусочки, адекватно
акустической модели, тоесть у меня модель построена так, что он ожидает
услышать подряд только "да" "нет", а разбивая каждый кусочек он каждый кусочек
распознает - с определенной вероятностью.. но например здесь второе слово
"нет" распозналось с вероятностью 1.0000 - и как тогда определить, сказал
человек "нет"? поидее по вероятности, но тут единица - а человек сказал
"кукушка"..
прошу подсказать в каком направлении двигаться..
p.s. документации хорошей с примерами не нашел - только это http://www.digipe
dia.pl/man/doc/view/pocketsphinx_continuous.1/ но тут не понятно что именно имеется в
виду, но я увидел -fsg
state grammar и -fsgctlfn
finite state grammar control file - это случайно не .gram файлы как в sphinx4?
просто вроде бы это могло быть решением, он бы ожидал услышать только одно
слово <da> | <net> - какое то одно из них.</net></da>
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
мм, я добился некоторых успехов:
использовал параметр -jsgf my.gram - грамматику ( da | net ) - которая
существенно улучшает распознаваемость - теперь если говорю слова, которые не
похожы и не содержат в себе фонемы слов да и нет - они просто не распознаются,
как и надо) но все равно остаются слова, которые включают в себя слова нет и
да - при этом распознанные нет и да часто с вероятностью 1.0000 (помидор -
"да" 1.00000 pprob) :) но спасибо большое, я попробую воспользоваться советом
и пройдя по ссылке решил создать небольшую акустическую модель для да и нет, и
отпишусь что получится
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
хотя нет..он побольше ошибается между да и нет, хотя распознает null когда
чтото звучит, не содержащее в себе звуки "aa" и "je" (да dd aa, нет nn je t) -
как и нужно;
но к примеру "кукушка" и "кукуруза" распознает как "да" - со 100%
уверенностью.. можно как нибудь понижать его уверенность, если он вытаскивает
фонемы, принадлежащие "да" и "нет" прямо из середины сказанного - просто
поидее 100% уверенность в "да" в реальности - это ведь когда между паузами
прозвучало dd aa (по моему словарю это "да"), а он видимо уверенность как то
по другому считает? моя грамматика .jsgf
#JSGF V1.0;grammarrbot;
public<greet> = <pass1> | <pass2>;
<pass1> = ( da );
<pass2> = ( net );
правильно ведь, что из записанного отрывка он берет кусочек между паузами,
переводит в фонемы (которые он знает по акустической модели), а дальше в
строке полученных фонем ищет конкретно строки "dd aa" или
"nn je t", и потом записывает какуюто вероятность (например услышанное ae aa
tt - это "да" с 50% уверенностью)?
и если можно, подскажите как выводить результат всей записанной дорожки от
одной паузы до конечной в фонемах?
извиняюсь за много вопросов.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
но к примеру "кукушка" и "кукуруза" распознает как "да" - со 100%
уверенностью.. можно как нибудь понижать его уверенность, если он вытаскивает
фонемы, принадлежащие "да" и "нет" прямо из середины сказанного - просто
поидее 100% уверенность в "да" в реальности - это ведь когда между паузами
прозвучало dd aa (по моему словарю это "да"), а он видимо уверенность как то
по другому считает? моя грамматика .jsgf
Возможно, текст FAQ нужно прочитать внимательнее. Мне кажется, Вы его не
поняли.
и если можно, подскажите как выводить результат всей записанной дорожки от
одной паузы до конечной в фонемах?
Это невозможно
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Здравствуйте Николай,
Хотел спросить про pocketsphinx_continuous - например мне нужно, чтобы
программа проверяла входящий звук на "da" и "net" - я сделал словарь из двух
слов да и нет, сделал языковую модель из такого текста:
распознается замечательно и "да" и "нет"
но вот такой вопрос - когда я говорю другие слова, которые на да и нет совсем
не похожи - например "кукушка" - он пишет:
как сделать так чтобы он не распознавал слова "да" и "нет" в словах, которые
не являются такими?
насколько я понял, записанный звук разбивается на кусочки, адекватно
акустической модели, тоесть у меня модель построена так, что он ожидает
услышать подряд только "да" "нет", а разбивая каждый кусочек он каждый кусочек
распознает - с определенной вероятностью.. но например здесь второе слово
"нет" распозналось с вероятностью 1.0000 - и как тогда определить, сказал
человек "нет"? поидее по вероятности, но тут единица - а человек сказал
"кукушка"..
прошу подсказать в каком направлении двигаться..
p.s. документации хорошей с примерами не нашел - только это http://www.digipe
dia.pl/man/doc/view/pocketsphinx_continuous.1/ но тут не понятно что именно имеется в
виду, но я увидел -fsg
state grammar и -fsgctlfn
finite state grammar control file - это случайно не .gram файлы как в sphinx4?
просто вроде бы это могло быть решением, он бы ожидал услышать только одно
слово <da> | <net> - какое то одно из них.</net></da>
*акустическую модель использую msu_ru_nsh.cd_cont_1000_8gau_16000 с voxforge.org
запускаю так:
Такая возможность ещё не реализована:
http://cmusphinx.sourceforge.net/wiki/faq#qcan_pocketsphinx_reject_out-of-
grammar_words_and_noises
мм, я добился некоторых успехов:
использовал параметр -jsgf my.gram - грамматику ( da | net ) - которая
существенно улучшает распознаваемость - теперь если говорю слова, которые не
похожы и не содержат в себе фонемы слов да и нет - они просто не распознаются,
как и надо) но все равно остаются слова, которые включают в себя слова нет и
да - при этом распознанные нет и да часто с вероятностью 1.0000 (помидор -
"да" 1.00000 pprob) :) но спасибо большое, я попробую воспользоваться советом
и пройдя по ссылке решил создать небольшую акустическую модель для да и нет, и
отпишусь что получится
вроде создание акустической модели это мощный шаг к улучшению распознавания..
хотя нет..он побольше ошибается между да и нет, хотя распознает null когда
чтото звучит, не содержащее в себе звуки "aa" и "je" (да dd aa, нет nn je t) -
как и нужно;
но к примеру "кукушка" и "кукуруза" распознает как "да" - со 100%
уверенностью.. можно как нибудь понижать его уверенность, если он вытаскивает
фонемы, принадлежащие "да" и "нет" прямо из середины сказанного - просто
поидее 100% уверенность в "да" в реальности - это ведь когда между паузами
прозвучало dd aa (по моему словарю это "да"), а он видимо уверенность как то
по другому считает? моя грамматика .jsgf
правильно ведь, что из записанного отрывка он берет кусочек между паузами,
переводит в фонемы (которые он знает по акустической модели), а дальше в
строке полученных фонем ищет конкретно строки "dd aa" или
"nn je t", и потом записывает какуюто вероятность (например услышанное ae aa
tt - это "да" с 50% уверенностью)?
и если можно, подскажите как выводить результат всей записанной дорожки от
одной паузы до конечной в фонемах?
извиняюсь за много вопросов.
Возможно, текст FAQ нужно прочитать внимательнее. Мне кажется, Вы его не
поняли.
Это невозможно