2016-07-06 1 views
1

ユニバーサルWindowsデモアプリケーション(link)のSpeechAndTTSサンプルでは、​​連続したディクテーションの例でも、ユーザーが認識ツールを開始するためにボタンをクリックする必要があります。 enter image description hereSpeechRecognizerで "Hey Cortana"のようなアクティベーションフレーズを実装する方法は?

私は常に聞くSpeechRecognizerをどのように実装できますか? "Hey Cortana"や "Okay Google"のようなものを聞くと有効になります。

enter image description here

私は考えることができる最も近いものは、(例えば、「ねえコルタナ」)

  1. 場所だけ「目覚め言葉」に耳を傾けるspeechRecoginzer、上SpeechRecognitionListConstraintです
  2. ResultGeneratedイベントハンドラで、「Hey Cortana」が中程度の信頼度で聞こえるかどうかを確認します。 「Hey Cortana」が聞こえない場合は、speechRecognizer.CompileConstraintsAsync()を使用して、認識装置を強制的に再生します。
  3. Completedイベントハンドラでは、speechRecognizer.CompileConstraintsAsync()を使用して、認識プログラムを強制的に再生します。

私がチェックしたもう1つの点はspeechRecognizerTimeoutsです。 https://msdn.microsoft.com/en-us/library/windows.media.speechrecognition.speechrecognizertimeouts.aspx

しかし、私たちは無限を持つことはできません。InitialSilenceTimeout

したがって、「目覚め句」が聞こえるまで、聞き取りを停止しないspeechRecognizerを使用する方法はありますか?

答えて

2

私は常に聞くSpeechRecognizerをどのように実装できますか? "Hey Cortana"や "Okay Google"のようなものを聞くと有効になります。アプリは既にフォアグラウンドで実行されている場合

私たちが知っているように、我々は我々のアプリにコルタナを実装することはできません、我々はSpeechRecognitionを使用する必要があります。しかし、私たちはContinuous dictationを使ってこの仕事をすることができます。

でも、連続したディクテーションの例でも、ユーザーが認識装置を開始するためにボタンをクリックする必要があります。

はい、これは、await speechRecognizer.ContinuousRecognitionSession.StartAsync()がボタンクリックイベントに含まれているため、このイベントでセッション開始が機能するためです。ボタンクリックイベントなしで開始するには、メソッドでこのセッションを開始し、このセッションをOnNavigateFromメソッドで停止することができます。そして、もちろん、あなたは "起きるフレーズ"が聞こえるときにこのセッションを中止することができます。

私はあなたがCompletedイベントで待機するようにそれを強制することができ、あなたの心に同意するが、私はSpeechContinuousRecognitionSession.Completed | completed eventに、このようなspeechRecognizer.ContinuousRecognitionSession.StartAsync()を使用することを好む:

if (args.Status != SpeechRecognitionResultStatus.Success) 
{ 
    if (args.Status == SpeechRecognitionResultStatus.TimeoutExceeded) 
    { 
     await dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
     { 
      // Show the state on UI 
     }); 

     await speechRecognizer.ContinuousRecognitionSession.StartAsync(); 
    } 
    ... 
} 

そして、時間制限のために、私はちょうどテストし、デフォルトでは、Continuous dictationは最初は音声なしで約5秒間続き、その後状態のタイムアウトになります。そして、私もこのような時間を設定するためにテストした:

speechRecognizer.Timeouts.InitialSilenceTimeout = TimeSpan.FromSeconds(10.0); 

それは私の側で働いた。

実際のシナリオでは、公式のビデオ:Cortana and Speech Platform In Depthを参照することができます。このビデオのサンプルでは、​​「メモを取る」と「旅行を保存する」の2つの文を聴いています。

+0

ありがとうございました。特に、CortanaとSpeech in Depthビデオの場合。素晴らしい助け! – Blaise

+0

"メモを取る"/"旅行を保存する"アプリのソースコードはどこにありますか? – Blaise

+0

@Blaise、申し訳ありません、公式の[Cortana voice command sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/)を見ても、私はそれを見つけられませんでした。 CortanaVoiceCommand)、それはまた "AdventureWorks"ですが、あなたのシナリオは今のバージョンには含まれていません。 –

関連する問題