web-dev-qa-db-fra.com

Les API Cortana sont-elles disponibles pour les applications de bureau?

Je souhaite développer une application Windows sous Windows 10 à l'aide du nouveau moteur Cortana.

Malheureusement, à ma connaissance, il semble être disponible uniquement sur le projet Windows Phone 8.1 (par exemple, je n'ai pas trouvé le moyen d'accéder à l'espace de noms Windows.Media.SpeechRecognition à partir d'un type de projet Visual Studio différent).

De plus, je n'ai pas pu trouver une bonne documentation sur l'API, seulement quelques exemples très simples.

Modifier:

Basé sur la réponse de Peter Torr, j'ai écrit du code. J'ai pu reconnaître un mot, mais le moteur semble avoir du mal à reconnaître des mots simples comme «Bonjour», alors que Cortana l'a reconnu avec succès.

Est-ce que je fais quelque chose de mal?

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

Strictement parlant, les API Cortana sont celles du Windows.ApplicationModel.VoiceCommands namespace . Celles-ci ne sont pas disponibles pour les applications Classic ("Bureau"), mais pour les applications Windows universelles sur Windows 10. La raison pour laquelle les applications Classic ne peuvent pas utiliser les API est parce qu'elles reposent sur des concepts tels que les tâches en arrière-plan et l'identité de l'application qui ne ne pas appliquer aux applications classiques.

Les types de l'espace de noms Windows.Media.SpeechRecognition sont également indisponibles pour les applications Classic, mais je ne suis pas sûr de la limite.

Remarque: Comme @ Andrew Pilley mentionne, vous pourrez peut-être faire en sorte que ces types fonctionnent dans une application de bureau, mais cela n'est pas explicitement pris en charge pour le moment.

Si vous souhaitez uniquement la reconnaissance vocale dans une application .NET, vous pouvez utiliser le nom de l'espace de noms System.Speech.Recognition , qui utilise la même technologie sous-jacente. 

20
Peter Torr - MSFT

Ainsi, bien que Peter Torr ait raison sur Cortana (l'API Windows.ApplicationModel.VoiceCommands), les nouvelles API WinRT à reconnaissance vocale (Windows.Media.SpeechRecognition) peuvent être utilisées dans une application C # classique, si vous souhaitez utiliser WinRT Bibliothèques d'interopérabilité.

J'ai expliqué en détail comment configurer cela dans cette réponse à une question de débordement de pile , bien que la personne qui a posé cette question ait du mal à reproduire ce que j'ai pu travailler localement.

5
Andrew Pilley

Vous pouvez activer l'événement "WIN + C" de Cortana en appelant simplement cet "uri" comme un nouveau Process (), même lorsque le paramètre est désactivé.

ms-Cortana: // StartMode = Réactif & ListeningMode = True & QuerySource = VoiceShortcutKey & Positioner = desktop & SpeechTextInputHeight = 40 & ColorPrevalenceEnabled = true & PersonaOnlySupported = true & TaskbarOrientation = 3 & SearchBoxInTaskbar false

0
JeremyTTU