Azure语音识别未检测到麦克风SPXERR_MIC_NOT_FOUND

时间:2020-05-25 16:04:42

标签: azure azure-cognitive-services azure-speech

我有一个小的示例应用程序来测试语音识别。它可以在某些机器上工作,但不能在其他机器上工作。在我首先安装必需软件包的开发环境中,所有这些软件包都能100%正常工作。但是,我的队友无法在其中装有此代码的软件安装中使用它。我们有混合的环境,在某些情况下,我们将远程桌面与运行在远程计算机上的应用程序一起使用(因此通过RDP进行设备集成)。而且在本地没有RDP。在两种情况下均无法检测到麦克风。 Windows检测到麦克风。录音机应用程序正常工作并测试所有工作,因此我们知道麦克风已被Windows识别。

但是,语音SDK无法识别它。

我尝试了两种方法。首先,使用FromDefaultMicrophoneInput,但由于无法正常工作,我改为将其更改为FromMicrophoneInput,并指定了麦克风ID。

使用NAudio枚举麦克风,将检测到并列出麦克风:

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可以很好地检测到它。

有什么想法吗?

谢谢你。

1 个答案:

答案 0 :(得分:0)

您是否正在创建UWP应用程序?如果是这样,您将需要以其他方式检索音频设备ID:

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