見出し画像

Magic Leap2 の 音声入力について

はじめに

この記事は、Magic Leap2 Advent Calendar 2022 の9日目です。
Magic Leap2 の音声入力する方法 について説明します。


OnePlanet XR について

https://1planet.co.jp/xrconsulting.html

このブログ記事は OnePlanet XR によるものです。
OnePlanet XR は、AR/MR/VPS技術に専門特化したコンサルティングサービスです。豊富な実績を元に、AR/MR技術を活用した新たな事業の立ち上げ支援や、社内業務のデジタル化/DX推進など、貴社の必要とするイノベーションを実現いたします。

ご相談から受け付けております。ご興味ございましたらお問い合わせください。


Magic Leap2 の 音声入力する方法

Magic Leap2 では音声入力に対応しています。事前に音声入力するテキストを定義し、アプリケーションに組み込むことでマイクで拾った音声が、定義済みのテキストであればイベントが発行されます。

Magic Leap2 は英語と日本語の音声入力をサポートしています。(漢字やMagic Leapなどの英語でもカタカナ発音に反応します。)
今回は音声入力の実装する方法について説明します。


開発環境 / 動作環境

Unity Editor 2022.2.0b8.3023
Magic Leap SDK 1.1.0-dev1
Magic Leap XR Plugin 7.0.0.pre.1
Magic Leap2 OS 1.1.0-dev1 (B3E.221020.13-R.039_40)


事前準備

Magic Leap2 の 設定

Magic Leap の 音声コマンドをONにします。


ヒエラルキー

シーンを新規作成します。Main Cameraは削除し、XR Rigのプレファブをヒエラルキーに配置します。
Game Objectを作成し、名前を Voice Input Example にします。


Voice Intents Configuration の生成

メニューの Assets → Create → Magic Leap → Voice Intents Configuration を選択します。生成されたVoice Intents Configurationに以下の設定を行います。Element毎に一意となるIDと登録したい音声を設定します。( | を使用することで、いずれかの音声にヒットしたらイベントを発行するといった表記もできます。)


VoiceInputExample

Voice Input Example の Game Object にアタッチするVoiceInputExampleというスクリプトを作成します。

スクリプトは以下になります。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.MagicLeap;
using TMPro;

public class VoiceInputExample : MonoBehaviour
{
    [SerializeField]
    private MLVoiceIntentsConfiguration _voiceConfiguration;

    [SerializeField]
    private TextMeshProUGUI result;

    // Start is called before the first frame update
    void Start()
    {
        MLResult result = MLVoice.SetupVoiceIntents(_voiceConfiguration);

        if (result.IsOk)
        {
            MLVoice.OnVoiceEvent += OnVoiceEvent;
        }
        else
        {
            Debug.LogError("Failed to Setup Voice Intents with result: " + result);
        }
    }

    private void OnVoiceEvent(in bool wasSuccessful, in MLVoice.IntentEvent voiceEvent)
    {
        result.text = voiceEvent.EventID + ":" + voiceEvent.EventName;
    }
}


音声入力のテキスト表示

音声入力のテキスト表示用のUIを作成します。以下の記事に従って構築してください。

上記の記事で作成したText(TMP)を VoiceInputExample のresult フィールドに設定してください。

Text Mesh Pro の 日本語表示

Text Mesh Pro の標準の状態では日本語の表示ができません。(文字化けします。)日本語の表示を行う方法については以下を参考にしてください。


フィールド設定

生成したVoice Intent Configuration と 音声入力のテキスト表示で作成したText (TMP)を設定します。


実行

Voice Intent Configurationで設定したテキストを声に出すと、Magic Leap2 のマイクで拾った音声が登録したテキストに該当していればイベントが発行され、テキストに表示されます。


OnePlanet XR

https://1planet.co.jp/xrconsulting.html

AR/MR/VPS技術に専門特化したコンサルティングサービス

Magic Leap2 を使ったソリューションのご検討の方からのお問い合わせ、お待ちしております。


お問い合わせ先

https://1planet.co.jp/xrconsulting.html#op_form


OnePlanet Tech Magazine

Magic Leap 1 、Magic Leap2 、スマホAR(Niantic Lightship ARDK、WebAR、VPSなど)といったAR技術全般をブログマガジンを連載しています。