MRが楽しい

MRやVRについて学習したことを書き残す

公式チュートリアル「MR and Azure 301 2~4章」を試してみる

本日はチュートリアルの実施枠です。
Academyの「MR and Azure 301: Language translation」の実施内容をまとめます。
docs.microsoft.com
前回記事の続きです。
bluebirdofoz.hatenablog.com
今回は「Chapter 2 ~ Chapter 4」です。

Chapter 2:Set up the Unity project

Chapter 3:Main Camera setup

チュートリアルページではプロジェクトの基本的な設定項目について全て手動で行っています。
これらの設定項目は MRTK を利用すれば自動で設定可能です。本記事では MRTK を利用します。

以下の手順ページの「HoloLens(WindowsMR) プロジェクトの基本設定」までを実施したプロジェクトを作成します。
bluebirdofoz.hatenablog.com
f:id:bluebirdofoz:20180807023046j:plain

InternetClient と Microphone の利用が必要なため、capabilites の設定を行います。
メニューから Mixed Reality Toolkit -> Configure -> Apply UWP Capability Settings を開きます。
f:id:bluebirdofoz:20180807023059j:plain

「Apply UWP Capability Settings」ダイアログが開くので、「InternetClient」と「Microphone」にチェックを入れて「Apply」を実行します。
f:id:bluebirdofoz:20180807023420j:plain

Chapter 4:Setup Debug Canvas

翻訳の入力と出力を表示するには、基本的なUIを作成する必要があります。
データを表示するためのいくつかの Text オブジェクトを持つCanvas UIオブジェクトを作成します。

1.hierarchy パネルの空の領域を右クリックして、UI -> Canvas でキャンバスを追加します。
2.キャンバスオブジェクトを選択した状態で、Inspector パネルを開き、「RenderMode」を「WorldSpace」に変更します。
3.次に、Inspector パネルの Rect Transform で次のパラメータを変更します。
Pos-X:0,Y:0,Z:40
Width:500
Height:300
Scale-X:0.13,Y:0.13,Z:0.13
f:id:bluebirdofoz:20180807023120j:plain

4.作成したキャンバスを右クリックして、UI -> Panel でパネルオブジェクトを追加します。
このパネルは、シーンに表示されるテキストの背景を提供します。
5.更に、作成したパネルを右クリックして、UI -> Text でテキストオブジェクトを追加します。
これを繰り返し、4つのテキストオブジェクトを作成します。
f:id:bluebirdofoz:20180807023129j:plain

6.各テキストオブジェクトの Inspector パネルを開き、それぞれ以下の通り設定します。
・RefTransformコンポーネント

NameTransform-PositionWidthHeight
MicrophoneStatusLabelX:-80,Y:90,Z:030030
AzureResponseLabelX:-80,Y:30,Z:030030
DictationLabelX:-80,Y:-30,Z:030030
TranslationResultLabelX:-80,Y:-90,Z:030030
・Text(Script)コンポーネント
NameTextFontSizeFontStyle
MicrophoneStatusLabelMicrophone Status:20Bold
AzureResponseLabelAzure Web Response:20Bold
DictationLabelYou just said:20Bold
TranslationResultLabelTranslation:20Bold
f:id:bluebirdofoz:20180807023139j:plain

7.更にこれらの各テキストオブジェクトに対して、子オブジェクトのテキストオブジェクトを作成します。
これらはアプリケーションの出力を表示します。
8.各テキストオブジェクトの Inspector パネルを開き、それぞれ以下の通り設定します。
・RefTransformコンポーネント

NameTransform-PositionWidthHeight
MicrophoneStatusTextX:0,Y:-30,Z:030030
AzureResponseTextX:0,Y:-30,Z:030030
DictationTextX:0,Y:-30,Z:030030
TranslationResultTextX:0,Y:-30,Z:030030
・Text(Script)コンポーネント
NameTextFontSizeAlignmentColor
MicrophoneStatusText??20Center0032EAFF
AzureResponseText??20Center0032EAFF
DictationText??20Center0032EAFF
TranslationResultText??20Center0032EAFF
f:id:bluebirdofoz:20180807023157j:plain

Chapter 4 はここまでです。
次回は Chapter 5 を実施します。
bluebirdofoz.hatenablog.com

公式チュートリアル「MR and Azure 301 1章」を試してみる

本日はチュートリアルの実施枠です。
Azure の勉強を兼ねて、Academyの「MR and Azure 301: Language translation」の実施内容を翻訳してまとめます。
docs.microsoft.com
docs.microsoft.com
今回は「概要 ~ Chapter 1」です。

