夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensでアプリ内で使用言語を切り替える。

本日はAzure およびHoloLens表現調査枠です。

現在Yubimozi HoloLensのリリースに向け最終的な機能の追加やUXの改善を行っています。

YubimoziHoloLensではAzure SpeechToTextを使用してユーザーの音声を使用してテキストの入力を実装しています。

redhologerbera.hatenablog.com

ここではHandMenuで入力ボタンを押すたびにAzure SpeechToTextの認識が始まります。

この際にLaungageManagerというオリジナルのコンポーネントで管理している現在の言語に応じて認識する音声言語を切り替えています。

  LauncageManager _lm;
        ... 
        if (_lm._isJapaneese)
        {
            translationConfig.SpeechRecognitionLanguage = "ja-JP";   
        }
        else
        {
            translationConfig.SpeechRecognitionLanguage = "en-US";
        }

これはApplication.systemLanguageによってアプリ起動時にユーザーが使用している言語を取得して決定しています。

redhologerbera.hatenablog.com

今回はアプリ内で自由に言語選択ができるように実装します。

〇UIの配置

今回はPressableButtonHoloLens2ToggleRadio_32x96を使用しました。

f:id:Holomoto-Sumire:20220319205926p:plain

現在日本語と英語の二種類のみに対応しているため2つのボタンを配置しました。

このボタンはアタッチされているInteractableコンポーネントの[IsToggled]のTrue、falseでラジオボタンがオンオフになります。

f:id:Holomoto-Sumire:20220319210458p:plain

[IsToggled]がTrue状態の場合画像のようにラジオボタンにチェックが付きます。

f:id:Holomoto-Sumire:20220319210702p:plain

〇言語を切り替える仕組み

次にボタンを押す際に呼び出す処理を加えます。LaungageManagerコンポーネントに以下の関数を追加しました。

    public void LaungageChange()
    {
        _isJapaneese = !_isJapaneese;
        _isEnglish = !_isEnglish;
    }

これは現在の言語を反転させる仕組みです。

配置したPressableButtonHoloLens2ToggleRadio_32x96ButtonConfigHelperコンポーネントのイベントでLaungageManagerコンポーネントの LaungageChangeを呼び出すとともに他の言語(日本語なら英語、英語なら日本語)のボタンのIsToggledをオフにする設定を行いました。

f:id:Holomoto-Sumire:20220319211403p:plain

これによってアプリ内で任意のタイミングで使用言語を切り替えることができるようになりました。

これでユーザーのデバイスのOSで英語を使用しており、アプリ起動時には英語の音声認識でAzure SpeechToTextが動いていても任意のタイミングで日本語の入力に切り替えられるようになりました。