/// <summary> /// Application voice uses a separate SAPI voice to speak self-voicing text. /// </summary> private ApplicationVoice() { _isEnabled = false; if (SapiVoice.IsEnabled()) { _voice = new SapiVoice(true); _voice.FinishedImmediatePhrase += OnSpeakFinished; _isEnabled = true; } }
// Public Methods (1) /// <summary> /// Determines and returns the voice to use for the given phrase. Also takes in a MediaElement /// as we cannot easily programmatically instantiate a MediaElement (since in order to function /// a MediaElement must be inserted into the UI Tree). /// </summary> /// <param name="currentPhrase">The current phrase to speak.</param> /// <param name="player">The MediaElement player used to play MP3 audio.</param> /// <returns>The IVoice to use to speak the given phrase.</returns> public static VoiceBase GetVoice(Phrase currentPhrase, MediaElement player) { if (currentPhrase == null) return null; if (SapiVoice.IsEnabled() && !currentPhrase.Silent) _sapiVoice = new SapiVoice(false); else _sapiVoice = new SilentVoice(); //Text-to-speech unavailable - use a silent voice instead. //If there is no included audio use the SAPi/Silent voice, otherwise the MP3 if (currentPhrase.Audio == null) { _sapiVoice.Volume = Volume; return _sapiVoice; } if (_mp3Voice == null) _mp3Voice = new MP3Voice(player) { Volume = Volume }; else _mp3Voice.ResetVoice(); return _mp3Voice; }