Я пытаюсь написать код для чтения вслух входящий Тост (это было тривиальным в WP8.1) меня это до сих порКак сделать речи в текст работы в ОС Windows (Phone) 8,1 Универсальный App
- Использование MediaElement, кажется, не работает (код работает, но без звука) либо по телефону, либо в эмулятора
- Использование BackgroundMediaPlayer работает в эмуляторе, но не по телефону
Я попробовал оба из потока пользовательского интерфейса (MediaElement работает только на UI потока) и BackgroundMediaPlayer из потока, который обрабатывает поступающую тост
var mediaElement = new MediaElement();
using (var tts = new SpeechSynthesizer())
{
using (var ttsStream = await tts.SynthesizeSsmlToStreamAsync(ssml))
{
//BackgroundMediaPlayer.Current.SetStreamSource(ttsStream);
mediaElement.SetSource(ttsStream, ttsStream.ContentType);
mediaElement.Play();
}
}
Я явно не хватает что-то просто здесь, но я из идей, как сделать эту работу. SSML правильно, я думаю, что это, вероятно, что-то делать с обзором и нити
Удивительно (мне нужно сделать немного больше тестирования) Я думаю, что это, используя вокруг ttsStream. Я думаю, что это может быть в первый раз, когда я был укушен очисткой после себя. –
Да, вы убиваете поток, прежде чем у него появится шанс сыграть. Я сделал то же самое, когда впервые попал в него. Кроме того, вы можете захотеть явно указать положение потока на 0, прежде чем передавать его в mediaElement. Кажется, я помню, что каждый раз снова (с перерывами и непоследовательно) это было бы на какой-то другой позиции, прежде чем Play() был вызван. – azarc3