问题描述
问题:为什么以下代码在我的 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);
}
解决方法
您需要在设置应用中向下滚动并授予您的应用打开麦克风的权限。
完成此操作后,您的应用将能够使用麦克风,并且您将能够取得进展。
,在给定的代码示例中,您没有为任务执行 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