我注意到在Windows 10和11中,您可以按Win+H启动“语音输入”功能。您对着麦克风说话,小部件会将击键发送到任何具有焦点的窗口。识别效果出人意料地好,并且可以在多种语言(例如意大利语)和本地(不需要互联网连接,我通过断开 PC 来尝试)下进行。
我想知道是否有办法访问相同的语音识别引擎。
互联网搜索表明,微软为 Windows 开发人员提供了许多不同的引擎。
.net
应用程序中,可以在 System.Speech.Recognition
命名空间下找到该应用程序。但这在意大利语中不起作用1Microsoft.Speech.Recognition
) 与 System.Speech.Recognition
类似,但适用于服务器应用程序。我这里没有安装2Windows.Media.SpeechRecognition
。 (这仅适用于在线)Microsoft.CognitiveServices.Speech
),它看起来像是 Azure 认知服务(在线)的 REST API 的包装器。问题是:什么是“语音输入”,我可以访问它吗?
意大利语不起作用,通过此代码验证:
foreach (RecognizerInfo info in SpeechRecognitionEngine.InstalledRecognizers())
{
Debug.WriteLine(info.Culture);
}
只给我
en-US
,尽管安装了其他语言包并且“语音输入”功能在同一台机器和用户上可以使用意大利语。
我没有安装语音服务器运行时,通过缺少
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server\
注册表项进行验证。所以我不认为 Windows 小部件正在使用这个。
感谢@SimonMourier 的评论。
语音输入功能似乎采用了一种混合方法,即在可用时使用在线服务,在无法访问互联网时使用离线模式。
使用的 API 是“Azure 认知服务”中的 API: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/how-to-recognize-speech
这通常发生在网上,但他们也可以提供在本地运行的“嵌入式”模型: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/embedded-speech?tabs=windows-target%2Cjre&pivots=programming-language-csharp
但是,要访问此模型,您的用例需要获得 Azure 的批准(因为公开访问意味着会损失一些甜蜜的钱)。您可以填写此表格来请求访问权限: https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUMFNKUU9RTU1UTkdUMzVYUkxDOFZRMVFGSyQlQCN0PWcu
然后在 10 个工作日内被拒绝。
当某件事好得令人难以置信时...