/// <summary>
        /// Enrolls the audio of the speaker
        /// </summary>
        /// <param name="audioStream">The audio stream</param>
        private async void enrollSpeaker(Stream audioStream)
        {
            try
            {
                Enrollment response = await verServiceClient.EnrollAsync(audioStream, _speakerId);

                Title = String.Format("Enrollment Done");
                remEnrollText.Text = response.RemainingEnrollments.ToString();
                //verPhraseText.Text = response.Phrase;
                userPhrase = response.Phrase.ToString();


                Console.WriteLine("Your phrase is : " + response.Phrase.ToString());

                if (response.RemainingEnrollments == 0)
                {
                    MessageBox.Show("You have now completed the minimum number of enrollments. You may perform verification or add more enrollments", "Speaker enrolled");
                    Console.WriteLine("Enrolled");
                }
                else
                {
                    Console.WriteLine("Enrolling");
                }
            }
            catch (EnrollmentException exception)
            {
                Console.WriteLine("Cannot enroll speaker: " + exception.Message);
            }
            catch (Exception gexp)
            {
                Console.WriteLine("Error: " + gexp.Message);
            }
        }
Пример #2
0
        /// <summary>
        /// Enrolls the audio of the speaker
        /// </summary>
        /// <param name="audioStream">The audio stream</param>
        private async void enrollSpeaker(Stream audioStream)
        {
            try
            {
                Stopwatch  sw       = Stopwatch.StartNew();
                Enrollment response = await _serviceClient.EnrollAsync(audioStream, _speakerId);

                sw.Stop();
                _remainingEnrollments = response.RemainingEnrollments;
                setStatus("Enrollment Done, Elapsed Time: " + sw.Elapsed);
                verPhraseText.Text = response.Phrase;
                setStatus("Your phrase: " + response.Phrase);
                setUserPhrase(response.Phrase);
                remEnrollText.Text = response.RemainingEnrollments.ToString();
                if (response.RemainingEnrollments == 0)
                {
                    MessageBox.Show("You have now completed the minimum number of enrollments. You may perform verification or add more enrollments", "Speaker enrolled");
                }
                resetBtn.IsEnabled = true;
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, "Done");
            }
            catch (EnrollmentException exception)
            {
                setStatus("Cannot enroll speaker: " + exception.Message);
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
            }
        }
        async Task finishEnrollment()
        {
            _speakerId = Guid.Parse((lbProfiles.SelectedItem as ListBoxItem).Content.ToString());

            btnRecordEnroll.Content   = "Start record enrollment";
            btnRecordEnroll.IsEnabled = false;
            await CaptureMedia.StopRecordAsync();

            Stream str = AudioStream.AsStream();

            str.Seek(0, SeekOrigin.Begin);

            Enrollment response;

            try
            {
                response = await _serviceClient.EnrollAsync(str, _speakerId);
            }
            catch (EnrollmentException ex)
            {
                txtInfo.Text = ex.Message;
                CleanAfter();
                return;
            }

            txtInfo.Text = "Remaining enrollments: " + txtInfo.Text + response.RemainingEnrollments.ToString();
            txtInfo.Text = txtInfo.Text + Environment.NewLine + response.Phrase;

            CleanAfter();
        }
