メインコンテンツまでスキップ
バージョン: 1.0.4

MiRZAでIP接続マイクの音声を録音する方法

WARNING

本ページに記載の環境は本記事執筆時点(2024/12/25)のものです。
アップデートによって変更が生じている可能性がある点ご留意ください。

はじめに

最近はARグラスサービスの開発に取り組んでいます。自社グループであるNTTコノキューデバイスから**MiRZA(ミルザ)**というXRグラスが発売されました。

今回は、このMiRZAに搭載されている IP接続マイクを使用して音声を録音し、その音声を再生する方法についてご紹介します!

前提/本記事の対象

・UnityでIP接続マイク(MiRZA等)を利用したいと考えている

・Unityエンジニア

構築環境

  • Windows 11
  • Unity 2022.3.27f1

構成図

IP型マイクはUnityだけでは録音を開始することができないため、ネイティブ機能を利用して実装しています。

録音が行われるまでの流れは以下の通りです:

  1. 録音開始
    スマホに表示されたボタンを押下すると、ネイティブ側で録音が開始されます。
  2. 録音停止
    再度ボタンを押下すると、ネイティブ側で録音が停止されます。
  3. Unityへのデータ送信
    録音された音声データがBase64形式にエンコードされ、Unity側に送信されます。

実装

Android(ネイティブ)側

ネイティブコードを利用するには、Androidネイティブプラグインを取得する必要があります。プラグインの取得方法については、以下の記事を参考にしました。

参考リンク: Androidネイティブプラグインの作成方法

実装内容

実装している内容を簡単に説明すると、以下のようになります:

  • Unityから録音開始の指示が呼び出された際、IP型マイクを検索し、見つかった場合は録音を開始します。
  • Unityから録音停止の指示が呼び出された際、録音を停止し、音声データをBase64形式にエンコードしてUnityに送信します。

利用するネイティブコード

Unity側

ゲームオブジェクトに以下の SpeechRecognitionManager.cs をアタッチします。

その際、Inspectorビューで録音の「開始」および「停止」ボタンを設定し、AudioSource をアタッチしてください。

このスクリプトでは、ボタンを押すことで録音の開始・停止をネイティブ側に指示します。また、録音した音声の再生機能と、(今回のテーマからは少し外れますが)GCPを使用して音声認識(STT)したテキストをMiRZA上に表示する機能を実現しています。

録音データ

録音したデータは以下のような内容になります。

この映像では環境音を含めていません。録音した音声をUnityで再生し、その音声をGCPのSTT(音声認識)でテキスト化して表示しています。

最後に

本来であれば、この音声データをコマンドとして利用し、グラス内で操作できる仕組みを作りたかったのですが、今回は時間が足りず実現できませんでした。