web-dev-qa-db-ja.com

Cortana APIはデスクトップアプリケーションで使用できますか?

新しい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();
    }
}
14
simoneL

厳密に言えば、Cortana APIは Windows.ApplicationModel.VoiceCommands名前空間 。これらはクラシック(「デスクトップ」)アプリでは利用できませんが、Windows 10のユニバーサルWindowsアプリでは利用できます。クラシックアプリがAPIを使用できないのは、バックグラウンドタスクやアプリIDなどの概念に依存しているためです。 tクラシックアプリに適用されます。

Windows.Media.SpeechRecognition名前空間 もクラシックアプリでは使用できませんが、どのような制限があるのか​​わかりません。

注: @ Andrew Pilley が言及しているように、これらの型をデスクトップアプリで機能させることができる場合がありますが、現時点では明示的にサポートされていません。

.NETアプリで音声認識だけが必要な場合は、 System.Speech.Recognition名前空間 、同じ基盤テクノロジーを使用します。

21

したがって、Cortana(Windows.ApplicationModel.VoiceCommands API)についてはPeter Torrが正しい一方で、WinRTを使用する場合は、新しい音声認識WinRT API(Windows.Media.SpeechRecognition)を従来のC#アプリで使用できます。相互運用ライブラリ。

スタックオーバーフローの質問に対するこの回答 でそれを設定する方法を詳しく説明しましたが、その質問をした人は、私がローカルで機能させたものを複製するのに問題があります。

5
Andrew Pilley

設定がオフの場合でも、この「uri」を新しいProcess()のように呼び出すだけで、Cortanaの「WIN + C」イベントをアクティブ化できます。

ms-Cortana:// StartMode = Reactive&ListeningMode = True&QuerySource = VoiceShortcutKey&Positioner = desktop&SpeechTextInputHeight = 40&ColorPrevalenceEnabled = true&PersonaOnlySupported = true&TaskbarOrientation = 3&SearchBoxInTaskbar = false&AppsUseLightTheme = false&HideFileExtensions

0
JeremyTTU