it-swarm.com.de

Gibt es Cortana-APIs für Desktopanwendungen?

Ich möchte eine Windows-Anwendung unter Windows 10 mit der neuen Cortana-Engine entwickeln.

Soweit ich weiß, scheint es leider nur für Windows Phone 8.1-Projekte verfügbar zu sein (z. B. habe ich keinen Zugriff auf den Windows.Media.SpeechRecognition-Namespace aus einem anderen Visual Studio-Projekttyp gefunden).

Ich konnte auch keine gute API-Dokumentation finden, nur einige sehr einfache Beispiele.

Bearbeiten:

Basierend auf der Antwort von Peter Torr habe ich etwas Code geschrieben. Ich konnte ein paar Wörter erkennen, aber die Engine scheint zu kämpfen, als sie versuchte, einige einfache Wörter wie "Hallo" zu erkennen, während Cortana es erfolgreich erkannt hatte.

Mache ich etwas falsch?

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();
    }
}
13
simoneL

Streng genommen sind die Cortana-APIs im Namespace Windows.ApplicationModel.VoiceCommands . Diese stehen nicht für klassische ("Desktop") - Apps zur Verfügung, jedoch für Universal Windows-Apps unter Windows 10. Der Grund, warum klassische Apps die APIs nicht verwenden können, liegt darin, dass sie auf Konzepte wie Hintergrundaufgaben und App-Identität angewiesen sind, gelten nicht für klassische Apps.

Die Typen im Namespace Windows.Media.SpeechRecognition sind für Classic-Apps ebenfalls nicht verfügbar, aber ich bin mir nicht sicher, was die Einschränkung ist.

Hinweis: Wie @Andrew Pilley erwähnt wird, können Sie diese Typen möglicherweise in einer Desktop-App verwenden, dies wird jedoch zurzeit nicht explizit unterstützt.

Wenn Sie nur Spracherkennung in einer .NET-App wünschen, können Sie den Namespace System.Speech.Recognition verwenden, der dieselbe zugrunde liegende Technologie verwendet. 

20

Während Peter Torr recht mit Cortana (der Windows.ApplicationModel.VoiceCommands-API) hat, können die neuen WinRT-APIs für die Spracherkennung (Windows.Media.SpeechRecognition) in einer klassischen C # -Anwendung verwendet werden, wenn Sie die WinRT verwenden möchten Interop-Bibliotheken.

Ich habe detailliert beschrieben, wie man das in diese Antwort auf eine Stack-Overflow-Frage einrichtet , obwohl die Person, die diese Frage gestellt hat, Schwierigkeiten hat, das zu replizieren, was ich vor Ort gefunden habe.

5
Andrew Pilley

Sie können Cortanas "WIN + C" -Ereignis aktivieren, indem Sie diesen "uri" wie einen neuen Process () aufrufen, auch wenn die Einstellung deaktiviert ist.

ms-Cortana: // StartMode = Reactive & ListeningMode = True & QuerySource = VoiceShortcutKey & Positioner = Desktop & SpeechTextInputHeight = 40 & ColorPrevalEseabled = true & PersonaOnlySupported = true & TaskbarOrientation = 3 & SearchBoxInTaskbar = false

0
JeremyTTU