Доступны ли 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();
}
}
Ответы
Ответ 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 = ложь