Здравствуйте Николай,
хотел бы задать такой вопрос - есть у меня грамматика .jsgf, в которой есть
список команд управления "вперёд/назад/вправо/влево". Мне бы хотелось знать,
можно ли както показывать, какая вероятность того, что распознанное слово
соответствует фонемам, которые отображают записанный кусочек фразы? тоесть
например, слово "влево" в словаре в виде фонем "v ll ee v aa", а на практике
поидее фонемы выглядят как "b aa ll ae ee aa" или "v aa ee v a" - это ведь не
точная транскрипция слова "влева" - точная v ll ee v aa и равняется 100%, а
остальные - как узнать сколько процентов уверенности? это возможно?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Спасибо, Николай. Буду тогда сам писать такой алгоритм.
Кстати, выводить результат в виде фонем можно - основываясь на теме "keyword
spotting with pocketsphinx."
Если привести такую грамматику:
#JSGF V1.0;grammarrbot;
public<command> = <garbage_loop>;
<garbage_loop> = ( hh | f | gg | e | kk | pp | bb | zz | sch | mm | y | zh | u | z | b | uu | ch | ff | yy | g | ur | c | k | ss | rr | ll | ae | m | nn |t | d | vv | i | j | ee | dd | n | oo | l | v | ay | sh | aa | r | p | s | a | h | ii | tt )+;
где hh, f, gg и т.п. - отмечены в словаре таким образом:
hh hh
f f
gg gg
e e
kk kk
pp pp
если запустить pocketsphinx_continuous.exe с параметрами
-jsgf commands.gram -dict dict.dic -bestpath no -nbest no
(bestpath и nbest отключаем потому что так быстрее и все равно эффективно) -
запускаем и теперь любая фраза вообще будет показывать в виде фонем.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
А также можно игнорировать мусорные слова - если сделать такую грамматику:
public <command> = ( <garbage_loop> <greet> <garbage_loop> ) | <garbage_loop>;
public <greet> = ( вперёд | назад | вправо | влево );
<garbage_loop> = ( hh | f | gg | e | kk | pp | bb | zz | sch | mm | y | zh | u | z | b | uu | ch | ff | yy | g | ur | c | k | ss | rr | ll | ae | m | nn | t | d | vv | i | j | ee | dd | n | oo | l | v | ay | sh | aa | r | p | s | a | h | ii | tt )+;
таким образом, он будет довольно хорошо распознавать команды - например
"вперёд" - "f вперёд tt" а если сказать чтото непохожее - он просто напишет
результат в фонемах. Но остается небольшая проблема - он может и команды
распознать плохо - тоесть говорю "вперёд" а он "v ae ee rr oo tt" - поэтому
если написать скриптик который будет обрабатывать фонемный результат и писать
сколько процентов - то можно улучшить распознавание еще лучше.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Здравствуйте Николай,
хотел бы задать такой вопрос - есть у меня грамматика .jsgf, в которой есть
список команд управления "вперёд/назад/вправо/влево". Мне бы хотелось знать,
можно ли както показывать, какая вероятность того, что распознанное слово
соответствует фонемам, которые отображают записанный кусочек фразы? тоесть
например, слово "влево" в словаре в виде фонем "v ll ee v aa", а на практике
поидее фонемы выглядят как "b aa ll ae ee aa" или "v aa ee v a" - это ведь не
точная транскрипция слова "влева" - точная v ll ee v aa и равняется 100%, а
остальные - как узнать сколько процентов уверенности? это возможно?
Эта функция не реализована
Спасибо, Николай. Буду тогда сам писать такой алгоритм.
Кстати, выводить результат в виде фонем можно - основываясь на теме "keyword
spotting with pocketsphinx."
Если привести такую грамматику:
где hh, f, gg и т.п. - отмечены в словаре таким образом:
если запустить pocketsphinx_continuous.exe с параметрами
(bestpath и nbest отключаем потому что так быстрее и все равно эффективно) -
запускаем и теперь любая фраза вообще будет показывать в виде фонем.
"хороший способ" - e n d r oo zh ii s t b oo s oo p m f
А также можно игнорировать мусорные слова - если сделать такую грамматику:
таким образом, он будет довольно хорошо распознавать команды - например
"вперёд" - "f вперёд tt" а если сказать чтото непохожее - он просто напишет
результат в фонемах. Но остается небольшая проблема - он может и команды
распознать плохо - тоесть говорю "вперёд" а он "v ae ee rr oo tt" - поэтому
если написать скриптик который будет обрабатывать фонемный результат и писать
сколько процентов - то можно улучшить распознавание еще лучше.
Можно и так