Улучшение распознавания речи, C #

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

SpeechRecognizer_rec = new SpeechRecognizer();
DictationGrammar grammar = new DictationGrammar();

grammar.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(grammar_SpeechRecognized);
_rec.LoadGrammar(grammar);

Как я могу улучшить восприятие? Имеет ли это отношение к классу Граммера?


person Kaan    schedule 30.03.2011    source источник


Ответы (3)


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

person cloudraven    schedule 30.03.2011
comment
Можно ли программно обучить движок распознавания речи? - person NuWin; 30.08.2016
comment
Похоже, вы можете использовать SAPI. - person NuWin; 30.08.2016
comment
@NuWin, не могли бы вы указать, как можно программно обучить движок распознавания речи с помощью SAPI? - person IneedHelp; 20.09.2018

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

Этот упрощенный пример, т.е. сможет распознать только числа от одного до трех:

SpeechRecognizer rec = new SpeechRecognizer();
Choices c = new Choices();

c.Add("one");
c.Add("two");
c.Add("three");

var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
rec.LoadGrammar(g);
person BrokenGlass    schedule 30.03.2011
comment
но мне нужно узнать, что сказал пользователь. - person Kaan; 30.03.2011
comment
@Kaan: обычно для распознавания речи колл-центра модель ограничена определенными вариантами, т.е. я хочу свой торт или я тоже его ем, вам нужно будет создать собственную грамматику, чтобы разрешить различные комбинации. Если вы хотите придерживаться стандартной модели, вы не сможете повысить точность - если только вам не придется заново обучать модель на основе конкретного динамика (или акцента), что обычно непрактично или даже выполнимо. - person BrokenGlass; 30.03.2011

DictationGrammar дает какие-то странные результаты, я пробовал разные свойства SpeechRecognitionEngine, но безуспешно. Попробуйте: SpeechRecognitionEngine.BabbleTimeOut Но сначала прочтите об использовании, чтобы предотвратить ошибки.

person S Belz    schedule 05.10.2015