Ejemplo n.º 1
0
        public EditingViewModel(Pack selectedPack, PhraseItem phraseItem, string author, ObservableAsPropertyHelper <ReactiveList <PhraseItem> > phrases)
        {
            _selectedPack = selectedPack;
            _author       = author;
            _phrases      = phrases;
            _oldPhrase    = phraseItem;
            _isEditing    = phraseItem != null;
            if (_isEditing)
            {
                Phrase      = phraseItem.Phrase;
                Complexity  = (int)phraseItem.Complexity;
                Description = phraseItem.Description;
            }

            SaveCommand = ReactiveCommand.Create();
            SaveCommand.Subscribe(_ =>
            {
                if (!Save(out string message))
                {
                    ShowError(message);
                }
                else
                {
                    Close?.Invoke();
                }
            });

            CloseCommand = ReactiveCommand.Create();
            CloseCommand.Subscribe(_ =>
            {
                Close?.Invoke();
            });
        }
Ejemplo n.º 2
0
 public override void Play(PhraseItem item)
 {
     using (WebClient wc = new WebClient())
     {
         MainWindow.PlayAudioStream(wc.DownloadData(String.Format("http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&client=tw-ob&q={0}&tl={1}", item.Phrase.Replace("&", "%26"), SelectedVoice.Language)));
     }
 }
 public override void Play(PhraseItem item)
 {
     using (WebClient wc = new WebClient())
     {
         MainWindow.PlayAudioStream(wc.DownloadData(GetDownloadURL(item.Phrase)));
     }
 }
Ejemplo n.º 4
0
        public void AddDuplicatedPhrase_PhraseWasNotAdded()
        {
            var phrase = new PhraseItem();

            AddPhrase(phrase);
            SelectFirstPack();
            Thread.Sleep(1000);
            SelectLastPack();
            Thread.Sleep(1000);
            ClickNewItem();
            Keyboard.Instance.Enter(phrase.Phrase);
            Keyboard.Instance.PressSpecialKey(KeyboardInput.SpecialKeys.TAB);
            Keyboard.Instance.PressSpecialKey(KeyboardInput.SpecialKeys.TAB);
            Keyboard.Instance.Enter(phrase.Description);
            ClickButton("SavePhraseButton");

            var warningWindow = MainWindow.Get <Window>(SearchCriteria.ByText("Warning"));

            Assert.IsNotNull(warningWindow);

            var rows = GetItemsFromListView(GetPhraseGrid());
            var row  = rows.FirstOrDefault(r => r.Cells[0].Text == phrase.Phrase);

            Assert.IsNull(row);

            DeletePhrase(phrase);
        }
Ejemplo n.º 5
0
 protected static void ConvertToWav(PhraseItem item, string folder, bool play, string [] details)
 {
     //Engine Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume
     try
     {
         TagLib.File file = TagLib.File.Create(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
         file.Tag.Title   = item.Phrase;
         file.Tag.Comment = String.Format("{0}, {1}, {2}, {3}", details[0], details[1], details[2], details[3]);
         file.Save();
     }
     catch
     {
     }
     if (Properties.Settings.Default.EncodeToWav == true)
     {
         using (Mp3FileReader mp3 = new Mp3FileReader(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName)))
         {
             using (var resampler = new MediaFoundationResampler(mp3, new NAudio.Wave.WaveFormat(Properties.Settings.Default.WavSampleRate, Properties.Settings.Default.WavBitsPerSample, 1)))
             {
                 resampler.ResamplerQuality = 60;
                 WaveFileWriter.CreateWaveFile(String.Format("{0}\\wav\\{1}\\{2}.wav", folder, item.Folder, item.FileName), resampler);
             }
         }
     }
     if (play)
     {
         MainWindow.PlayAudioFullPath(String.Format("{0}\\{3}\\{1}\\{2}.{3}", folder, item.Folder, item.FileName, Properties.Settings.Default.EncodeToWav? "wav":"mp3"));
     }
     item.DownloadComplete = true;
 }
        public override void DownloadItem(PhraseItem item, string folder)
        {
            String SSMLText = String.Format(@"
<speak>
  {0}
</speak >
", item.Phrase.Replace("&", "&amp;"));

            try
            {
                //new Task(() =>
                //{
                Amazon.Polly.Model.SynthesizeSpeechRequest ssr = new Amazon.Polly.Model.SynthesizeSpeechRequest();

                ssr.TextType     = TextType.Ssml;
                ssr.Text         = SSMLText;
                ssr.VoiceId      = polly.DescribeVoices(new Amazon.Polly.Model.DescribeVoicesRequest()).Voices.Find(n => n.Name == SelectedVoice.Name).Id;
                ssr.OutputFormat = OutputFormat.Mp3;

                using (FileStream output = File.Create(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName)))
                {
                    polly.SynthesizeSpeech(ssr).AudioStream.CopyTo(output);
                }

                ConvertToWav(item, folder, false, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });

                //}).Start();
            }
            catch (Exception Ex)
            {
                Logger.Log(Ex.ToString());
                item.DownloadComplete = false;
            }
        }