Пример #4
0
        public async Task <Enrollment> EnrollSpeaker()
        {
            if (profileCreated)
            {
                try
                {
                    //Get .wav file
                    var audioStream = await Recorder.GetStreamAsync();

                    //Enroll Speaker using API
                    Enrollment enrollmentResult = await serviceClient.EnrollAsync(audioStream.AsStream(), speakerId);

                    return(enrollmentResult);
                }
                catch (Microsoft.ProjectOxford.SpeakerRecognition.Contract.EnrollmentException e)
                {
                    if (e.Message.Equals("InvalidPhrase"))
                    {
                        if (firstEnrollment)
                        {
                            Synthesizer.Speak("I am sorry, I couldn't recognize a phrase from the list.");
                            Debug.WriteLine("I am sorry, I couldn't recognize a phrase from the list.");
                        }
                        else
                        {
                            Synthesizer.Speak("I am sorry, I need you to say the same phrase the three times.");
                            Debug.WriteLine("I am sorry, I need you to say the same phrase the three times.");
                        }
                    }
                    else if (e.Message.Equals("SpeechNotRecognized"))
                    {
                        Synthesizer.Speak("I am sorry, I couldn't recognize a human's voice. Please try again.");
                        Debug.WriteLine("I am sorry, I couldn't recognize a human's voice. Please try again.");
                    }
                    else
                    {
                        Debug.WriteLine("Couldn't enroll Speaker: " + e.Message);
                        Synthesizer.Speak("Something went wrong. Please try again.");
                    }
                    return(null);
                }
                catch (Exception e)
                {
                    Synthesizer.Speak("Something went wrong. Please try again.");
                    Debug.WriteLine("Couldn't enrollSpeaker: " + e.Message);
                    return(null);
                }
            }
            else
            {
                Debug.WriteLine("Create Profile first.");
                return(null);
            }
        }
Пример #5
0
        //Enrollment audio requirements
        //https://westus.dev.cognitive.microsoft.com/docs/services/563309b6778daf02acc0a508/operations/5645c3271984551c84ec6797

        private async void enrollBtn_Click(object sender, RoutedEventArgs e)
        {
            var picker = new Windows.Storage.Pickers.FileOpenPicker();

            picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
            picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Downloads;
            picker.FileTypeFilter.Add(".wav");

            Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();

            if (file != null)
            {
                // Application now has read/write access to the picked file
                txtBoxOutput.Text = "Picked: " + file.Name;
            }
            else
            {
                //User has cancelled operation
                return;
            }

            //Convert to stream
            var audioStream = await file.OpenStreamForReadAsync();

            Guid speakerId = new Guid(txtBoxGuid.Text.ToString());

            try
            {
                Enrollment response = await voiceServiceClient.EnrollAsync(audioStream, speakerId);

                if (response.EnrollmentStatus == Microsoft.ProjectOxford.SpeakerRecognition.Contract.EnrollmentStatus.Enrolled)
                {
                    // enrollment successful
                    LogMessage($"Enrolled.");
                }

                if (response.EnrollmentStatus == Microsoft.ProjectOxford.SpeakerRecognition.Contract.EnrollmentStatus.Enrolling)
                {
                    // enrollment successful
                    LogMessage($"Enrolling.");
                }
            }
            catch (Exception error)
            {
                LogMessage($"{error.Message}");
            }
        }
Пример #6
0
        /// <summary>
        /// Enrolls the audio of the speaker
        /// </summary>
        /// <param name="audioStream">The audio stream</param>
        private async void enrollSpeaker(Stream audioStream)
        {
            try
            {
                //Stopwatch sw = Stopwatch.StartNew();
                Enrollment response = await _serviceClient.EnrollAsync(audioStream, _speakerId);

                //sw.Stop();
                lblStatus.Content           = "Enrollment done, " + response.RemainingEnrollments.ToString() + " remaining(s)"; //+ sw.Elapsed;
                txtRemainingEnrollment.Text = response.RemainingEnrollments.ToString();


                txtPhraseText.Text = response.Phrase;

                if (response.RemainingEnrollments == 0)
                {
                    //MessageBox.Show("You have now completed the minimum number of enrollments. You can press finish or add more enrollments", "Speaker enrolled");
                    MessageBox.Show("Registration completed!", "Speaker enrolled");
                    user.speakerguid   = _speakerId.ToString();
                    user.speakerphrase = txtPhraseText.Text;
                    dataContext.SubmitChanges();
                    //GC.Collect();
                    MainWindow mw = new MainWindow();
                    mw.Show();
                    this.Close();
                }
                btnReset.IsEnabled = true;
            }
            catch (EnrollmentException exception)
            {
                lblStatus.Content = "Cannot enroll speaker: " + exception.Message;
            }
            catch (Exception gexp)
            {
                lblStatus.Content = "Error: " + gexp.Message;
            }
        }