概要

このコースでは「Azure Cognitive Servicesと「Translator Text API」を使用して、複合現実感アプリケーションに翻訳機能を追加する方法を学習します。
「Translator Text API」はリアルタイムで動作する翻訳サービスです。
このサービスはクラウドベースであり、REST API呼び出しを使用します。
アプリケーションは神経言語翻訳技術を利用してテキストを別の言語に翻訳することができます。

このコースを修了すると、次のことができる複合現実感のアプリケーションが作成されます:
1.ユーザーは、没入型(VR)ヘッドセット(またはHoloLensの内蔵マイク)に接続されたマイクに向かって話します。
2.アプリはディクテーションをキャプチャしてAzure Translator Text APIに送信します。
3.翻訳結果はUnity Sceneの簡単なUIグループに表示されます。

バイスのサポート

このコースは主に Windows Mixed Reality immersive(VR)ヘッドセットに焦点を当てています。
しかし、このコースで学んだことは Microsoft HoloLens にも適用可能です。
コースに沿って進むと、HoloLens をサポートするために必要となる変更に関する注記が表示されます。
HoloLens を使用すると、音声キャプチャ中にエコーが発生することがあります。

前提条件

このコースには、次のハードウェアとソフトウェアをお勧めします。
Windows Mixed Realityと互換性のある開発用PC
・開発者モードを有効にしたWindows 10 Fall Creators Update(またはそれ以降)
・最新のWindows 10 SDK
・Unity 2017.4
Visual Studio 2017
・開発者モードを有効にしたWindows Mixed Reality immersive(VR)ヘッドセットまたはMicrosoft HoloLens
・内蔵マイク付きヘッドフォンセット(ヘッドセットに内蔵マイクとスピーカーがない場合)
・Azureのセットアップと翻訳の検索のためのインターネットアクセス

Chapter 1:Azure Portal

Azure Translator APIを使用するには、アプリケーションで使用できるようにサービスのインスタンスを設定する必要があります。

1.Azure Portalにログインします。
(Azureログインについては以下記事でまとめています。)
bluebirdofoz.hatenablog.com

2.ログインしたら、左上隅の[リソースの作成]をクリックし、[Translator Text API]を検索します。Enterを実行します。
 [Translator Text API]が見つかるので、これを選択します。
f:id:bluebirdofoz:20180807022730j:plain

3.新しいページにTranslator Text API Serviceの説明が表示されます。
 このページの左下にある[作成]ボタンをクリックして、このサービスとの関連付けを作成します。
f:id:bluebirdofoz:20180807022832j:plain

4.作成をクリックしたら新しいページが表示されます。以下の各種情報を設定します。
a.このサービスインスタンスの希望する名前を挿入します。
b.利用するサブスクリプションを選択します。
c.あなたに適した価格設定ティアを選択します。
Translator Text API Service を初めて作成する場合は、無料のティア(F0という名前)をご利用いただけます。
d.リソースグループを選択するか、新しいリソースグループを作成します。
リソースグループは、Azureアセットの収集を監視し、アクセスを制御し、課金を管理し、管理する方法を提供します。
単一のプロジェクト(これらのラボなど)に関連付けられている全てのAzureサービスを共通のリソースグループに保つことをお勧めします。
3.リソースグループの場所を決定します(新しいリソースグループを作成する場合)。
場所は、アプリケーションが実行される領域にあるのが理想的です。一部のAzure資産は一部の地域でのみ利用可能です。
また、本サービスに適用される利用規約を理解したことを確認する必要があります。
各種情報を設定したら[作成]を選択します。
f:id:bluebirdofoz:20180807022842j:plain

5.Createをクリックすると、サービスが作成されるまで待つ必要がありますが、これには数分かかることがあります。
6.サービスインスタンスが作成されると、通知がポータルに表示されます。
7.通知をクリックすると、新しいサービスインスタンスが表示されます。[リソースに移動]を選択します。
f:id:bluebirdofoz:20180807022851j:plain

8.新しいTranslator Text API Serviceインスタンスの[Quick start]ページが表示されます。
f:id:bluebirdofoz:20180807022900j:plain