Ejemplo n.º 7
0
        private void HandleAddCommand()
        {
            Console.WriteLine("Enter the word");
            var word = Console.ReadLine();

            var complexity = ReadIntFromConsole(1, 5, "Enter the complexity");

            Console.WriteLine("Enter the description");
            var description = Console.ReadLine();

            var phrase = new PhraseItem
            {
                Phrase      = word,
                Complexity  = complexity,
                Description = description,
            };

            phrase.FormatPhrase();
            phrase.UpdateAuthor(_selectedAuthor);

            var response = _service.AddPhraseAsync(_selectedPack.Id, phrase, _selectedAuthor).Result;

            //Исправить эту дичь
            if (response.Trim() == "{\"result\": true}")
            {
                Console.WriteLine($"Word {phrase.Phrase} was saved");
            }
            else
            {
                Console.WriteLine($"Error on the word saving: {response}");
            }
        }
Ejemplo n.º 8
0
        private void EditPhrase(PhraseItem phraseItem)
        {
            //TODO: Rewrite with DI
            var editViewModel = new EditingViewModel(_selectedPack, phraseItem, _selectedAuthor, _phrases);
            var editView      = new EditingView(editViewModel);

            editView.ShowDialog();
        }
Ejemplo n.º 9
0
        private static PhraseItem GeneratePhrase()
        {
            var phrase = new PhraseItem {
                Phrase = RandomString(15), Description = RandomString(50), Complexity = Random.Next(1, 5)
            };

            phrase.UpdateAuthor(_testAuthor);
            return(phrase);
        }
Ejemplo n.º 10
0
        private void AssertPhraseExistInGrid(PhraseItem phraseItem)
        {
            var rows = GetItemsFromListView(GetPhraseGrid());
            var row  = rows.FirstOrDefault(r => r.Cells[0].Text == phraseItem.Phrase);

            Assert.IsNotNull(row);
            Assert.IsTrue(row.Cells[1].Text == phraseItem.Complexity.ToString(CultureInfo.CurrentCulture));
            Assert.IsTrue(row.Cells[2].Text == phraseItem.Description);
        }
Ejemplo n.º 11
0
 internal BasePhraseItemResponse([NotNull] PhraseItem phrase, [CanBeNull] IEnumerable <ServerUser> users = null)
 {
     Id          = phrase.Id;
     Phrase      = phrase.Phrase;
     Complexity  = phrase.Complexity;
     Description = phrase.Description;
     PackId      = phrase.PackId;
     TrackId     = phrase.TrackId;
     Version     = phrase.Version;
     Reviews     = phrase.ReviewStates.Select(s => new BaseReviewStateResponse(s, users)).ToList();
 }
