/// <summary> /// Initialize the speaker information /// </summary> private async void initializeSpeaker() { IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); string _savedSpeakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME); if (_savedSpeakerId != null) { _speakerId = new Guid(_savedSpeakerId); } record.IsEnabled = false; if (_speakerId == Guid.Empty) { bool created = await createProfile(); if (created) { refreshPhrases(); } } else { setStatus("Using profile Id: " + _speakerId.ToString()); refreshPhrases(); string enrollmentsStatus = _storageHelper.readValue(MainWindow.SPEAKER_ENROLLMENTS); if ((enrollmentsStatus != null) && (enrollmentsStatus.Equals("Done"))) { resetBtn.IsEnabled = true; } } }
/// <summary> /// Creates a speaker profile /// </summary> /// <returns>A boolean indicating the success/failure of the process</returns> private async Task <bool> createProfile() { setStatus("Creating Profile..."); try { Stopwatch sw = Stopwatch.StartNew(); CreateProfileResponse response = await _serviceClient.CreateProfileAsync("en-us"); sw.Stop(); setStatus("Profile Created, Elapsed Time: " + sw.Elapsed); IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); _storageHelper.writeValue(MainWindow.SPEAKER_FILENAME, response.ProfileId.ToString()); _speakerId = response.ProfileId; return(true); } catch (CreateProfileException exception) { setStatus("Cannot create profile: " + exception.Message); return(false); } catch (Exception gexp) { setStatus("Error: " + gexp.Message); return(false); } }
/// <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); } }
/// <summary> /// Remove current speaker Id /// </summary> /// <param name="sender">Sender object responsible for event</param> /// <param name="e">A set of arguments sent to the listener</param> private async void resetBtn_Click(object sender, RoutedEventArgs e) { try { setStatus("Resetting profile: " + _speakerId); await _serviceClient.ResetEnrollmentsAsync(_speakerId); setStatus("Profile reset"); IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); resetBtn.IsEnabled = false; Profile profile = await _serviceClient.GetProfileAsync(_speakerId); setDisplayText(profile.RemainingEnrollmentsCount.ToString(), ""); _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, profile.RemainingEnrollmentsCount.ToString()); _storageHelper.writeValue(MainWindow.SPEAKER_PHRASE_FILENAME, ""); _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENT_STATUS, "Empty"); } catch (ResetEnrollmentsException exp) { setStatus("Cannot reset Profile: " + exp.Message); } catch (Exception gexp) { setStatus("Error: " + gexp.Message); } }
/// <summary> /// Initialization constructor for the verify speaker page /// </summary> public VerifySpeakerPage() { InitializeComponent(); try { _subscriptionKey = ((MainWindow)Application.Current.MainWindow).SubscriptionKey; IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); string _savedSpeakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME); if (_savedSpeakerId != null) { _speakerId = new Guid(_savedSpeakerId); } if (_speakerId == Guid.Empty) { ((MainWindow)Application.Current.MainWindow).Log("You need to create a profile and complete enrollments first before verification"); recordBtn.IsEnabled = false; stopRecordBtn.IsEnabled = false; } else { initializeRecorder(); _serviceClient = new SpeakerVerificationServiceClient(_subscriptionKey); string userPhrase = _storageHelper.readValue(MainWindow.SPEAKER_PHRASE_FILENAME); userPhraseTxt.Text = userPhrase; stopRecordBtn.IsEnabled = false; } } catch (Exception gexp) { setStatus("Error: " + gexp.Message); recordBtn.IsEnabled = false; stopRecordBtn.IsEnabled = false; } }
/// <summary> /// Creates a speaker profile /// </summary> /// <returns>A boolean indicating the success/failure of the process</returns> private async Task <bool> createProfile() { setStatus("Creating Profile..."); try { Stopwatch sw = Stopwatch.StartNew(); CreateProfileResponse response = await _serviceClient.CreateProfileAsync("en-us"); sw.Stop(); setStatus("Profile Created, Elapsed Time: " + sw.Elapsed); IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); _storageHelper.writeValue(MainWindow.SPEAKER_FILENAME, response.ProfileId.ToString()); _speakerId = response.ProfileId; Profile profile = await _serviceClient.GetProfileAsync(_speakerId); setDisplayText(profile.RemainingEnrollmentsCount.ToString(), ""); _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, profile.RemainingEnrollmentsCount.ToString()); _storageHelper.writeValue(MainWindow.SPEAKER_PHRASE_FILENAME, ""); _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENT_STATUS, "Empty"); return(true); } catch (CreateProfileException exception) { setStatus("Cannot create profile: " + exception.Message); return(false); } catch (Exception gexp) { setStatus("Error: " + gexp.Message); return(false); } }
/// <summary> /// Creates an Instance of the storage helper /// </summary> /// <returns></returns> public static IsolatedStorageHelper getInstance() { if (s_helper == null) { s_helper = new IsolatedStorageHelper(); } return(s_helper); }
/// <summary> /// Initialize the speaker information /// </summary> private async void initializeSpeaker() { IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); string _savedSpeakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME); if (_savedSpeakerId != null) { _speakerId = new Guid(_savedSpeakerId); } record.IsEnabled = false; if (_speakerId == Guid.Empty) { bool created = await createProfile(); if (created) { refreshPhrases(); } resetBtn.IsEnabled = false; } else { setStatus("Using profile Id: " + _speakerId.ToString()); refreshPhrases(); string remEnrollments = _storageHelper.readValue(MainWindow.SPEAKER_ENROLLMENTS); int _remainingEnrollments; if (!Int32.TryParse(remEnrollments, out _remainingEnrollments)) { Profile profile = await _serviceClient.GetProfileAsync(_speakerId); _remainingEnrollments = profile.RemainingEnrollmentsCount; _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, _remainingEnrollments.ToString()); } string enrollmentStatus = _storageHelper.readValue(MainWindow.SPEAKER_ENROLLMENT_STATUS); if (enrollmentStatus != null && !enrollmentStatus.Equals("Empty")) { resetBtn.IsEnabled = true; } setDisplayText(_remainingEnrollments.ToString(), _storageHelper.readValue(MainWindow.SPEAKER_PHRASE_FILENAME)); } }
/// <summary> /// Initialization constructor for the verify speaker page /// </summary> public VerifySpeakerPage() { InitializeComponent(); _subscriptionKey = ((MainWindow)Application.Current.MainWindow).SubscriptionKey; IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); _speakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME); if (_speakerId == null) { ((MainWindow)Application.Current.MainWindow).Log("You need to create a profile and complete enrollments first before verification"); recordBtn.IsEnabled = false; stopRecordBtn.IsEnabled = false; } else { initializeRecorder(); _serviceClient = new SpeechVerificationServiceClient(_subscriptionKey); string userPhrase = _storageHelper.readValue(MainWindow.SPEAKER_PHRASE_FILENAME); userPhraseTxt.Text = userPhrase; stopRecordBtn.IsEnabled = false; } }
/// <summary> /// Remove current speaker Id /// </summary> /// <param name="sender">Sender object responsible for event</param> /// <param name="e">A set of arguments sent to the listener</param> private async void resetBtn_Click(object sender, RoutedEventArgs e) { try { setStatus("Resetting profile: " + _speakerId); await _serviceClient.ResetEnrollmentsAsync(_speakerId); setStatus("Profile reset"); IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, "Empty"); resetBtn.IsEnabled = false; remEnrollText.Text = ""; verPhraseText.Text = ""; } catch (ResetEnrollmentsException exp) { setStatus("Cannot reset Profile: " + exp.Message); } catch (Exception gexp) { setStatus("Error: " + gexp.Message); } }
/// <summary> /// Persists the verification phrase of the speaker /// </summary> /// <param name="phrase">The user phrase</param> private void setUserPhrase(string phrase) { IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance(); _storageHelper.writeValue(MainWindow.SPEAKER_PHRASE_FILENAME, phrase); }
/// <summary> /// Creates an Instance of the storage helper /// </summary> /// <returns></returns> public static IsolatedStorageHelper getInstance() { if (s_helper == null) s_helper = new IsolatedStorageHelper(); return s_helper; }