Azure Распознавание речи не обнаруживает микрофон SPXERR_MIC_NOT_FOUND - PullRequest
1 голос
/ 25 мая 2020

У меня есть небольшой образец приложения для проверки распознавания речи. Он работает на некоторых машинах, но не работает на других машинах. В моей среде разработки, где я впервые установил необходимые пакеты, все работало на 100% без проблем. Но мои товарищи по команде не могут заставить его работать с установкой нашего программного обеспечения, в котором есть этот код. У нас смешанные среды, в которых в некоторых случаях мы используем удаленный рабочий стол с приложением, работающим на удаленном компьютере (то есть при интеграции устройства через RDP). А также локально без RDP. В обоих случаях mi c не определяет. Windows обнаруживает mi c. Приложение для записи работает и все тестирует, поэтому мы знаем, что mi c распознается windows.

Однако речевой SDK его не распознает.

Пробовал 2 способа. Во-первых, с использованием FromDefaultMicrophoneInput, но с этим не работает, я изменил его на FromMicrophoneInput вместо этого и указал идентификатор микрофона.

Используя NAudio для перечисления микрофонов, mi c обнаруживается и отображается :

var enumerator = new MMDeviceEnumerator();
                string specifiedMicID = string.Empty;
                foreach (var endpoint in
                         enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active))
                {
                    if (endpoint.FriendlyName != this.MicName)
                        continue;
                    else
                    {
                        specifiedMicID = endpoint.ID;
                        break;
                    }
                }
                audioConfig = AudioConfig.FromMicrophoneInput(specifiedMicID);

Но при попытке создать экземпляр SpeechRecognizer с этой аудио-конфигурацией:

using (var recognizer = new SpeechRecognizer(config, audioConfig))
            {
...
}

Мы получаем SPXERR_MIC_NOT_FOUND. Даже подумал, что он явно там и работает во всех других случаях в windows и с Naudio, обнаруживающим это нормально.

Есть идеи, что здесь происходит?

Спасибо j.

1 Ответ

0 голосов
/ 13 июля 2020

Вы создаете приложение UWP? В таком случае вам потребуется получить идентификаторы аудиоустройств по-другому:

var devices = await DeviceInformation.FindAllAsync(DeviceClass.AudioCapture);

foreach (var device in devices)
{
    Console.WriteLine($"{device.Name}, {device.Id}\n");
}

Пожалуйста, обратитесь к документации здесь для получения дополнительной информации: https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-select-audio-input-devices#audio -device-ids-on-uwp

Если у вас все еще есть проблемы, нам нужно получить журналы SDK для дальнейшей отладки. Инструкции по включению ведения журнала можно найти здесь: https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-use-logging

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...