Cortana API是否可用于桌面应用程序?

sim*_*neL 13 c# desktop-application cortana windows-10

我想使用新的Cortana引擎在Windows 10上开发Windows应用程序.

不幸的是,据我所知,它似乎仅在Windows Phone 8.1项目中可用(例如,我没有找到从不同类型的Visual Studio项目访问Windows.Media.SpeechRecognition命名空间的方法).

此外,我无法找到一个好的API文档,只有一些非常简单的例子.

编辑:

根据Peter Torr的回答,我写了一些代码.我已经能够识别出一些词,但是当它试图识别一些像"你好"这样简单的词时,引擎似乎很挣扎,而Cortana成功识别它.

难道我做错了什么?

public static class SpeechSynthetizerManager
{
    private static readonly SpeechSynthesizer synth = new SpeechSynthesizer();
    private static readonly SpeechRecognitionEngine speechRecognitionEngine = new SpeechRecognitionEngine();

    public static event EventHandler<SpeechRecognizedEventArgs> SpeechRecognized
    {
        add { speechRecognitionEngine.SpeechRecognized += value; }
        remove { speechRecognitionEngine.SpeechRecognized -= value; }
    }

    public static event EventHandler<RecognizeCompletedEventArgs> RecognizeCompleted
    {
        add { speechRecognitionEngine.RecognizeCompleted += value; }
        remove { speechRecognitionEngine.RecognizeCompleted -= value; }
    }

    static SpeechSynthetizerManager()
    {
        synth.SelectVoiceByHints(VoiceGender.Female);

        speechRecognitionEngine.LoadGrammar(new DictationGrammar());

        speechRecognitionEngine.SetInputToDefaultAudioDevice();
    }

    public static void Speak(string message)
    {
        synth.Speak(message);
    }

    public static void Listen()
    {
        speechRecognitionEngine.RecognizeAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*SFT 21

严格来说,Cortana API是Windows.ApplicationModel.VoiceCommands命名空间中的API .这些应用程序不适用于Classic("桌面")应用程序,但可用于Windows 10上的通用Windows应用程序.Classic应用程序无法使用API​​的原因是因为它们依赖于后台任务和应用程序标识之类的概念.适用于经典应用.

Windows.Media.SpeechRecognition命名空间中的类型也不适用于Classic应用程序,但我不确定它的限制是什么.

注意:正如@Andrew Pilley所提到的,您可能能够在桌面应用程序中使用这些类型,但目前尚未明确支持.

如果您只想在.NET应用程序中进行语音识别,则可以使用System.Speech.Recognition命名空间,该命名空间使用相同的基础技术.


And*_*ley 5

因此,虽然Peter Torr对Cortana(Windows.ApplicationModel.VoiceCommands API)是正确的,但如果您愿意使用WinRT,可以在经典的C#应用​​程序中使用新的语音识别WinRT API(Windows.Media.SpeechRecognition).互操作库.

我已经详细说明了如何在这个堆栈溢出问题的答案中设置它,尽管提出这个问题的人在复制我本地工作时遇到了一些麻烦.