Ejemplo n.º 12
0
 public override void Play(PhraseItem item)
 {
     using (var synth = new SpeechSynthesizer())
     {
         synth.SelectVoice(SelectedVoice.Name);
         synth.Volume = Int32.Parse(SelectedDiscreteVolume);
         synth.Rate   = Int32.Parse(SelectedDiscreteSpeed);
         synth.SetOutputToDefaultAudioDevice();
         synth.Speak(item.Phrase);
     }
 }
Ejemplo n.º 13
0
        private static PhraseItem GenerateNewPhrase()
        {
            var phrase = new PhraseItem
            {
                Complexity  = RandomNumber.Next(1, 5),
                Description = Lorem.Sentence(),
                Phrase      = Name.First(),
            };

            phrase.UpdateAuthor(TestAuthor);
            return(phrase);
        }
Ejemplo n.º 14
0
        private static RadButton CreateDeleteButton(PhraseItem phrase, string author)
        {
            var button = new RadButton
            {
                Content    = "To delete",
                Padding    = new Thickness(10, 2, 10, 2),
                Margin     = new Thickness(3, 1, 3, 2),
                Visibility = phrase.IsWantToDeleteBy(author) ? Visibility.Hidden : Visibility.Visible
            };

            button.Click += (o, args) => Button_Click(o, State.Delete);
            return(button);
        }
Ejemplo n.º 15
0
        private static RadButton CreateReviewButton(PhraseItem phrase, string author)
        {
            var button = new RadButton
            {
                Content    = "Accept",
                Padding    = new Thickness(10, 2, 10, 2),
                Margin     = new Thickness(3, 1, 3, 2),
                Visibility = phrase.IsReviewedBy(author) ? Visibility.Hidden : Visibility.Visible
            };

            button.Click += (o, args) => Button_Click(o, State.Accept);
            return(button);
        }
Ejemplo n.º 16
0
 public override void Play(PhraseItem item)
 {
     using (WebClient wc = new WebClient())
     {
         try
         {
             wc.Headers.Add(HttpRequestHeader.Cookie, Properties.Settings.Default.BingHeaderString);
             MainWindow.PlayAudioStream(wc.DownloadData(String.Format("http://www.bing.com/translator/api/language/Speak?locale={1}&gender={2}&media=audio/mp3&text={0}", item.Phrase, SelectedVoice.Language, SelectedVoice.Gender)));
         }
         catch
         {
         }
     }
 }
        public override void DownloadAndPlayItem(PhraseItem item, string folder)
        {
            String SSMLText = String.Format(@"<?xml version=""1.0""?>
            <speak xmlns=""http://www.w3.org/2001/10/synthesis"" version=""1.0"" xml:lang=""{1}"">
            <p>
            <s>{0}</s>
            </p>
            </speak>
            ", item.Phrase.Replace("&", "&amp;"), SelectedVoice.Language);

            try
            {
                new Task(() =>
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        ms.Seek(0, SeekOrigin.Begin);
                        using (var synth = new SpeechSynthesizer())
                        {
                            synth.SelectVoice(SelectedVoice.Name);
                            synth.Volume = Int32.Parse(SelectedDiscreteVolume);
                            synth.Rate = Int32.Parse(SelectedDiscreteSpeed);
                            synth.SetOutputToWaveStream(ms);//.SetOutputToWaveFile(String.Format("{0}\\wav22050\\{1}\\{2}.wav", folder, item.Folder, item.FileName));
                            synth.SpeakSsml(SSMLText);
                        }
                        ms.Seek(0, SeekOrigin.Begin);
                        using (WaveFileReader wav = new WaveFileReader(ms))// String.Format("{0}\\wav22050\\{1}\\{2}.wav", folder, item.Folder, item.FileName)))
                        {
                            using (FileStream fs = new FileStream(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName), FileMode.Create))
                            {
                                using (var writer = new LameMP3FileWriter(fs, wav.WaveFormat, 128))
                                {
                                    wav.CopyTo(writer);
                                }
                            }
                        }
                        ms.Seek(0, SeekOrigin.Begin);
                        using (WaveFileReader wav = new WaveFileReader(ms))// String.Format("{0}\\wav22050\\{1}\\{2}.wav", folder, item.Folder, item.FileName)))
                        {
                            ConvertToWav(item, folder, true, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
                        }
                    }
                }).Start();
            }
            catch (Exception Ex)
            {
                Logger.Log(Ex.ToString());
            }
        }
