0

问题:为什么下面的代码在我的 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);
}

在此处输入图像描述

4

2 回答 2

0

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

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

于 2021-06-10T18:58:55.020 回答
-1

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

    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

于 2021-06-10T17:23:36.197 回答