本日は MRTK の技術調査枠です。
MRTKのDictationHandlerを使って音声認識を行うディクテーション機能をプロジェクトに追加する手順を記事にします。
サンプルシーンの作成
MRTKのDictationHandler を使ったサンプルシーンを作成します。
MRTKのインポートと基本設定
MRTK のインポートと HoloLens 向けプロジェクトの基本設定を行います。
手順の詳細は以下の記事を参照してください。
bluebirdofoz.hatenablog.com
プロファイルの設定
ディクテーション機能を有効化するにはプロファイルに InputDataProvider を追加する必要があります。
プロファイルを編集可能にするため、カスタムプロファイルを作成します。
[MixedRealityToolkit]オブジェクトの Inspector ビューを開き、[Copy&Customize]でプロファイルをコピーします。
[Input]タブを開き、[InputSystemProfile]も同様に[Clone]でコピーします。
[InputDataProviders]の項目が編集可能になります。
[Add Data Provider]をクリックして新しい DataProvider を追加します。
[Type]項目から[Microsoft.MixedReality.Toolkit.Windows.Input -> WindowsDictationInputProvider]を選択します。
これでディクテーション機能のプロファイル設定が追加できました。
因みに本 WindowsDictationInputProvider は[Windows]関連のプラットフォームで有効です。
[Supported Platform]で確認できます。
DictationHandler
ディクテーションセッションの録画を開始および停止を行います。
書き起こされたテキストは UnityEvents を介して通知します。
docs.microsoft.com
プロパティ
Inspector ビューで設定できるプロパティの設定項目と参照可能な変数は以下の通りです。
プロパティ名 | 説明 |
---|---|
IsFocusRequired | 入力イベントを受信するためにオブジェクトへのフォーカスを必要とするかを設定します。 False 時は常に入力イベントが発生するようになります。 |
InitialSilenceTimeout | セッション開始時に音声が聞こえなかった場合、聞き取りセッションが終了するまでの時間を Inspector ビューから設定します。 単位:秒。 |
AutoSilenceTimeout | 途中の音声入力がないために聞き取りセッションが終了するまでの時間を Inspector ビューから設定します。 単位:秒。 |
RecordingTime | ディクテーションサービスが聞きセッションを行う時間を Inspector ビューから設定します。 単位:秒。 |
StartRecordingOnStart | 起動時に自動的にセッションを開始するかどうかを Inspector ビューから設定します。 True時は起動と同時に聞き取りセッションが自動的に開始します。 |
IsListening | 現在、聞き取りセッションが実行中か否かを取得します。 聞き取りセッション中は True が返ります。 |
AudioClip | 聞き取りセッションで取得された AudioClip を取得します。 |
Unityイベント
Inspector ビューで設定できる Unity イベントの実行タイミングは以下の通りです。
イベント名 | 説明 |
---|---|
OnDictationHypothesis | ユーザが会話を行ったときに発生します。 現在、聞き取り中の音声の大まかな書き起こしテキストを通知します。 |
OnDictationResult | ユーザの会話が一時的に停止したときに発生します。 そこまでに聞き取った音声の結果テキストを通知します。 |
OnDictationComplete | 聞き取りセッションが完了したときに発生します。 音声の完全かつ最終的な聞き取りテキストを生成して通知します。 |
OnDictatinoError | ディクテーションサービスでエラーが起きたときに発生します。 テキストにはエラーの説明文が含まれています。 |
呼び出しメソッド
聞き取りセッションを開始/停止するための呼び出しメソッドは以下の通りです。
メソッド名 | 説明 |
---|---|
StartRecording() | 聞き取りセッションを開始します。 |
StopRecording() | 聞き取りセッションを停止します。 |
シーンの構築
聞き取り結果を表示する Text オブジェクトと聞き取りを開始するトグルボタンをシーンに追加しました。
トグルボタンには DictationHandler の StartRecording と StopRecording を割り当てます。
DictationHandler の各イベントに Text オブジェクトへの参照を設定してシーンの構築は完了です。
また、今回はどこを見ていても聞き取りが行われるよう[IsFocusRequired]のチェックを外しました。
動作確認
アプリケーションを HoloLens2 にデプロイして動作を確認します。
ボタンをタップして聞き取りセッションを開始します。
設定した聞き取りセッションの時間内に話した言葉が Text に表示されれば成功です。
注意事項
以下の記事で試した通り、音声認識にはインターネット接続が必要です。
bluebirdofoz.hatenablog.com