Ejemplo n.º 18
0
        public override void DownloadItem(PhraseItem item, string folder)
        {
            String SSMLText = String.Format(@"<?xml version=""1.0""?>
<speak xmlns=""http://www.w3.org/2001/10/synthesis"" version=""1.0"" xml:lang=""{1}"">
<p>
<s>{0}</s>
</p>
</speak>
", item.Phrase.Replace("&", "&amp;"), SelectedVoice.Language);

            try
            {
                new Task(() =>
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        ms.Seek(0, SeekOrigin.Begin);
                        using (var synth = new SpeechSynthesizer())
                        {
                            synth.SelectVoice(SelectedVoice.Name);
                            synth.Volume = Int32.Parse(SelectedDiscreteVolume);
                            synth.Rate   = Int32.Parse(SelectedDiscreteSpeed);
                            synth.SetOutputToWaveStream(ms);//.SetOutputToWaveFile(String.Format("{0}\\wav22050\\{1}\\{2}.wav", folder, item.Folder, item.FileName));
                            synth.SpeakSsml(SSMLText);
                        }
                        ms.Seek(0, SeekOrigin.Begin);
                        using (WaveFileReader wav = new WaveFileReader(ms))// String.Format("{0}\\wav22050\\{1}\\{2}.wav", folder, item.Folder, item.FileName)))
                        {
                            using (FileStream fs = new FileStream(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName), FileMode.Create))
                            {
                                using (var writer = new LameMP3FileWriter(fs, wav.WaveFormat, 128))
                                {
                                    wav.CopyTo(writer);
                                }
                            }
                        }
                        ms.Seek(0, SeekOrigin.Begin);
                        using (WaveFileReader wav = new WaveFileReader(ms))// String.Format("{0}\\wav22050\\{1}\\{2}.wav", folder, item.Folder, item.FileName)))
                        {
                            ConvertToWav(item, folder, false, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
                        }
                    }
                }).Start();
            }
            catch (Exception Ex)
            {
                Logger.Log(Ex.ToString());
            }
        }
Ejemplo n.º 19
0
        public void AddNewPhrase_SuccessAdded()
        {
            SelectLastPack();
            var phrase = new PhraseItem();

            ClickNewItem();
            Keyboard.Instance.Enter(phrase.Phrase);
            Keyboard.Instance.PressSpecialKey(KeyboardInput.SpecialKeys.TAB);
            Keyboard.Instance.PressSpecialKey(KeyboardInput.SpecialKeys.TAB);
            Keyboard.Instance.Enter(phrase.Description);
            ClickButton("SavePhraseButton");
            AssertPhraseExistInGrid(phrase);

            DeletePhrase(phrase);
        }
Ejemplo n.º 20
0
        public override void DownloadAndPlayItem(PhraseItem item, string folder)
        {
            try
            {
                new Task(() =>
                {
                    File.WriteAllBytes(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName), IvonaCreateSpeech(item.Phrase, SelectedVoice));
                    ConvertToWav(item, folder, true, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
                }).Start();

            }
            catch (Exception Ex)
            {
                Logger.Log(Ex.ToString());
                item.DownloadComplete = false;
            }
        }
Ejemplo n.º 21
0
        // ReSharper disable once UnusedMember.Local
        private static async Task AddDescriptionAsync(Pack pack, [NotNull] PhraseItem phrase, string description)
        {
            try
            {
                if (phrase.Complexity <= 0)
                {
                    phrase.Complexity = 1;
                }

                await MongoServiceClient.AddPhraseDescriptionAsync(pack.Id, phrase, description);

                ConsoleUtilities.WriteGreenLine($"Description for phrase {phrase.Phrase} was added");
            }
            catch (Exception e)
            {
                ConsoleUtilities.WriteException(e, $"Description for phrase {phrase.Phrase} wasn't added");
            }
        }
