Windows Phone 8 SpeechRecognizerUI

  • 1932
  • 0
  • 2012-11-06

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.執行專案若發生這個錯要不擔心不是程式錯,是要設定幾個選項打勾就可以允許程式控制硬體設備

image

3.在方案總管展開Properties目錄匣看到WMAppManifest.xml在給你用滑鼠點二下就出現下面的設定畫面,找到ID_CAP_MICROPHONE跟ID_CAP_SPEECH_RECOGNITION鉤一下

image

4.怎麼會這樣居然中文不支援,我明明打的是英文字呀。

image

5.只好把手機變成英語的語言來試看看

2

6.可以了執行了太好了說英文喔不要說中文會聽不懂

3

7.我給他說你好是中文聽不懂,系統會叫你在說一次啦

4

8.最後我說英語的play他有辦別到他辦別的文字不是你說的可以按下cancel鍵

5

10.最後取得聆聽視窗所辦別的字串及精準度,可能是台灣人說話不標準吧可信度那麼低low

6

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.真的可以執行起來了不會騙人的,大聲說出你那天有空吧

1

13.系統辦別你說的文字

2

13.果然還是要說中文比較好玩,準精也比較好是High喔

3