问题:为什么下面的代码在我的 Windows 10 上没有检测到麦克风?没有代码,麦克风工作正常,我可以通过单击来使用它Window key + H
。我可以用它说话,它可以把我的口语写到任何有针对性的文本编辑器中。所以,在下面的代码中,我想知道我可能遗漏了什么,我们该如何修复它?
详细信息:在我的WPF .NET 5
应用程序上,我正在关注Microsoft 的语音到文本教程入门Recognize from microphone
部分。他们正在使用控制台应用程序,我正在使用 WPF 应用程序。如此处所述,我创建了一个 Azure 语音服务资源,并在下面的代码中输入了订阅密钥和区域。
当我运行应用程序时,如下图所示,可以验证屏幕上没有麦克风。通常,当它打开时,它会显示在屏幕顶部。但在极少数情况下,您会在窗口的右下角看到它的图标 - 通过单击它,您可以将其置于顶部并开始对其讲话。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
SpeechConfig speechConfig = SpeechConfig.FromSubscription("IEnteredMyAzureCognitiveServiceSubscriptionKeyHere", "eastus");
_ = FromMic(speechConfig);
}
async static Task FromMic(SpeechConfig speechConfig)
{
using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);
MessageBox.Show("Speak into your microphone.");
var result = await recognizer.RecognizeOnceAsync();
System.Diagnostics.Debug.WriteLine($"RECOGNIZED: Text={result.Text}");
}
}
更新
在我将两个代码行从 Constructor 移动到 Button_Click(...) 事件后,如下所示,然后单击按钮后,我确实看到了 Windows 任务栏右下角的麦克风图标。但是,当我单击该图标时,它并没有打开麦克风,而是打开了以下设置窗口。但这并没有帮助,因为我需要打开麦克风才能让用户开始与它交谈:
private async void btnRecogSpeech_Click(object sender, RoutedEventArgs e)
{
SpeechConfig speechConfig = SpeechConfig.FromSubscription("My subscription key here", "eastus");
await FromMic(speechConfig);
}