Я хочу разработать приложение Windows в Windows 10 с помощью нового движка Cortana.Доступны ли API-интерфейсы 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();
}
}
Привет, большое спасибо за ваш ответ. Я попытался создать проект библиотеки классов, но в списке доступных ссылок нет сборки Windows.Media (или аналогичной). Единственные DLL с таким именем существуют в пути, как C: \ Windows \ WinSxS \ amd64_microsoft-windows-runtime-windows-media_31bf3856ad364e35_10.0.10240.16384_none_4f69ddc0692a98bf, и они являются COM-dll. Честно говоря, я немного смущен.Я ожидал бы, что dll будет частью .Net Framework (или Windows Sdk) и будет библиотекой C#. – simoneL
Я думаю, вы пропустили эту часть ответа: «Типы в пространстве имен Windows.Media.SpeechRecognition также недоступны для классических приложений». Я думаю, вам нужно посмотреть System.Speech.Recognition. –
Да, Брендан, ты прав, я неправильно понял. Далее я должен ложиться спать раньше :) Кстати, я написал код на основе ответа Питера и включил его в исходный вопрос. Я добился признания речи, но это все еще недостаточно. – simoneL