Windows 10语音识别

时间:2015-08-09 08:18:25

标签: c# wpf speech-recognition windows-10

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

1 个答案:

答案 0 :(得分:15)

为了使用Windows 10中发布的新SpeechRecognition WinRT API,您需要在桌面C#应用程序中添加对WinRT API的支持。这不需要将应用程序转换为Windows应用商店应用,但至少对于某些部分而言。据我所知,新的引擎还没有被移植到System.Speech.SpeechRecognitionEngine,它仍然使用传统的识别器(我会在这里与语音团队核实,如果我发现更多,请在这篇文章中跟进)在那一点上。)

根据herehere的指导,我能够创建一个经典的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,并从Project中添加了Windows.Media和Windows.Foundation - &gt;添加参考文献 - &gt;通用Windows - &gt;核心部分,我也手动添加了对

的引用
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

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

如果您的系统没有默认,那么您需要检查SpeechRecognizer.SupportedGrammarLanguages以检索it-IT语言对象以将其传递给Recognizer构造函数。 (如果您安装了意大利语版本的Windows 10,则默认情况下会发生这种情况)

现在,我上面的代码片段只编译一个超级简单的语法,它不会开始识别。您需要查阅Windows.Media.SpeechRecognition API的其余部分,但它也是相同的。