9.このチュートリアルでは、アプリケーションはサービスのサブスクリプションキーを使用してサービスを呼び出す必要があります。10.ナビゲーションメニューにある鍵のアイコンで示される[Keys」タブを開きます。これにより、サービスキーが表示されます。
(または、[Quick start]の[Grab your keys]にある[Keys]のリンクをクリックすることでも確認できます)
11.プロジェクトの後半で必要になるので、表示されたキーのコピーを取ってください。
f:id:bluebirdofoz:20180807022909j:plain


Chapter 1 はここまでです。
次回は Chapter 2 ~ 4 まで実施します。
bluebirdofoz.hatenablog.com

Microsoft Azureアカウントにサインインしてサブスクリプションを開始する

今回はアカウントの作成手順のまとめ枠です。
Microsoft Azure アカウントのサインインとサブスクリプションの開始手順をまとめます。

前提条件

Microsoft Azure にサインインするための Microsoft アカウントを事前に準備しているものとします。
Microsoft アカウントの作成手順は以下を参考にしてください。
bluebirdofoz.hatenablog.com

Microsoft Azure のサインイン手順

以下の Microsoft Azure のページを開きます。
azure.microsoft.com

右上のサインインをクリックします。
f:id:bluebirdofoz:20180806000307j:plain

Azure で利用する Microsoft アカウントを選択します。
f:id:bluebirdofoz:20180806000513j:plain

パスワードを入力して Microsoft アカウントにサインインします。
f:id:bluebirdofoz:20180806000603j:plain

サインインが完了すると、トップ画面に戻ります。
次は右上の「ポータル」ボタンをクリックします。
f:id:bluebirdofoz:20180806000620j:plain

Microsoft Azure のポータル画面が表示されます。
f:id:bluebirdofoz:20180806000631j:plain

サブスクリプションの設定

ポータル画面左下の「コストの管理と請求」を選択し、開かれた画面の「サブスクリプション」タブを開きます。
デフォルトではサブスクリプションがありません。「新しいサブスクリプション」を選択します。
f:id:bluebirdofoz:20180806000640j:plain

「プランの選択」ページが開きます。今回は「無料試用版」を利用してみます。
f:id:bluebirdofoz:20180806000650j:plain

「無料試用版」は最初の30日間のみ、\22,500 の Azure クレジットが利用可能です。
azure.microsoft.com

各種情報の入力を求められます。
クレジットカードの入力も必要ですが、今回は「無料版」のため、料金はかかりません。
全て入力を行ったら「サインアップ」をクリックします。
f:id:bluebirdofoz:20180806000711j:plain

以上でサブスクリプションの設定は完了です。
再び「サブスクリプション」タブに戻ると「無料試用版」のサブスクリプションが追加されています。
f:id:bluebirdofoz:20180806000728j:plain

Microsoftアカウントを作成する

今回はアカウントの作成手順についてです。
Microsoftアカウントの作成手順を記事にします。

Microsoft アカウントの作成手順

Microsoft アカウントは以下のページから作成可能です。
account.microsoft.com

ページ右上の「サインイン」をクリックします。
f:id:bluebirdofoz:20180805235404j:plain

サインイン画面が表示されるので、「作成」リンクをクリックします。
f:id:bluebirdofoz:20180805235414j:plain

既存のメールアドレスで作成するか、新規メールアドレスで作成します。
新規メールアドレスの場合「新しいメールアドレスを取得」リンクをクリックします。
f:id:bluebirdofoz:20180805235427j:plain

作成するメールアドレスを入力して「次へ」をクリックします。
f:id:bluebirdofoz:20180805235438j:plain

アカウントパスワードを入力して「次へ」をクリックします。
f:id:bluebirdofoz:20180805235445j:plain

認証画像の文字列を入力して「次へ」をクリックします。
f:id:bluebirdofoz:20180805235453j:plain

以上でアカウントの作成は完了です。
ページが更新されると、サインイン状態になっています。
f:id:bluebirdofoz:20180805235733j:plain

UnityでのHoloLens(WindowsMR)プロジェクトの作成手順(インストール編)

本日は HoloLens の技術調査枠です。
前回記事の続きです。
bluebirdofoz.hatenablog.com

本記事は Unity プロジェクトのシーンを作成後、UWP アプリを HoloLens にインストールすまでの手順になります。
f:id:bluebirdofoz:20190309144041j:plain

開発環境の準備

開発環境として Visual Studio のインストールが必要になります。
前回記事で以下の Unity のインストールを実施していれば、Visual Studio は同時にインストールされています。
bluebirdofoz.hatenablog.com

HoloLensの準備

Visual Studioが接続できるように HoloLens の開発者モードを有効化する必要があります。
「設定」アプリを開き、「更新とセキュリティ」を選択します。
f:id:bluebirdofoz:20180804234401j:plain

「開発者向け」タブを開き、「開発者向け機能を使う」のチェックボックスを ON に切り替えます。
f:id:bluebirdofoz:20180804234410j:plain
これで HoloLens が「開発者モード」となり、ローカルで作成したアプリをインストール可能になります。

Unityプロジェクトのビルド

対象の Unity プロジェクトをビルドして VisualStudio プロジェクトを作成します。
メニューから File -> Build Settings を開きます。
f:id:bluebirdofoz:20190309144459j:plain

「Build Settings」ダイアログが開くので「Build」ボタンをクリックします。
(このとき、「Build Settings」にエラーメッセージが表示される場合は後述の「Unity 2018 以降の注意点」を確認下さい)
f:id:bluebirdofoz:20190309144510j:plain

出力フォルダの指定を要求されるので、ディレクトリを作成して「フォルダーの選択」をクリックします。
f:id:bluebirdofoz:20190309144521j:plain

ビルドが完了すると、指定ディレクトリに sln ファイルが生成されます。
f:id:bluebirdofoz:20190309144556j:plain

UWPアプリのビルドとインストールの実行

Unity プロジェクトのビルドで作成した sln ファイルを開きます。
f:id:bluebirdofoz:20180804234425j:plain

ビルド設定を「Release」「x86」に変更します。
f:id:bluebirdofoz:20180804234440j:plain

HoloLens を USB ケーブルで PC に繋いでいる場合は、インストール先を「Device」に設定します。
f:id:bluebirdofoz:20180804234458j:plain

同一ネットワーク上に接続した状態の場合は、インストール先を「リモートコンピューター」に設定し、IP アドレスを設定します。
f:id:bluebirdofoz:20180804234509j:plain

IP アドレスの設定はメニューから デバッグ -> (プロジェクト名)のプロパティ を開きます。
プロパティページダイアログが開くので、コンピュータ名に IP アドレスを指定します。
f:id:bluebirdofoz:20180804234520j:plain

メニューから デバッグ -> デバッグなしで開始 を選択すると、HoloLens へのインストールが開始されます。
f:id:bluebirdofoz:20180804234551j:plain

PIN の入力

初めて「リモートコンピューター」へのインストールを実施する場合は以下のダイアログが表示され、PIN の入力を要求されます。
f:id:bluebirdofoz:20180804234602j:plain

HoloLensで「設定」アプリを開き、「更新とセキュリティ」を選択します。
f:id:bluebirdofoz:20180804234609j:plain

「開発者向け」タブを開き、「デバイスの検出」欄にある「ペアリング」ボタンをタップします。
f:id:bluebirdofoz:20180804234617j:plain

すると、PIN が表示されるのでこれを先ほどのダイアログに入力し、「OK」をクリックします。
f:id:bluebirdofoz:20180804234633j:plain

RS5 Insider Preview(日本語版)で日本語認識を試す(KeywordRecognizer編)

本日は RS5 の技術調査枠です。
RS5 Insider Preview(日本語版)で日本語認識を試す方法をまとめます。
今回は KeywordRecognizer を用いてみます。

プロジェクトの作成

以下の手順ページの「HoloLens(WindowsMR) プロジェクトの基本設定」までを実施したプロジェクトを作成します。
bluebirdofoz.hatenablog.com
f:id:bluebirdofoz:20180803060231j:plain

シーンの作り込み

以下ページのサンプルスクリプト KeywordScript.cs を作成します。
docs.unity3d.com
f:id:bluebirdofoz:20180803060350j:plain

ただ、このままだと結果をログ確認する必要があるため、テキストUIへの出力機能を追加します。
以下のようにスクリプトを修正しました。

using System;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Windows.Speech;

public class KeywordScript : MonoBehaviour
{
    [SerializeField]
    private string[] m_Keywords;

    [SerializeField]
    private Text m_TextMessage;

    private KeywordRecognizer m_Recognizer;

    void Start()
    {
        m_Recognizer = new KeywordRecognizer(m_Keywords);
        m_Recognizer.OnPhraseRecognized += OnPhraseRecognized;
        m_Recognizer.Start();
    }

    private void OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        StringBuilder builder = new StringBuilder();
        builder.AppendFormat("{0} ({1}){2}", args.text, args.confidence, Environment.NewLine);
        builder.AppendFormat("\tTimestamp: {0}{1}", args.phraseStartTime, Environment.NewLine);
        builder.AppendFormat("\tDuration: {0} seconds{1}", args.phraseDuration.TotalSeconds, Environment.NewLine);
        Debug.Log(builder.ToString());
        m_TextMessage.text += arg.text + "\n";
    }
}

