public async void ReadOutLoud() { IEnumerable <VoiceInformation> voices = from voice in InstalledVoices.All where voice.Language == "en-US" && voice.Gender == VoiceGender.Female select voice; // Set the voice as identified by the query. //try //{ // if(voices.Count() > 0) // synth.SetVoice(voices.ElementAt(0)); //} //catch //{ //} ICategoryRepository categoryRepository = new XmlCategoryRepository(); foreach (string id in categoryIds) { CategoryData category = categoryRepository.GetCategoryById(Convert.ToInt32(id)); //this.CategoryName.Text = category.Name; Uri imageUri = new Uri(category.Image, UriKind.Relative); var bitmap = new BitmapImage(imageUri); this.CategoryImage.Source = bitmap; RssParser rssParser = new RssParser(); Uri feedUri = new Uri(category.Feed, UriKind.Relative); StreamResourceInfo sri = Application.GetResourceStream(feedUri); rssParser.initializeLocal(sri.Stream); List <NewsItem> topStories = rssParser.getTopStories(); foreach (NewsItem newsItem in topStories) { try { synth = new SpeechSynthesizer(); if (voices.Count() > 0) { synth.SetVoice(voices.ElementAt(0)); } if (String.IsNullOrEmpty(newsItem.description)) { continue; } this.CategoryName.Text = newsItem.title; this.SummaryBlock.Text = newsItem.description; string textToRead = newsItem.title + ".\n" + newsItem.source + " reports, " + newsItem.description + "\n\n"; await synth.SpeakTextAsync(textToRead); synth.Dispose(); } catch { } } } }
static bool isLocalRssFeed = true; //the flow for isLocalRssFeed = false is not yet supported public static void ReadNewsByCategory(string cat) { RssParser rssParser = new RssParser(); string feedFileName = GetRssFeedFileNameByCategory(cat); if (isLocalRssFeed) { rssParser.initializeLocal(feedFileName); } else { rssParser.initialize("https://www.bing.com/news/?format=RSS"); } ReadOutLoud(GetNewsSummary(rssParser)); }