Windows 10语音识别

本文关键字:语音识别 Windows | 更新日期: 2023-09-27 18:07:06

我想用c#为windows 10创建一个WPF应用程序。现在,我在以前的windows版本中遇到的问题是,我是意大利人,不支持意大利语的语音识别。但现在有了cortana。那么,我如何在我的应用程序中使用cortana的语音识别引擎呢?如果我简单地使用new SpeechRecognitionEngine(new CultureInfo("it-IT")));,它会给我一个错误,因为没有简单的识别引擎,所以我必须使用cortana的一个。希望你能理解,很抱歉我的英语不好。谢谢你的回答。

Windows 10语音识别

为了使用windows 10中发布的新的语音识别WinRT API,你需要在你的桌面c#应用程序中添加对WinRT API的支持。这并不需要将应用程序转换为Windows Store应用程序,但是,至少在某些部分是这样。据我所知,新引擎还没有被反向移植到System.Speech中。语音识别引擎,它仍然使用传统识别器(我会在这里与语音团队联系,如果我发现更多关于这一点的信息,我会在这篇文章中跟进。)

根据这里和这里的指导,我能够创建一个经典的c# WPF应用程序,并实现以下代码:
private SpeechRecognizer reco;
    public MainWindow()
    {
        InitializeComponent();
        reco = new SpeechRecognizer();
        List<string> constraints = new List<string>();
        constraints.Add("Yes");
        constraints.Add("No");
        reco.Constraints.Add(new SpeechRecognitionListConstraint(constraints));
        IAsyncOperation<SpeechRecognitionCompilationResult> op = reco.CompileConstraintsAsync();
        op.Completed += HandleCompilationCompleted;
    }
    public void HandleCompilationCompleted(IAsyncOperation<SpeechRecognitionCompilationResult> opInfo, AsyncStatus status)
    {
        if(status == AsyncStatus.Completed)
        {
            System.Diagnostics.Debug.WriteLine("CompilationCompleted");
            var result = opInfo.GetResults();
            System.Diagnostics.Debug.WriteLine(result.Status.ToString());
        }
    }

为了编译,我添加了

  <PropertyGroup>
    <TargetPlatformVersion>10.0</TargetPlatformVersion>
  </PropertyGroup>

到.csproj文件中,并添加了Windows。媒体和Windows。Project -> Add References -> Universal Windows -> Core部分的基础,我还手动添加了对

的引用
C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETCore'v4.5.1'System.Runtime.WindowsRuntime.dll

C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETCore'v4.5.1'System.Runtime.InteropServices.WindowsRuntime.dll

通过添加引用的浏览部分。

你需要检查语音识别器。SupportedGrammarLanguages检索it- it Language对象,并将其传递给Recognizer构造函数(如果您的系统尚未默认为it- it)。(如果你安装的是意大利语版本的windows 10,这应该默认发生)

现在,我上面的代码片段只编译了一个超级简单的语法,它没有开始识别。您需要参考Windows.Media.SpeechRecognition API的其余部分,但它是沿着相同的路线。