空の GameObject を作成して DictationScript をアタッチします。
f:id:bluebirdofoz:20180803060403j:plain

結果確認用のテキストオブジェクトを作成します。
HoloLens のワールド空間上にキャンバスを出力するため、Render Mode は World Space にします。
f:id:bluebirdofoz:20180803060415j:plain

テキストオブジェクトを KeywordScript の TextMessage に設定します。
f:id:bluebirdofoz:20180803060427j:plain

最後に、認識させたい言葉を Keywords に登録します。
f:id:bluebirdofoz:20180803060438j:plain

Capability の設定

Dictation を用いるには、アプリに Microphone の Capabillity を設定する必要があります。
メニューから Mixed Reality Toolkit -> Configure -> Apply UWP Capability Settings を開きます。
f:id:bluebirdofoz:20180803060458j:plain

「Apply UWP Capability Settings」ダイアログが開くので、「Microphone」にチェックを入れて「Apply」を実行します。
f:id:bluebirdofoz:20180803060507j:plain

プロジェクトのビルド

以上でアプリの作成は完了です。プロジェクトをビルドして、HoloLens にインストールします。
f:id:bluebirdofoz:20180803060516j:plain

動作確認

アプリを起動すると、マイク利用の許可確認が表示されます。
「はい」をタップします。
f:id:bluebirdofoz:20180803060524j:plain

