Улучшение распознавания речи, C # - PullRequest
6 голосов
/ 30 марта 2011

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 30 марта 2011

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

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

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);
6 голосов
/ 30 марта 2011

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

3 голосов
/ 05 октября 2015

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

...