2014-09-08 3 views
0

У меня возникли проблемы с построением грамматики с использованием Microsoft.Speech для создания грамматики в португальском языке.Построение хорошей грамматики с Microsoft.Speech

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

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

Есть ли способ построить грамматику письма на португальском языке с помощью Microsoft.Speech?

Некоторые образцы:

private static readonly Dictionary<string, string> _lettersGrammar = new Dictionary<string, string>() 
    {    
     { "a",  "a" }, 
     { "bê",  "b" }, 
     { "cê",  "c" }, 
     { "dê",  "d" }, 
     { "é",  "e" }, 
     { "efe",  "f" }, 
     { "gê",  "g" }, 
     { "agá",  "h" }, 
     { "i",  "i" }, 
     { "jota", "j" }, 
     { "cá",  "k" }, 
     { "ele",  "l" }, 
     { "eme",  "m" }, 
     { "ene",  "n" }, 
     { "ó",  "o" }, 
     { "pê",  "p" }, 
     { "quê",  "q" }, 
     { "erre", "r" }, 
     { "esse", "s" }, 
     { "tê",  "t" }, 
     { "u",  "u" }, 
     { "vê",  "v" }, 
     { "dáblio", "w" }, 
     { "xis",  "x" }, 
     { "ípsilon", "y" }, 
     { "zê",  "x" } 
    }; 

recognizer = new SpeechRecognitionEngine (new CultureInfo("pt-BR")); 
recognizer.LoadGrammar (new Grammar (new GrammarBuilder (new Choices (_lettersGrammar.Keys.ToArray()))) { Name = "Letters_Grammar" }); 

recognizer.SpeechRecognitionRejected += SpeechRecognitionRejected; 
recognizer.SpeechRecognized   += SpeechRecognized; 
recognizer.RecognizeCompleted  += RecognizeCompletedHandler; 

Любые предложения?

Большое спасибо, ребята!

+0

Возможно, это не проблема грамматики. Вероятно, ваши файлы имеют низкое качество (например, вход 8chz-телефонии). –

+0

Это может быть так ... но звук настолько ясен ... и в грамматике всего несколько слов ... это странно. Спасибо за ваш ответ @NikolayShmyrev – Crasher

ответ

2

Одна вещь, которую я заметил, это то, что вы не устанавливаете свойство CultureGrammarBuilder. Объект CultureGrammarBuilder должен соответствовать значению SpeechRecognitionEngine, иначе вы не получите никаких уведомлений.

Механизм распознавания Microsoft.Speech не поддерживает диктовку, так что это не вариант.

Грамматика, которую вы поставили, соответствует письмо. Если вы хотите повторов, вам нужно добавить промежуточный repeat GrammarBuilder.

+0

Wow thanks Erick =) Удивительный ответ! Просто чтобы увидеть, понял ли я ... если в моем звуке должно быть 10 букв (и только 10), я должен инициализировать мою грамматику, как это? новый GrammarBuilder (выбор, 10, 10) {Culture = new CultureInfo ("pt-BR")} – Crasher

+0

Да, это потребует * ровно * 10 букв. 8 или 9 букв не совпадают. –

+0

Это странно ... Я запустил образец с 10 буквами ... и результат был в порядке ... тогда я включил этот параметр 10,10 и вернул 0 совпадений .. whaaaaaaaaaat? oO – Crasher

Смежные вопросы