Ejemplo n.º 22
0
        //чушь конечно иметь такой метод. Но кое-кто был слишком упрямым чтобы делать нормальные айдишники для слов. С новым сервачком такого говна не будет.
        public static async Task EditPhraseAsync(int packId, [NotNull] PhraseItem oldPhrase, [NotNull] PhraseItem newPhrase, string selectedAuthor = "zhadko")
        {
            if (oldPhrase.Phrase != newPhrase.Phrase)
            {
                await DeletePhraseAsync(packId, oldPhrase.Phrase, selectedAuthor);
                await AddPhraseAsync(packId, newPhrase);
            }

            var oldComplexity = oldPhrase.Complexity;
            var newComplexity = newPhrase.Complexity;

            if (!string.Equals(oldPhrase.Phrase, newPhrase.Phrase, StringComparison.Ordinal) ||
                !AreComplexitiesEqual(oldComplexity, newComplexity) ||
                !string.Equals(oldPhrase.Description, newPhrase.Description, StringComparison.Ordinal))
            {
                await AddPhraseDescriptionAsync(packId, newPhrase, newPhrase.Description, selectedAuthor);
            }
        }
Ejemplo n.º 23
0
        public InferenceRule match(PhraseItem[] phrase)
        {
            if (this.rules.Count == 0) return null;

            InferenceRule current = this.rules[0];
            int globalDistance = current.distance(phrase);
            for (int i = 1; i < this.rules.Count; i++)
            {
                int distance = rules[i].distance(phrase);
                if (distance != -1 && (globalDistance == -1 || globalDistance > distance))
                {
                    globalDistance = distance;
                    current = rules[i];
                }
            }

            return current;
        }
