- Xamarin Blueprints
- Michael Williams
- 232字
- 2021-07-08 11:48:24
WinPhone text-to-speech implementation
Now we go back to Windows Phone for the last implementation. See how tricky it can be when you have to switch between multiple platforms. Imagine if we had to change languages and re-write IoC containers; the amount of work would be much greater. Not only that, there would be no point in using IoC, because we cannot share any code.
So firstly, don't forget to import the nuget package for Autofac:

Now that we have access to the Autofac framework, let's continue implementing the text to speech service. Start with adding a new folder called Services, then add the TextToSpeechWinPhone.cs
file and implement it:
public class TextToSpeechWinPhone : ITextToSpeech { public async void Speak(string text) { MediaElement mediaElement = new MediaElement (); var synth = new Windows.Media.SpeechSynthesis. SpeechSynthesizer (); SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync(text); mediaElement.SetSource(stream, stream.ContentType); mediaElement.Play(); } }
Looking at this more closely, you can see the instantiation of MediaElement
; this is used to play an audio source. Our source in this case is SpeechSynthesisStream
; this stream is built via a speech synthesizer. When we call the function SynthesizeTextToStreamAsync
, it will be an audio stream based on the text inserted into this function. We then set the MediaElement
source to the stream and call the Play
function to begin speaking. One addition to configuring Windows Phone is checking the capability in the app manifest file.