WP8 SpeechRecognizerUI
SpeechRecognizerUI類別是啟用使用預設圖形使用者介面 (GUI) 的語音辨識,也就說開啟對話視窗接收你的聲音在轉成字串給你的應用程式。
1.首先開啟一個專案把下列程式碼放到貼到你的專案上,下面這段代碼用途為開啟一個聆聽視窗在 [聆聽] 頁面中顯示於範例文字上方的標題文字What are you doing?,在 [聆聽] 頁面上顯示的範例文字為Debug,Coding.......,最後當語音辨識工作階段的狀態為順利完成語音辨識(SpeechRecognitionUIStatus.Succeeded),把語音辨識工作階段的結果放到StatusText.Text 接著把所說的片語與現用文法中的片語相符的精確度放到 ConfidenceText.Text ,等級分(Rejected , Low ,Medium, High)相對取到High代表聲音轉成文字的精度是高。
1: private async void Button_Click_1(object sender, RoutedEventArgs e)
2: {
3:
4: SpeechRecognizerUI sr = new SpeechRecognizerUI();
5: sr.Settings.ListenText = "What are you doing?";
6: sr.Settings.ExampleText = "Debug,Coding.......";
7: sr.Settings.ReadoutEnabled = true;
8: sr.Settings.ShowConfirmation = true;
9: SpeechRecognitionUIResult result = await sr.RecognizeWithUIAsync();
10: if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded)
11: {
12: StatusText.Text = result.RecognitionResult.Text;
13: ConfidenceText.Text = result.RecognitionResult.TextConfidence.ToString();
14: }
15: }
2.執行專案若發生這個錯要不擔心不是程式錯,是要設定幾個選項打勾就可以允許程式控制硬體設備
3.在方案總管展開Properties目錄匣看到WMAppManifest.xml在給你用滑鼠點二下就出現下面的設定畫面,找到ID_CAP_MICROPHONE跟ID_CAP_SPEECH_RECOGNITION鉤一下
4.怎麼會這樣居然中文不支援,我明明打的是英文字呀。
5.只好把手機變成英語的語言來試看看
6.可以了執行了太好了說英文喔不要說中文會聽不懂
7.我給他說你好是中文聽不懂,系統會叫你在說一次啦
8.最後我說英語的play他有辦別到他辦別的文字不是你說的可以按下cancel鍵
10.最後取得聆聽視窗所辦別的字串及精準度,可能是台灣人說話不標準吧可信度那麼低low
11.中文真的不行玩嗎,我有找到一個方法還是可以玩的如下列語法試看看吧,差別在於使用預先定義的文法類型來建立 SpeechGrammar 物件,並將它加入至語音文法集,就是要先告訴系統有幾個答案等會你幫我判斷是那一個,接著把模擬器調回中文(繁體)在測一次吧
1: private async void Button_Click_1(object sender, RoutedEventArgs e)
2: {
3:
4: SpeechRecognizerUI sr = new SpeechRecognizerUI();
5: sr.Settings.ListenText = "目前空檔時間如下,請問要預約那一天?";
6: sr.Settings.ExampleText = "星期一,星期二,星期三,星期四,星期五,星期六,星期日";
7: sr.Settings.ReadoutEnabled = true;
8: sr.Settings.ShowConfirmation = true;
9: sr.Recognizer.Grammars.AddGrammarFromList("answer", new string[] { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" });
10: SpeechRecognitionUIResult result = await sr.RecognizeWithUIAsync();
11: if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded)
12: {
13: StatusText.Text = result.RecognitionResult.Text;
14: ConfidenceText.Text = result.RecognitionResult.TextConfidence.ToString();
15: }
16: }
12.真的可以執行起來了不會騙人的,大聲說出你那天有空吧
13.系統辦別你說的文字
13.果然還是要說中文比較好玩,準精也比較好是High喔