Использую 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. Можно ли просто чтобы он не распознавал как команды и просто вводил текст?
Похоже то что Вы хотите получить называется - 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));
};
Но по своему опыту добавлю: что такое решение не является панацеей и процент ошибок может быть достаточно высок.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники