【发布时间】: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