Universal Windows App Development with Cortana and the Speech SDK 4

来源:互联网 发布:数据库三范式概念 编辑:程序博客网 时间:2024/05/09 01:56

4 Speech Recognition in Apps

4.1 Understanding In-App Speech Recognition

4.1.1 Speech Privacy Statement

User must accept the Privacy Statement

catch (Exception exception){const uint HResultPrivacyStatementDeclined=0x80045509;if ((uint)exception.HResult == HResultPrivacyStatementDeclined){var messageDialog=new Windows.UI.Popups.MessageDialog("You must accept the speech privacy policy to continue.", "Speecg Exception");messageDialog.ShowAsync().GetResults();this.recoEnabled=false;this.btnContinousRecognition.Content= "Start speech recognition";}else{txtResult.Text=exception.Message;}}

4.1.2 Speech Recognition Constraints


Pre-defined grammars

Custom Grammars (can work offline)
PhraseList

4.1.3 In Application Basic Speech Recognition

//windows phone store appprivate async Task<SpeechRecognitionResult> RecognizeSpeech(){SpeechRecognizer recognizer=new SpeechRecognizer();// one of three constraints types availableSpeechRecognitionTopicConstraint topicConstraint =new SpeechRecognitionTopicConstraint(SpeechRecognitionScenario.WebSearch,"MSDN");recongnizer.Constraints.Add(topicConstraint);await recognizer.ComplieConstarintAsync();// required//put up UI and recognize user's utteranceSpeechRecognitionResult result= await recognizer.RecognizeWithUIAsync();return result;}//calling code uses result.RecognitionResult.Text or result.RecognitionResult.SemanticInterpretation

create speech recognizer
create the constraint (type, constraint name)
add it to the recognizer
compile the constraint

private async void RecognizeWithDictationGrammar_Click(object sender, RoutedEventArgs e){// Create an instance of SpeechRecognizer.var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();// Compile the dictation grammar that is loaded by default.await speechRecognizer.CompileConstraintsAsync();this.heardYouSayTextBlock.Visibility = this.resultTextBlock.Visibility = Visibility.Collapsed;// Start recognition.try{Windows.Media.SpeechRecognition.SpeechRecognitionResult speechRecognitionResult = await speechRecognizer.RecognizeWithUIAsync();// If successful, display the recognition result.if (speechRecognitionResult.Status == Windows.Media.SpeechRecognition.SpeechRecognitionResultStatus.Success){this.heardYouSayTextBlock.Visibility = this.resultTextBlock.Visibility = Visibility.Visible;this.resultTextBlock.Text = speechRecognitionResult.Text;}}catch (Exception exception){if ((uint)exception.HResult == App.HResultPrivacyStatementDeclined){this.resultTextBlock.Visibility = Visibility.Visible;this.resultTextBlock.Text = "The privacy statement was declined.";}else{var messageDialog = new Windows.UI.Popups.MessageDialog(exception.Message, "Exception");messageDialog.ShowAsync().GetResults();}}}private async void Footer_Click(object sender, RoutedEventArgs e){await Windows.System.Launcher.LaunchUriAsync(new Uri(((HyperlinkButton)sender).Tag.ToString()));}}}


4.2 Programmatic List Grammars

Also as phrase list grammars


Deal with recognition confidence

4.3 Custom SRGS Grammars

SRGS (Speech Recognition Grammar Specification)
W3C stanrdar that allows you to create grammars for speech recognition scenarios ranging from basic to complex
- http://www.w3.org/TR/speech-grammar
Ideal for advanced speech recognition scenarios

Allow for complex combos across several rules 


4.4 Optimizing Speech Recognition

Using multiple grammars
Tuning Timeouts
Managing Audio Input Issues :   RecognitionQualityDegrade

4.5 Speech Recognition and Globalization
4.6 Speech Recognition Comparison Across Platforms

0 0
原创粉丝点击