我有一个小的示例应用程序来测试语音识别。它可以在某些机器上工作,但不能在其他机器上工作。在我首先安装必需软件包的开发环境中,所有这些软件包都能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可以很好地检测到它。
有什么想法吗?
谢谢你。
答案 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