Ошибка .NET 6.0 NullReferenceException в Speech Recognition Engine, которой нет в .NET 4.8
Пишу простейшее приложение с распознаванием речи, один и тот же код работает на .NET 4.8, но не работает на .NET 6.0. В строке SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine(cultureInfo);
возникает ошибка System.NullReferenceException. В .NET 4.8 в этой строке ошибки не возникает. Что необходимо поменять, чтобы код заработал на .NET 6.0?
using Microsoft.Speech.Recognition;
using System.Globalization;
namespace SpeechRecognition
{
public partial class Form1 : Form
{
static Label label;
public Form1()
{
InitializeComponent();
}
static void _SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Confidence > 0.82) label.Text = e.Result.Text;
}
private void Form1_Shown(object sender, EventArgs e)
{
label = label1;
CultureInfo cultureInfo = new CultureInfo("ru-ru");
SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine(cultureInfo);
speechRecognitionEngine.SetInputToDefaultAudioDevice();
speechRecognitionEngine.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(_SpeechRecognized);
Choices numbers = new Choices();
numbers.Add(new string[] { "один", "два", "три", "четыре", "пять" });
GrammarBuilder grammarBuilder = new GrammarBuilder();
grammarBuilder.Append(numbers);
Grammar grammar = new Grammar(grammarBuilder);
speechRecognitionEngine.LoadGrammar(grammar);
speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
}
}
}
Источник: Stack Overflow на русском