Ошибка .NET 6.0 NullReferenceException в Speech Recognition Engine, которой нет в .NET 4.8

Рейтинг: 0Ответов: 0Опубликовано: 29.01.2023

Пишу простейшее приложение с распознаванием речи, один и тот же код работает на .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);
        }
    }
}

Ответы

Ответов пока нет.