1

我有一个小示例应用程序来测试语音识别。它适用于某些机器,但不适用于其他机器。在我第一次安装必要的软件包的开发环境中,一切都 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 中的所有其他情况下都可以正常工作,并且 Nadio 可以正常检测到它。

有什么想法吗?

谢谢你j。

4

1 回答 1

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

于 2020-07-13T19:53:36.503 回答