登録したキーワードを喋ると、認識されたキーワードがテキスト出力されます。
f:id:bluebirdofoz:20180803060537j:plain

RS5 Insider Preview(日本語版)で日本語認識を試…せた?

本日は RS5 の技術調査枠です。
RS5 Insider Preview(日本語版)で日本語認識を試した手順をまとめます。

RS5 で日本語版 OS を利用すると、UnityEngine.Windows.Speech で日本語が認識できるという報告がありました。


是非、試してみます。

プロジェクトの作成

以下の手順ページの「HoloLens(WindowsMR) プロジェクトの基本設定」までを実施したプロジェクトを作成します。
bluebirdofoz.hatenablog.com
f:id:bluebirdofoz:20180802072104j:plain

シーンの作り込み

以下ページのサンプルスクリプト DictationScript.cs を作成します。
docs.unity3d.com
f:id:bluebirdofoz:20180802072629j:plain

以下の UnityEditor の一行は UWP へのビルド時にエラーになるので消しておきます。

using UnityEditor;

空の GameObject を作成して DictationScript をアタッチします。
f:id:bluebirdofoz:20180802072347j:plain

出力用のテキストオブジェクトを2つ作成します。
HoloLens のワールド空間上にキャンバスを出力するため、Render Mode は World Space にします。
f:id:bluebirdofoz:20180802072322j:plain

それぞれのテキストオブジェクトを DictationScript の Hypotheses と Recognitions に設定します。
f:id:bluebirdofoz:20180802072357j:plain

Capability の設定

Dictation を用いるには、アプリに Microphone と InternetClient の Capabillity を設定する必要があります。
メニューから Mixed Reality Toolkit -> Configure -> Apply UWP Capability Settings を開きます。
f:id:bluebirdofoz:20180802072408j:plain

「Apply UWP Capability Settings」ダイアログが開くので、「Microphone」と「Internet Client」にチェックを入れて「Apply」を実行します。
f:id:bluebirdofoz:20180802072421j:plain

プロジェクトのビルド

以上でアプリの作成は完了です。プロジェクトをビルドして、HoloLens にインストールします。
f:id:bluebirdofoz:20180802072435j:plain

エラー?

結果、初回起動時は正常に日本語で音声認識が動作しました。
しかし、その後2回目の起動以降は DictationHypothesis のイベントが全く起こらず、音声認識が行えない問題が発生しました。
再起動、再インストールを行っても復旧せず。
初回は正常に動作していたことから OS レベルの設定が変わったものと考えられますが、原因箇所が特定できませんでした。
一旦保留とします。
(更に言うと初回時は 「Internet Client」の Capability の設定を忘れていたのに動いていたように見えて更に困惑……以下によると必要なはずなのだが……エビデンス取りが甘かった)
docs.microsoft.com