Функция распознавания речи Microsoft setInputToDefaultAudioDevice выдает исключение

Привет, ребята, у меня проблемы с распознаванием речи MS.

мой код прост.

static void init()
    {
        string enUsEngine = string.Empty;


        foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers())
        {
            Console.WriteLine(ri.Culture);
            if (ri.Culture.Name.Equals("en-US") == true)
            {
                enUsEngine = ri.Id;
            }
        }

        SpeechRecognitionEngine recogEngine = new SpeechRecognitionEngine(enUsEngine);

        Grammar grammar = new Grammar("grammar.xml");
        recogEngine.LoadGrammar(grammar);

        recogEngine.SpeechRecognized += recogEngine_SpeechRecognized;
        recogEngine.RecognizeCompleted += recogEngine_RecognizeCompleted;

        recogEngine.SetInputToDefaultAudioDevice();

        recogEngine.RecognizeAsync(RecognizeMode.Multiple);

    }

а затем бросает InvalidOperationException в вызов

(System.InvalidOperationException: не удается найти запрошенный элемент данных, например ключ данных или значение.)

SetInputToDefaultAudioDevice(); метод

Я скачал MSSpeech sdk и установил его (Microsoft.speech.dll). также скачал языковые пакеты. (en-us, ко-кр)

а также установлен и включен драйвер «Мой микрофон» в панели управления.

пожалуйста, помогите мне.

Моя операционная система — Windows 10. Это проблема с использованием API распознавания речи?


person LaLaAsDev    schedule 06.10.2015    source источник
comment
Вы разобрались с этим?   -  person Jakob Lithner    schedule 09.07.2016
comment
@JakobLithner Я не знаю, что не так, но через несколько дней этот код работает нормально. это что-то проводное. я ничего не менял.   -  person LaLaAsDev    schedule 09.07.2016


Ответы (1)


Скорее всего, вы используете Microsoft.Speech.Recognition, и вам действительно следует использовать System.Speech.Recognition.

Измените это:

using Microsoft.Speech.Recognition;

к этому:

using System.Speech.Recognition;

Вы можете оставить остальную часть кода как есть.

Что? Вот несколько ответов: Что такое разница между System.Speech.Recognition и Microsoft.Speech.Recognition?

Короче говоря, Microsoft.Speech.Recognition предназначен для серверов и работает со звуком низкого качества, как в центрах обработки вызовов (используется для автоматизации и т. д.), это означает, что он не совместим со всеми устройствами ввода звука.

Напротив, System.Speech.Recognition предназначен для настольных приложений и полностью поддерживает записывающие устройства по умолчанию, установленные в Windows.

person Artur Kędzior    schedule 21.10.2016