Ejemplo n.º 24
0
 public override void DownloadAndPlayItem(PhraseItem item, string folder)
 {
     try
     {
         new Task(() =>
         {
             using (WebClient wc = new WebClient())
             {
                 wc.DownloadFile(String.Format("http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&client=tw-ob&q={0}&tl={1}", item.Phrase.Replace("&", "%26"), SelectedVoice.Language), String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
             }
             ConvertToWav(item, folder, true, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
         }).Start();
     }
     catch (Exception Ex)
     {
         Logger.Log(Ex.ToString());
         item.DownloadComplete = false;
     }
 }
 public override void DownloadItem(PhraseItem item, string folder)
 {
     try
     {
         new Task(() =>
         {
             using (WebClient wc = new WebClient())
             {
                 wc.DownloadFile(GetDownloadURL(item.Phrase), String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
             }
             ConvertToWav(item, folder, false, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
         }).Start();
     }
     catch (Exception Ex)
     {
         Logger.Log(Ex.ToString());
         item.DownloadComplete = false;
     }
 }
Ejemplo n.º 26
0
 public override void DownloadAndPlayItem(PhraseItem item, string folder)
 {
     try
     {
         new Task(() =>
         {
             using (WebClient wc = new WebClient())
             {
                 wc.DownloadFile(String.Format("http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&client=tw-ob&q={0}&tl={1}", item.Phrase.Replace("&", "%26"), SelectedVoice.Language), String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
             }
             ConvertToWav(item, folder, true, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
         }).Start();
     }
     catch (Exception Ex)
     {
         Logger.Log(Ex.ToString());
         item.DownloadComplete = false;
     }
 }
 public override void DownloadItem(PhraseItem item, string folder)
 {
     try
     {
         new Task(() =>
         {
             using (WebClient wc = new WebClient())
             {
                 wc.DownloadFile(GetDownloadURL(item.Phrase), String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
             }
             ConvertToWav(item, folder, false, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
         }).Start();
     }
     catch(Exception Ex)
     {
         Logger.Log(Ex.ToString());
         item.DownloadComplete = false;
     }
 }
Ejemplo n.º 28
0
        internal PhraseItem ToPhraseItem([NotNull] ServerUser authorUser, [NotNull] PhraseItem existingPhrase)
        {
            var newReviewStates = new List <ReviewState>();

            foreach (var state in existingPhrase.ReviewStates)
            {
                if (state.UserId == authorUser.Id)
                {
                    newReviewStates.Add(new ReviewState {
                        UserId = authorUser.Id, State = State.Accept, Comment = Comment
                    });
                }
                else
                {
                    newReviewStates.Add(ClearReview ? new ReviewState {
                        UserId = state.UserId, State = State.Unknown
                    } : state.Clone());
                }
            }

            if (!newReviewStates.Select(s => s.UserId).Contains(authorUser.Id))
            {
                newReviewStates.Add(new ReviewState {
                    UserId = authorUser.Id, State = State.Accept, Comment = Comment
                });
            }

            var phraseItem = new PhraseItem
            {
                PackId       = existingPhrase.PackId,
                Phrase       = Phrase,
                Complexity   = Complexity,
                Description  = Description,
                Version      = existingPhrase.Version + 1,
                TrackId      = existingPhrase.TrackId,
                CreatedById  = authorUser.Id,
                CreatedDate  = DateTime.Now,
                ReviewStates = newReviewStates
            };

            return(phraseItem);
        }
Ejemplo n.º 29
0
 public override void DownloadAndPlayItem(PhraseItem item, string folder)
 {
     try
     {
         new Task(() =>
         {
             using (WebClient wc = new WebClient())
             {
                 wc.Headers.Add(HttpRequestHeader.Cookie, Properties.Settings.Default.BingHeaderString);
                 wc.DownloadFile(String.Format("http://www.bing.com/translator/api/language/Speak?locale={1}&gender={2}&media=audio/mp3&text={0}", item.Phrase, SelectedVoice.Language, SelectedVoice.Gender), String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
             }
             ConvertToWav(item, folder, true, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
         }).Start();
     }
     catch (Exception Ex)
     {
         Logger.Log(Ex.ToString());
         item.DownloadComplete = false;
     }
 }
Ejemplo n.º 30
0
        public override void Play(PhraseItem item)
        {
            if (!disabled)
            {
                Amazon.Polly.Model.SynthesizeSpeechRequest ssr = new Amazon.Polly.Model.SynthesizeSpeechRequest();

                ssr.Text         = item.Phrase;
                ssr.VoiceId      = polly.DescribeVoices(new Amazon.Polly.Model.DescribeVoicesRequest()).Voices.Find(n => n.Name == SelectedVoice.Name).Id;
                ssr.OutputFormat = OutputFormat.Mp3;
                byte[] mp3;

                using (MemoryStream output = new MemoryStream())
                {
                    polly.SynthesizeSpeech(ssr).AudioStream.CopyTo(output);
                    mp3 = output.ToArray();
                }

                MainWindow.PlayAudioStream(mp3);
            }
        }
Ejemplo n.º 31
0
        private bool Save(out string message)
        {
            var phraseItem = new PhraseItem {
                Phrase = Phrase, Complexity = Complexity, Description = Description
            };

            StringUtils.FormatPhrase(phraseItem);

            if (String.IsNullOrWhiteSpace(phraseItem.Phrase)) //TOFO: fix it, textblock should be highlighted.
            {
                message = "Phrase can't be empty!";
                return(false);
            }

            if (!_isEditing && _selectedPack.Phrases.Select(p => p.Phrase).Contains(phraseItem.Phrase))
            {
                message = "Phrase is already in the pack";
                return(false);
            }

            message = _oldPhrase == null
                ? _service.AddPhraseAsync(_selectedPack.Id, phraseItem, _author).Result
                : _service.EditPhraseAsync(_selectedPack.Id, _oldPhrase, phraseItem, _author).Result;

            if (message.Trim() == "{\"result\": true}")
            {
                if (!_isEditing)
                {
                    _phrases.Value.Add(phraseItem);
                }
                else
                {
                    var index = _phrases.Value.IndexOf(_oldPhrase);
                    _phrases.Value[index] = phraseItem;
                }

                return(true);
            }

            return(false);
        }
Ejemplo n.º 32
0
        internal PhraseItem ToPhraseItem(ServerUser user)
        {
            var reviewState = new ReviewState {
                User = user, State = State.Accept
            };
            var phraseItem = new PhraseItem
            {
                Phrase       = Phrase,
                Complexity   = Complexity,
                Description  = Description,
                PackId       = PackId,
                Version      = 1,
                CreatedBy    = user,
                CreatedDate  = DateTime.Now,
                ReviewStates = new List <ReviewState> {
                    reviewState
                }
            };

            return(phraseItem);
        }
Ejemplo n.º 33
0
        public override void DownloadItem(PhraseItem item, string folder)
        {
            try
            {
                new Task(() =>
                {
                    using (WebClient wc = new WebClient())
                    {
                        wc.Headers.Add(HttpRequestHeader.Cookie, Properties.Settings.Default.BingHeaderString);
                        wc.DownloadFile(String.Format("http://www.bing.com/translator/api/language/Speak?locale={1}&gender={2}&media=audio/mp3&text={0}", item.Phrase, SelectedVoice.Language, SelectedVoice.Gender), String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
                    }
                    ConvertToWav(item, folder, false, new String[] { Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume });
                }).Start();

            }
            catch (Exception Ex)
            {
                Logger.Log(Ex.ToString());
                item.DownloadComplete = false;
            }
        }
Ejemplo n.º 34
0
        private void ReadPhrases([NotNull] JObject packItem, [NotNull] Pack pack)
        {
            var defaultUser = _users?.First(u => u.UserName == Constants.DefaultUserName);

            foreach (var phraseItem in packItem["phrases"].Children().ToList())
            {
                var phrase = new PhraseItem
                {
                    Phrase      = phraseItem["phrase"].Value <string>(),
                    Complexity  = phraseItem["complexity"].Value <int>(),
                    Description = phraseItem["description"].Value <string>(),
                    CreatedDate = DateTime.Now,
                    CreatedBy   = defaultUser,
                    TrackId     = ++_trackId,
                    Track       = null
                };

                ReadReviewers(phraseItem, phrase);

                pack.Phrases.Add(phrase);
            }
        }
Ejemplo n.º 35
0
        public void EditPhraseDescriptionTest()
        {
            var oldPhrase = GenerateNewPhrase();

            _packService.AddPhrase(Id, oldPhrase);
            var newPhrase = new PhraseItem
            {
                Phrase      = oldPhrase.Phrase,
                Description = $"{oldPhrase.Description} {Lorem.Sentence()}",
                Complexity  = oldPhrase.Complexity % 5,
            };

            newPhrase.UpdateAuthor(TestAuthor);
            _packService.EditPhrase(Id, oldPhrase, newPhrase, TestAuthor);

            var pack = _packService.GetPackById(Id);

            Assert.That(pack.Phrases.Any(p => p.Phrase == newPhrase.Phrase && p.Description == newPhrase.Description));
            Assert.That(pack.Phrases.Select(p => p.Description), Is.Not.Contains(oldPhrase.Description));

            _packService.DeletePhrase(Id, newPhrase.Phrase, TestAuthor);
        }
Ejemplo n.º 36
0
        private void ReadReviewers([NotNull] JToken phraseItem, PhraseItem phrase)
        {
            if (phraseItem["reviews"] == null || _users == null)
            {
                return;
            }

            foreach (var user in _users)
            {
                var state = phraseItem["reviews"][user.UserName];
                if (state == null)
                {
                    continue;
                }

                var reviewState = new ReviewState
                {
                    User       = user,
                    PhraseItem = phrase,
                    State      = (State)state.Value <int>()
                };
                phrase.ReviewStates.Add(reviewState);
            }
        }
 public override void Play(PhraseItem item)
 {
     using (WebClient wc = new WebClient())
     {
         MainWindow.PlayAudioStream(wc.DownloadData(GetDownloadURL(item.Phrase)));
     }
 }
Ejemplo n.º 38
0
        protected static void ConvertToWav(PhraseItem item, string folder, bool play, string [] details)
        {
            //Engine Name, SelectedVoice.Name, SelectedDiscreteSpeed, SelectedDiscreteVolume
            try
            {
                TagLib.File file = TagLib.File.Create(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName));
                file.Tag.Title = item.Phrase;
                file.Tag.Comment = String.Format("{0}, {1}, {2}, {3}", details[0], details[1], details[2], details[3]);
                file.Save();

            }
            catch
            {

            }
            if (Properties.Settings.Default.EncodeToWav == true)
            {
                using (Mp3FileReader mp3 = new Mp3FileReader(String.Format("{0}\\mp3\\{1}\\{2}.mp3", folder, item.Folder, item.FileName)))
                {

                    using (var resampler = new MediaFoundationResampler(mp3, new NAudio.Wave.WaveFormat(Properties.Settings.Default.WavSampleRate, Properties.Settings.Default.WavBitsPerSample, 1)))
                    {
                        resampler.ResamplerQuality = 60;
                        WaveFileWriter.CreateWaveFile(String.Format("{0}\\wav\\{1}\\{2}.wav", folder, item.Folder, item.FileName), resampler);
                    }
                }
            }
            if (play)
            {
                MainWindow.PlayAudioFullPath(String.Format("{0}\\{3}\\{1}\\{2}.{3}", folder, item.Folder, item.FileName, Properties.Settings.Default.EncodeToWav? "wav":"mp3"));
            }
            item.DownloadComplete = true;
        }
Ejemplo n.º 39
0
 public override void Play(PhraseItem item)
 {
     using (WebClient wc = new WebClient())
     {
         MainWindow.PlayAudioStream(wc.DownloadData(String.Format("http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&client=tw-ob&q={0}&tl={1}", item.Phrase.Replace("&", "%26"), SelectedVoice.Language)));
     }
 }
Ejemplo n.º 40
0
 public abstract void Play(PhraseItem item);
Ejemplo n.º 41
0
 public abstract void DownloadItem(PhraseItem item, string folder);
Ejemplo n.º 42
0
 public override void Play(PhraseItem item)
 {
     byte[] mp3 = IvonaCreateSpeech(item.Phrase, SelectedVoice);
     //File.WriteAllBytes(String.Format("{0}\\mp3\\{1}\\{2}.mp3", Path.GetTempPath(), item.Folder, item.FileName), );
     MainWindow.PlayAudioStream(mp3);
 }
Ejemplo n.º 43
0
 public int distance(PhraseItem[] phrase)
 {
     return -1;
 }
 public override void Play(PhraseItem item)
 {
     using (var synth = new SpeechSynthesizer())
     {
         synth.SelectVoice(SelectedVoice.Name);
         synth.Volume = Int32.Parse(SelectedDiscreteVolume);
         synth.Rate = Int32.Parse(SelectedDiscreteSpeed);
         synth.SetOutputToDefaultAudioDevice();
         synth.Speak(item.Phrase);
     }
 }
Ejemplo n.º 45
0
        public override void Play(PhraseItem item)
        {
            using (WebClient wc = new WebClient())
            {
                try
                {
                    wc.Headers.Add(HttpRequestHeader.Cookie, Properties.Settings.Default.BingHeaderString);
                    MainWindow.PlayAudioStream(wc.DownloadData(String.Format("http://www.bing.com/translator/api/language/Speak?locale={1}&gender={2}&media=audio/mp3&text={0}", item.Phrase, SelectedVoice.Language, SelectedVoice.Gender)));
                }
                catch
                {

                }
            }
        }