Голосовой набор текста

198
18 октября 2017, 04:01

Использую Microsoft Speech. Реализовал простой пример:

static TextBlock l;
SpeechRecognitionEngine speechEngine;
public MainWindow()
{
    InitializeComponent();
    tb1 = l;
    System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ru-ru"); /* Язык распознования */
    speechEngine = new SpeechRecognitionEngine(culture);
    speechEngine.SetInputToDefaultAudioDevice(); /* Откуда распозновать речь */
    speechEngine.SpeechRecognized += SpeechEngine_SpeechRecognized; /* Событие завершения распознования текста */
    Choices choices = new Choices(); /* Выбор распознования (комманды) */
    choices.Add(new string[] { "один два", "два", "три" });
    GrammarBuilder grammarBuilder = new GrammarBuilder();
    grammarBuilder.Append(choices);
    Grammar grammar = new Grammar(grammarBuilder);
    speechEngine.LoadGrammar(grammar);
}
private void SpeechEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{ 
    MessageBox.Show(e.Result.Text);
}

И как понял, распознает только слова указанные в Choices. Можно ли просто чтобы он не распознавал как команды и просто вводил текст?

Answer 1

Похоже то что Вы хотите получить называется - Dictation Mode.

var culture = new CultureInfo("ru-ru");
var speechEngine = new SpeechRecognitionEngine(culture);
speechEngine.LoadGrammar(new DictationGrammar()); // Dictation mode.
speechEngine.SetInputToDefaultAudioDevice();
speechEngine.SpeechRecognized += (sender, args) =>
{
    // Ваш обработчик.
    Console.WriteLine(string.Join(", ", args.Result.Words));
};

Но по своему опыту добавлю: что такое решение не является панацеей и процент ошибок может быть достаточно высок.

  • Детали на MSDN
  • Пример с MSDN
READ ALSO
не открываются ссылки js

не открываются ссылки js

Здравствуйте ! Есть сайт на котором ссылки идут через написанный код js

247
Вызвать функцию JS по имени в переменной

Вызвать функцию JS по имени в переменной

Есть форма с дата-атрибутом "callback", он содержит название функции, которая должна запуститься после отработки AJAX

312