Azure 认知服务 - 语音转文本:未检测到麦克风

问题描述

问题:为什么以下代码在我的 Windows 10 上没有检测到麦克风?没有代码,麦克风工作正常,我可以通过点击 Window key + H 来使用它。我可以谈论它,它可以将我的演讲内容写入任何专注的文本编辑器。所以,在下面的代码中,我想知道我可能遗漏了什么以及我们如何修复它?

详细信息:在我的 WPF .NET 5 应用中,我正在关注 Microsoft Get started with speech-to-text 教程的 Recognize from microphone 部分。他们使用的是控制台应用程序,我使用的是 WPF 应用程序。如 here 所述,我创建了一个 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}");
    }
}

enter image description here

更新

将两行代码从 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);
}

enter image description here

解决方法

您需要在设置应用中向下滚动并授予您的应用打开麦克风的权限。

完成此操作后,您的应用将能够使用麦克风,并且您将能够取得进展。

,

在给定的代码示例中,您没有为任务执行 await,这可能是您的程序刚刚退出而您没有看到程序的转录输出的原因。请尝试以下操作:

    public MainWindow()
    {
        InitializeComponent();
        SpeechConfig speechConfig = SpeechConfig.FromSubscription("IEnteredMyAzureCognitiveServiceSubscriptionKeyHere","eastus");
        await FromMic(speechConfig);
    }

另请在此处查看 Azure 语音 SDK 快速入门:https://github.com/Azure-Samples/cognitive-services-speech-sdk/tree/master/quickstart/csharp