簡易翻訳機を作ってみる その4 翻訳対象を声で入力する
今回は下記の続きで、前回キーボードから入力していた翻訳元の文字を、音声で入力するようにします。
xr-physics-work-etc.hatenablog.com
前回の記事で、DictationHandlerをつかっては?とのアドバイスをいただいたので、さっそく使ってみます。
準備
MRTKのプロファイル設定を行います。
この設定は、MRTK2.7時点でも同じように実施できるため、参考記事の「プロファイルの設定」を参照し実施しました。
設定を完了すると、MixedRealityToolkit
コンポーネントは以下のような状態になります。
Dictationのオン/オフはトグルボタンで切り替えます。
そのため、MRTK Toolboxからトグルボタンを選択し、シーン上に追加、任意の場所に移動します。
わかりやすいように、トグルボタンが有効な時はBackPlateが赤色になるようにします。
HolographicBackPlateRecordingState
マテリアルをトグルが有効になった場合に表示されるBackPlateToggleState
オブジェクトの子オブジェクトであるQuad
に適用します。
次に実際にDictationを使用するために、DictationHandler
をアタッチします。
今回は、前回翻訳結果表示に使用したTranslateResult
オブジェクトにアタッチしました。
音声入力されている場合、途中経過と結果をInputFiledに出力し、音声認識終了後に自動で翻訳されるようにするため、OnDictationHypothesis
とOnDictationComplete
にInputFIledのTMP_Inputfiled.SetTextWithoutNotify
を設定し、OnDictationComplete
にはTranslateTest.StartTranslate
を追加で設定します。
現在の設定だと、誤入力された場合にも翻訳されてしまうので、音声入力の精度によっては翻訳は手動で行ったほうが良いかもしれません。
また、録音時間は規定値の10秒だと短いので、100秒に設定しています。
次に、先ほど追加したトグルボタンのInteractable
にDictation開始、終了のためのイベントを設定します。
必要に応じてAdd Eventボタンを使い表示を増やし、Evetn Receiever Type
にInteractableOnToggleReceiver
を設定します。
そのあと、OnSelectにDictationHandler.StartRecording
、OnDelectにdictationHandler.StopRecording
を設定します。
これで、音声認識で入力された文字列を元に翻訳する準備ができました。
動作確認
音声入力での翻訳元文字列入力ができました。
たまに誤認識もありますが、手動で文章も修正できるのでキーボード入力よりは早いです。
前回アドバイスもらったDictationHandlerを組み込んでみた。
— napo tech (@SubNapo) October 24, 2021
音声認識のデモだが、諸事情で音声はカット pic.twitter.com/ljgeHrloit
今回は短いですがここまで。
次回は翻訳後文章の自動読み上げを試します。