【问题标题】:Azure Cognitive Services - Speech to text: Microphone not detectedAzure 认知服务 - 语音转文本:未检测到麦克风
【发布时间】:2021-08-27 16:53:18
【问题描述】:

问题:为什么下面的代码没有检测到我的 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}");
    }
}

更新

如下所示,在我将两个代码行从 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);
}

【问题讨论】:

  • FromMic 应该等待,例如在异步加载的事件处理程序中:Loaded += async (s, e) => await FromMic(speechConfig);

标签: c# wpf .net-5 azure-cognitive-services azure-speech


【解决方案1】:

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

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

【讨论】:

  • 我上面帖子的第二个屏幕截图的下半部分显示了可以访问麦克风的应用程序列表。列出的应用程序是:Microsoft Edge, Speech Recognition, Speech Runtime Executable, Speech UX Configuration, MyWPFApp4Speech2TextTEST. 这些应用程序都没有任何其他选项(按钮、右键菜单等)可用于进一步配置。所以,我假设所有这些应用程序,包括我的(列表中的最后一个)都有权使用麦克风。可以通过单击 Windows 设置主页上的 Privacy 链接进入该设置。
  • 并且上面设置窗口Allow desktop apps to access you microphone部分下的Option按钮变成了on。我上面评论中列出的应用程序都列在此部分下。我还尝试以管理员身份运行VS2019,但仍然没有运气。
【解决方案2】:

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

    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

【讨论】:

  • 你不能在构造函数中使用await,因为它不能被声明为async。异步加载的事件处理程序可以工作。
  • @Clemens 阅读您的评论后,我刚刚在帖子中添加了 UPDATE 部分 - 以防您或其他人有任何建议。
猜你喜欢
  • 2020-09-12
  • 2015-11-26
  • 1970-01-01
  • 2011-09-05
  • 2013-09-18
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多