1

Я использую платформу Microsoft Speech Platform для распознавания речи при выводе ее на экран. Но у меня проблема: например, у меня есть грамматика (конструкции GrammarBuilder и Choices - «красный», «зеленый», «черный»)Microsoft Speech Platform: распознавание повторений слов

Когда я говорю - «красный зеленый черный» - я могу получить только " красный ", может быть," красный зеленый ", но не" красный зеленый черный ".

Некоторый код:

Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU"); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU"); 

// Create a new SpeechRecognitionEngine instance. 
_sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("ru-RU")); 

_sre.SpeechHypothesized += _sre_SpeechHypothesized; 
_sre.SpeechDetected += _sre_SpeechDetected; 
//_sre.SetInputToWaveFile(@"c:\Test\Wavs\Wavs-converted\file.wav"); 
_sre.SetInputToDefaultAudioDevice(); 

public void LoadGrammarIntoEngine(IEnumerable<String> textColl) 
{ 
    Choices choices = new Choices(); 
    GrammarBuilder gb = new GrammarBuilder(); 
    gb.Culture = new CultureInfo("ru-RU"); 


    if (choices != null && textColl != null) 
    { 
     choices.Add(textColl.ToArray()); 
     gb.Append(choices); 
    } 

} 
public void Recognize() { 
    if (_sre != null && _sre.Grammars.Count != 0) {     
     _sre.RecognizeAsync(RecognizeMode.Multiple);      
    } 
} 

Итак, как решить эту проблему? Должен ли я делать грамматику SGRS с правилами? Файл грамматики TXT файл со словами вроде:

Dictionary.txt

green 
black 
yellow 
red 
some other words 
+0

Добавить в словарь также 'красный зеленый black'. –

+0

Это плохое решение: я думаю, что пользователь может сказать: я люблю зеленый \ черный, но я установить словарь так: Я как зеленый черный и т.д. – user2545071

ответ

1

Вы можете использовать Append method with repeat:

gb.Append(choices, 1, 10); 
+0

спасибо или ответ. У меня проблема, когда у меня есть словарь из 30 + слов и набор gb.Append (выбор, 1,100); Мои фразы обычно имеют 20 ~ 40 слов, но если у аудио есть 20 слов, и я устанавливаю что-то большее, чем 20, он ничего не узнает. Ты знаешь почему? Я выполняю синхронизацию. –

+0

Вы можете добавить свободный контур –

+0

Николай, можете ли вы привести пример о том, как это сделать? –