Windows Phone 8 に聞いてもらおう
#wpdev_jp #wpjp
Windows Phone 8 のスピーチエンジンで話すことはできました。さぁ今度は聞いてもらいましょう。といっても自由にしゃべって理解してくれるまで機能はありません。できるのは、あらかじめ用意している選択肢から確認することです。
今回は質問に合わせてユーザーが3択から選んで答えるというもの。
using Windows.Phone.Speech.Recognition; using Windows.Phone.Speech.Synthesis; private async void Button_Click_1(object sender, RoutedEventArgs e) { SpeechSynthesizer synth = new SpeechSynthesizer(); await synth.SpeakTextAsync("どこのデバイスがほしいですか?");
SpeechRecognizerUI reco = new SpeechRecognizerUI(); reco.Recognizer.Grammars.AddGrammarFromList("device", new List<string> { "サムソン", "ノキア", "HTC" }); reco.Settings.ListenText = "どこのデバイスがほしいですか?"; reco.Settings.ExampleText = "サムソン,ノキア, HTC"; //ここで音声認識認識する SpeechRecognitionUIResult result = await reco.RecognizeWithUIAsync(); if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded) { await synth.SpeakTextAsync( result.RecognitionResult.Text + " はお勧めです"); } }
選択肢から認識するためのコードは、RecognizeWithUIAsync だけです。
デモアプリ製作開始!
では早速作ってみましょう。
- プロジェクト作成
- ボタンを追加
- ボタンをダブルクリック
- 上記のコードを追加(Using句2行と 関数内)
- 関数の行に async を追加
これが終わったら、ソリューションエクスプローラーの Properties フォルダの下の WMAppManifest.xml を開きます。
「機能」タブ の中から ID_CAP_SPEECH_RECOGNITION , そして、今回はマイクを使ってきてもらうので ID_CAP_MICROPHONE にもチェックを入れます。
これでOK。あとはF5キーを押してエミュレーターで実行してみましょう。
- まずは質問を聞いてきます。これは前回の話す機能。
- そしてあらかじめ回答の3択を用意しておいて、認識エンジンを動かします。
- うまく認識すると処理が進んで、認識した語句をテキストとして取得できます。
- せっかくテキストとして取得できたので最後にもう一度しゃべってもらっています。
まぁ、なんで意外にこれも使える機能だったりします。ちなみに、2つの語句のうち認識しづらかった場合は、どっち?と再度聞いてきます。この辺りもよくできています。