Подтвердить что ты не робот

Доступны ли API-интерфейсы Cortana для настольных приложений?

Я хочу создать приложение Windows в Windows 10 с помощью нового движка Cortana.

К сожалению, насколько мне известно, он доступен только для Windows Phone 8.1 (например, я не нашел способ получить доступ к пространству имен Windows.Media.SpeechRecognition из другого типа проекта Visual Studio).

Также мне не удалось найти хорошую документацию API, только некоторые очень простые примеры.

Edit:

На основании ответа Питера Торра я написал код. Я смог распознать какое-то слово, но, похоже, движок работает, когда он пытался распознать некоторые простые слова типа "Hello", в то время как 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();
    }
}
4b9b3361

Ответ 1

Строго говоря, API-интерфейсы Cortana являются телами в Windows.ApplicationModel.VoiceCommands namespace. Они недоступны для приложений Classic ( "Desktop" ), но доступны для приложений Universal Windows в Windows 10. Причина, по которой приложения Classic не могут использовать API, заключается в том, что они полагаются на такие концепции, как "Фоновые задачи" и "Идентификация приложения", t относятся к классическим приложениям.

Типы в Windows.Media.SpeechRecognition namespace также недоступны для классических приложений, но я не уверен, что такое ограничение.

Примечание. Как упоминается @Andrew Pilley, вы можете заставить эти типы работать в приложении для настольных компьютеров, но явно не поддерживаемые на данный момент.

Если вам просто требуется распознавание речи в приложении .NET, вы можете использовать System.Speech.Recognition namespace, в котором используется одна и та же базовая технология,

Ответ 2

Итак, в то время как Питер Торр прав относительно Cortana (API Windows.ApplicationModel.VoiceCommands), новые API WinRT Recognition WinRT (Windows.Media.SpeechRecognition) могут использоваться в классическом приложении С#, если вы готовы используйте библиотеки WinRT Interop.

Я подробно рассказал о том, как установить этот этот ответ на вопрос о переполнении стека, хотя у человека, который задал этот вопрос, возникла проблема с воспроизведением того, вы получили работу на местном уровне.

Ответ 3

Вы можете активировать событие Cortana "WIN + C", просто называя это "uri" как новый Process(), даже если настройка отключена.

мс-Кортана://StartMode = Реактивная & ListeningMode = True & QuerySource = VoiceShortcutKey & позиционер = настольных & SpeechTextInputHeight = 40 & ColorPrevalenceEnabled = TRUE & PersonaOnlySupported = TRUE & TaskbarOrientation = 3 & SearchBoxInTaskbar = ложно & AppsUseLightTheme = ложно & HideFileExtensions = ложь