Доступны ли API Cortana для настольных приложений?
Я хочу разработать приложение Windows на Windows 10 с помощью нового движка Cortana.
к сожалению, насколько я знаю, он доступен только в проекте Windows Phone 8.1 (например, я не нашел способ доступа к Windows.Сми.Пространство имен SpeechRecognition из другого типа проекта Visual Studio).
также я не смог найти хорошую документацию API, только некоторые очень простые примеры.
изменить:
на основе Питер Торр ответ я написал какой-то код. Я смог распознать какое-то слово, но двигатель, похоже, борется, когда он пытался распознать некоторые простые слова, такие как "привет", в то время как Кортана распознала его успешно.
Я делаю что-то не так?
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();
}
}
3 ответов
строго говоря, API Cortana-это те, которые находятся в Windows.ApplicationModel.VoiceCommands
пространство имен. Они недоступны для классических ("настольных") приложений, но доступны для универсальных приложений Windows в Windows 10. Причина, по которой классические приложения не могут использовать API, заключается в том, что они полагаются на такие понятия, как фоновые задачи и идентификатор приложения, которые не применяются к классическим приложениям.
типы Windows.Media.SpeechRecognition
пространство имен также недоступны для классических приложений, но я не уверен, что есть ограничения.
Примечание: As @Andrew Pilley упоминает, вы можете получить эти типы для работы в настольном приложении, но это явно не поддерживается на данный момент.
Если вы просто хотите распознавание речи в приложении .NET, вы можете использовать System.Speech.Recognition
пространство имен, который использует ту же базовую технологию.
Итак, в то время как Питер Торр прав насчет Кортаны (Windows.ApplicationModel.VoiceCommands API), новое распознавание речи WinRT API (Windows.Сми.SpeechRecognition) может использоваться в классическом приложении C#, если вы хотите использовать библиотеки взаимодействия WinRT.
Я подробно рассказал, как настроить это в этот ответ на вопрос переполнения стека, хотя у человека, который задал этот вопрос, возникли проблемы с воспроизведением того, что я получил для работы на местном уровне.
вы можете активировать событие "WIN+C" Кортаны, просто вызвав этот " uri " как новый процесс(), даже если параметр выключен.
ms-cortana://StartMode=Reactive&ListeningMode=True&QuerySource=VoiceShortcutKey&Positioner=desktop&SpeechTextInputHeight=40&ColorPrevalenceEnabled=true&PersonaOnlySupported=true&TaskbarOrientation=3&SearchBoxInTaskbar=false&AppsUseLightTheme=false&HideFileExtensions=false