Грамматика под диктовку на Sphinx-4

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

Например, имея следующую грамматику:

public <greet> = (Good morning | Hello);

Если я скажу «Привет», а затем Джоан (или любое другое имя), я намерен вернуть текст «Привет, Джоан».

Я видел тему Приложение для диктовки с использованием Sphinx4, но если я изменю настройки, всегда будет возвращаться <unk>. Это правильный шаг? Если да, то что я делаю неправильно?


person user3267555    schedule 03.02.2014    source источник
comment
Грамматика здесь бесполезна, можно просто использовать sphinx4 в режиме диктовки и разобрать декодированную строку. Пример простой настройки sphinx4 см. в руководстве cmusphinx.sourceforge.net/wiki/tutorialsphinx4.   -  person Nikolay Shmyrev    schedule 04.02.2014
comment
Я знаю, но мне нужно использовать грамматику для моей работы.   -  person user3267555    schedule 04.02.2014
comment
Вы не можете сделать это, потому что это не имеет смысла. Вы можете просто распознать с помощью языковой модели диктовки, это даст вам все, что вам нужно. Если вы хотите улучшить результаты, вы можете создать специальную языковую модель для своего домена, как предлагает учебник cmusphinx.   -  person Nikolay Shmyrev    schedule 04.02.2014
comment
Значит, нет возможности использовать грамматику, а затем под диктовку? Я спрашиваю об этом, потому что очень важно определять команды без использования синтаксического анализатора.   -  person user3267555    schedule 04.02.2014
comment
Нельзя смешивать грамматику и диктант в одном высказывании.   -  person Nikolay Shmyrev    schedule 04.02.2014


Ответы (1)


Чтобы получить вывод как Hello Joan, вы должны сохранить свою грамматику, например

public <greet> = (Good morning | Hello) (JOAN | JOHN | MIKE);

Так что он может вернуть тебя -Доброе утро, ДЖОАН -Доброе утро, ДЖОН -Доброе утро, МАЙК -Привет, ДЖОАН -Привет, ДЖОН -Привет, МАЙК

в этой грамматике, если вы также намеревались получить Just Good Morning или просто Hello

тогда ваша грамматика должна быть

public <greet> = (Good morning | Hello) (JOAN | JOHN | MIKE)*;
  • здесь указывает, что 0 или более вхождений JOAN/JOHN/MIKE ТАКИМ ОБРАЗОМ, он также может возвращать Hello JOHN MIKE или Hello или Good Morning и все возможные комбинации.
person NIket    schedule 17.02.2016
comment
public ‹greet› = (Доброе утро | Привет) (ДЖОАН | ДЖОН | МАЙК)+; плюс здесь позволит принять 1 или более экземпляров (JOAN | JOHN | MIKE) - person Mr x; 18.02.2016