注意

Mixed Reality Academy チュートリアルは、HoloLens (第1世代) と Mixed Reality イマーシブヘッドセットを念頭に置いて設計されています。The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. そのため、これらのデバイスの開発に関するガイダンスをまだ探している開発者には、これらのチュートリアルを残しておくことが重要です。As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. これらのチュートリアルは いない 最新のツールセットや相互作用が使用されている HoloLens 2 で更新されます。These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. サポートされているデバイスでの作業を続行するために管理されます。They will be maintained to continue working on the supported devices. 今後、HoloLens 2 向けの開発方法を示す新しい一連のチュートリアルが掲載されています。There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. この通知は、これらのチュートリアルが投稿されたときのリンクと共に更新されます。This notice will be updated with a link to those tutorials when they are posted.


MR と Azure 301:言語翻訳MR and Azure 301: Language translation

このコースでは、Translator Text API と共に Azure Cognitive Services を使用して、混合の現実アプリケーションに翻訳機能を追加する方法について説明します。In this course, you will learn how to add translation capabilities to a mixed reality application using Azure Cognitive Services, with the Translator Text API.

最終製品

Translator Text API は、ほぼリアルタイムで動作する翻訳サービスです。The Translator Text API is a translation Service which works in near real-time. サービスはクラウドベースであり、REST API 呼び出しを使用して、アプリはニューラル機械翻訳テクノロジを利用してテキストを別の言語に変換できます。The Service is cloud-based, and, using a REST API call, an app can make use of the neural machine translation technology to translate text to another language. 詳細については、 Azure Translator Text API のページを参照してください。For more information, visit the Azure Translator Text API page.

このコースが完了すると、mixed reality アプリケーションが完成し、次のことができるようになります。Upon completion of this course, you will have a mixed reality application which will be able to do the following:

  1. ユーザーは、イマーシブ (VR) ヘッドセット (または HoloLens の内蔵マイク) に接続されているマイクに接続します。The user will speak into a microphone connected to an immersive (VR) headset (or the built-in microphone of HoloLens).
  2. アプリはディクテーションをキャプチャし、Azure Translator Text API に送信します。The app will capture the dictation and send it to the Azure Translator Text API.
  3. 翻訳結果は、Unity シーンの単純な UI グループに表示されます。The translation result will be displayed in a simple UI group in the Unity Scene.

このコースでは、翻訳サービスから Unity ベースのサンプルアプリケーションに結果を取得する方法について説明します。This course will teach you how to get the results from the Translator Service into a Unity-based sample application. これらの概念は、構築しているカスタムアプリケーションに適用する必要があります。It will be up to you to apply these concepts to a custom application you might be building.

デバイスのサポートDevice support

までCourse HoloLensHoloLens イマーシブ ヘッドセットImmersive headsets
MR と Azure 301:言語翻訳MR and Azure 301: Language translation ✔️✔️ ✔️✔️

注意

このコースでは主に Windows Mixed Reality イマーシブ (VR) ヘッドセットに焦点を当てていますが、このコースで学習した内容を Microsoft HoloLens に適用することもできます。While this course primarily focuses on Windows Mixed Reality immersive (VR) headsets, you can also apply what you learn in this course to Microsoft HoloLens. このコースに従うと、HoloLens をサポートするために必要となる可能性のある変更に関する注意事項が表示されます。As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. HoloLens を使用する場合、音声キャプチャ中にエコーが発生することがあります。When using HoloLens, you may notice some echo during voice capture.

必須コンポーネントPrerequisites

注意

このチュートリアルは、Unity とC#の基本的な経験を持つ開発者向けに設計されています。This tutorial is designed for developers who have basic experience with Unity and C#. また、このドキュメントに記載されている前提条件と記述に記載されている手順は、作成時にテストおよび検証されたものを表します (2018 年5月)。Please also be aware that the prerequisites and written instructions within this document represent what has been tested and verified at the time of writing (May 2018). ツールのインストール」の記事に記載されているように、最新のソフトウェアを自由に使用できます。ただし、このコースの情報は、以下に記載されているものよりも新しいソフトウェアで見つかったものと完全に一致するとは限りません。You are free to use the latest software, as listed within the install the tools article, though it should not be assumed that the information in this course will perfectly match what you'll find in newer software than what's listed below.

このコースでは、次のハードウェアとソフトウェアをお勧めします。We recommend the following hardware and software for this course:

開始前の準備Before you start

  • このプロジェクトのビルドで問題が発生しないように、このチュートリアルで説明されているプロジェクトをルートまたはほぼルートフォルダーに作成することを強くお勧めします (長いフォルダーパスはビルド時に問題を引き起こす可能性があります)。To avoid encountering issues building this project, it is strongly suggested that you create the project mentioned in this tutorial in a root or near-root folder (long folder paths can cause issues at build-time).

  • このチュートリアルのコードを使用すると、PC に接続されている既定のマイクデバイスから録音できます。The code in this tutorial will allow you to record from the default microphone device connected to your PC. 既定のマイクデバイスが、音声のキャプチャに使用する予定のデバイスに設定されていることを確認します。Make sure the default microphone device is set to the device you plan to use to capture your voice.

  • PC がディクテーションを有効にできるようにするには、設定 > プライバシー > 音声、インク & 入力し、音声サービスをオンにする ボタンを選択して、「候補」と入力します。To allow your PC to enable dictation, go to Settings > Privacy > Speech, inking & typing and select the button Turn On speech services and typing suggestions.

  • ヘッドセットに接続されている (または内蔵されている) マイクとヘッドホンを使用している場合は、[オーディオと音声を > Mixed reality > 設定] で "ヘッドセットを磨耗したときにヘッドセットのマイクに切り替える" オプションがオンになっていることを確認してください。If you're using a microphone and headphones connected to (or built-in to) your headset, make sure the option “When I wear my headset, switch to headset mic” is turned on in Settings > Mixed reality > Audio and speech.

    Mixed reality の設定

    マイクの設定

警告

このラボ用にイマーシブヘッドセットを開発している場合は、オーディオ出力デバイスの問題が発生する可能性があることに注意してください。Be aware that if you are developing for an immersive headset for this lab, you may experience audio output device issues. これは、unity の新しいバージョン (Unity 2018.2) で修正された Unity の問題に起因します。This is due to an issue with Unity, which is fixed in later versions of Unity (Unity 2018.2). この問題により、Unity は実行時に既定のオーディオ出力デバイスを変更できなくなります。The issue prevents Unity from changing the default audio output device at run time. 回避策として、上記の手順を完了していることを確認し、この問題が発生したときにエディターを閉じて再度開きます。As a work around, ensure you have completed the above steps, and close and re-open the Editor, when this issue presents itself.

章 1-Azure PortalChapter 1 – The Azure Portal

Azure Translator API を使用するには、アプリケーションで使用できるようにサービスのインスタンスを構成する必要があります。To use the Azure Translator API, you will need to configure an instance of the Service to be made available to your application.

  1. Azure Portalにログインします。Log in to the Azure Portal.

    注意

    まだ Azure アカウントを持っていない場合は、アカウントを作成する必要があります。If you do not already have an Azure account, you will need to create one. このチュートリアルを教室またはラボの状況で行っている場合は、新しいアカウントの設定について、インストラクターまたはそのいずれかの対処を依頼してください。If you are following this tutorial in a classroom or lab situation, ask your instructor or one of the proctors for help setting up your new account.

  2. ログインしたら、左上隅にある [新規] をクリックし、"Translator Text API" を検索します。Once you are logged in, click on New in the top left corner and search for "Translator Text API." Enter キーを押します。Select Enter.

    新しいリソース

    注意

    新しいポータルで、 Newという単語がリソースの作成に置き換えられました。The word New may have been replaced with Create a resource, in newer portals.

  3. 新しいページには、 Translator Text APIサービスの説明が表示されます。The new page will provide a description of the Translator Text API Service. このページの左下にある [作成] ボタンを選択して、このサービスとの関連付けを作成します。At the bottom left of this page, select the Create button, to create an association with this Service.

    Translator Text API サービスの作成

  4. 作成:Once you have clicked on Create:

    1. このサービスインスタンスに必要な名前を挿入します。Insert your desired Name for this Service instance.

    2. 適切なサブスクリプションを選択します。Select an appropriate Subscription.

    3. 適切な価格レベルを選択します。これがTranslator Text サービスを初めて作成する場合は、free レベル (F0) を使用できます。Select the Pricing Tier appropriate for you, if this is the first time creating a Translator Text Service, a free tier (named F0) should be available to you.

    4. リソースグループを選択するか、新しいリソースグループを作成します。Choose a Resource Group or create a new one. リソースグループは、Azure 資産のコレクションの課金を監視、制御する方法を提供します。A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. 1つのプロジェクトに関連付けられているすべての Azure サービス (たとえば、これらのラボなど) を共通のリソースグループに保持することをお勧めします。It is recommended to keep all the Azure Services associated with a single project (e.g. such as these labs) under a common resource group).

      Azure リソースグループの詳細については、リソースグループに関する記事をご覧ください。If you wish to read more about Azure Resource Groups, please visit the resource group article.

    5. リソースグループの場所を決定します (新しいリソースグループを作成している場合)。Determine the Location for your resource group (if you are creating a new Resource Group). この場所は、アプリケーションを実行するリージョンに配置するのが理想的です。The location would ideally be in the region where the application would run. 一部の Azure 資産は、特定のリージョンでのみ利用できます。Some Azure assets are only available in certain regions.

    6. また、このサービスに適用されている使用条件を理解していることを確認する必要があります。You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    7. [作成] を選択します。Select Create.

      [作成] ボタンを選択します。

  5. [作成] をクリックした後、サービスが作成されるまで待機する必要があります。これには1分かかることがあります。Once you have clicked on Create, you will have to wait for the Service to be created, this might take a minute.

  6. サービスインスタンスが作成されると、ポータルに通知が表示されます。A notification will appear in the portal once the Service instance is created.

    Azure サービスの作成に関する通知

  7. 通知をクリックして、新しいサービスインスタンスを探索します。Click on the notification to explore your new Service instance.

    リソースポップアップにアクセスします。

  8. 通知の [リソースへのジャンプ] ボタンをクリックして、新しいサービスインスタンスを探索します。Click the Go to resource button in the notification to explore your new Service instance. 新しい Translator Text API サービスインスタンスが表示されます。You will be taken to your new Translator Text API Service instance.

    Translator Text API サービス ページ

  9. このチュートリアルでは、アプリケーションがサービスの呼び出しを行う必要があります。サービスは、サービスのサブスクリプションキーを使用して実行されます。Within this tutorial, your application will need to make calls to your Service, which is done through using your Service’s Subscription Key.

  10. Translator Textサービスの [クイックスタート] ページで、最初の手順に移動し、キーをつかんで、[キー ] をクリックします (これは、[サービス] ナビゲーションメニューにある青いハイパーリンクキーをクリックして行うこともできます。キーアイコンで示されます)。From the Quick start page of your Translator Text Service, navigate to the first step, Grab your keys, and click Keys (you can also achieve this by clicking the blue hyperlink Keys, located in the Services navigation menu, denoted by the key icon). これにより、サービスキーが表示されます。This will reveal your Service Keys.

  11. 表示されているキーの1つをコピーします。これは、プロジェクトの後半で必要になります。Take a copy of one of the displayed keys, as you will need this later in your project.

第2章: Unity プロジェクトを設定するChapter 2 – Set up the Unity project

Mixed reality のイマーシブヘッドセットをセットアップしてテストします。Set up and test your mixed reality immersive headset.

注意

このコースでは、モーションコントローラーは必要ありません。You will not need motion controllers for this course. イマーシブヘッドセットの設定をサポートする必要がある場合は、次の手順に従ってください。If you need support setting up an immersive headset, please follow these steps.

次に示すのは、mixed reality で開発するための一般的な設定であり、他のプロジェクトに適したテンプレートです。The following is a typical set up for developing with mixed reality and, as such, is a good template for other projects:

  1. Unityを開き、[新規] をクリックします。Open Unity and click New.

    新しい Unity プロジェクトを開始します。

  2. ここで、Unity プロジェクト名を指定する必要があります。You will now need to provide a Unity Project name. MR_Translationを挿入します。Insert MR_Translation. プロジェクトの種類が3dに設定されていることを確認します。Make sure the project type is set to 3D. 場所を適切な場所に設定します (ルートディレクトリの方が適していることに注意してください)。Set the Location to somewhere appropriate for you (remember, closer to root directories is better). 次に、[プロジェクトの作成] をクリックします。Then, click Create project.

    新しい Unity プロジェクトの詳細を指定します。

  3. 既定値を確認する必要が開いている Unity、 スクリプト エディター に設定されている Visual Studio します。With Unity open, it is worth checking the default Script Editor is set to Visual Studio. [ > の設定の編集] に移動し、新しいウィンドウで [外部ツール] に移動します。Go to Edit > Preferences and then from the new window, navigate to External Tools. 変更 External Script EditorVisual Studio 2017 します。Change External Script Editor to Visual Studio 2017. [基本設定] ウィンドウを閉じます。Close the Preferences window.

    スクリプトエディターの設定を更新します。

  4. 次に、[ファイル > ビルド設定] に移動し、[プラットフォームの切り替え] ボタンをクリックして、プラットフォームをユニバーサル Windows プラットフォームに切り替えます。Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

    [ビルドの設定] ウィンドウで、[プラットフォーム] を [UWP] に切り替えます。

  5. [ファイル > ビルド設定] にアクセスし、次のことを確認します。Go to File > Build Settings and make sure that:

    1. ターゲットデバイス、任意のデバイスに設定されます。Target Device is set to Any Device.

      Microsoft HoloLens の場合は、ターゲットデバイスHoloLensに設定します。For Microsoft HoloLens, set Target Device to HoloLens.

    2. ビルドの種類D3Dに設定されていますBuild Type is set to D3D

    3. SDKは最新のインストールに設定されていますSDK is set to Latest installed

    4. Visual Studio のバージョンが、インストールされている最新バージョンに設定されていますVisual Studio Version is set to Latest installed

    5. ビルドと実行ローカルコンピューターに設定されていますBuild and Run is set to Local Machine

    6. シーンを保存し、ビルドに追加します。Save the scene and add it to the build.

      1. これを行うには、[開いているシーンの追加] を選択します。Do this by selecting Add Open Scenes. 保存ウィンドウが表示されます。A save window will appear.

        [開いているシーンを追加] ボタンをクリックする

      2. この新しいフォルダーを作成し、今後のシーンに加えて、[新しいフォルダー ] ボタンを選択します。新しいフォルダーを作成するには、名前を「シーン」にします。Create a new folder for this, and any future, scene, then select the New folder button, to create a new folder, name it Scenes.

        新しいスクリプトフォルダーの作成

      3. 新しく作成した [シーン] フォルダーを開き、[ファイル名: テキスト] フィールドに「 MR_TranslationScene」と入力し、[保存] を押します。Open your newly created Scenes folder, and then in the File name: text field, type MR_TranslationScene, then press Save.

        新しいシーンに名前を付けます。

        Unity プロジェクトに関連付けられている必要があるため、Unity のシーンをAssetsフォルダー内に保存する必要があります。Be aware, you must save your Unity scenes within the Assets folder, as they must be associated with the Unity Project. Unity プロジェクトを構成する一般的な方法は、シーンフォルダー (およびその他の同様のフォルダー) を作成することです。Creating the scenes folder (and other similar folders) is a typical way of structuring a Unity project.

    7. それ以外の設定は、[ビルド設定] の [既定] のままにしておきます。The remaining settings, in Build Settings, should be left as default for now.

  6. [ビルドの設定] ウィンドウで、[プレーヤーの設定] ボタンをクリックします。これにより、インスペクターが配置されている領域の関連パネルが開きます。In the Build Settings window, click on the Player Settings button, this will open the related panel in the space where the Inspector is located.

    プレーヤーの設定を開きます。

  7. このパネルでは、いくつかの設定を確認する必要があります。In this panel, a few settings need to be verified:

    1. [その他の設定] タブで、次のようにします。In the Other Settings tab:

      1. スクリプトランタイムのバージョン安定している必要があります (.net 3.5 と同等)。Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. バックエンド.netである必要がありますScripting Backend should be .NET

      3. API 互換性レベル.net 4.6である必要がありますAPI Compatibility Level should be .NET 4.6

        その他の設定を更新します。

    2. [発行の設定] タブの [機能] で、次の項目を確認します。Within the Publishing Settings tab, under Capabilities, check:

      1. InternetClientInternetClient

      2. マイクMicrophone

        発行設定を更新しています。

    3. パネルの下にある [ XR settings (発行の設定] の下にあります) で、[サポートされている仮想現実] をティックし、 Windows Mixed reality SDKが追加されていることを確認します。Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      X R の設定を更新します。

  8. ビルド設定に戻ります 。 C# Unity プロジェクトはグレーで表示されなくなりました。このの横にあるチェックボックスをオンにします。Back in Build Settings, Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  9. [ビルドの設定] ウィンドウを閉じます。Close the Build Settings window.

  10. シーンとプロジェクトを保存します ([ファイル] > [シーン/ファイルの保存] > [プロジェクトの保存])。Save your Scene and Project (FILE > SAVE SCENE / FILE > SAVE PROJECT).

第3章–メインカメラの設定Chapter 3 – Main Camera setup

重要

このコースのUnity セットアップコンポーネントをスキップしてコードに直接進む場合は、 unitypackage をダウンロードし、カスタムパッケージとしてプロジェクトにインポートしてから、第5章から続行してください。If you wish to skip the Unity Set up component of this course, and continue straight into code, feel free to download this .unitypackage, import it into your project as a Custom Package, and then continue from Chapter 5. 引き続き Unity プロジェクトを作成する必要があります。You will still need to create a Unity Project.

  1. [階層] パネルには、メインカメラと呼ばれるオブジェクトが表示されます。このオブジェクトは、アプリケーションの "内側" にある "ヘッド" ポイントを表します。In the Hierarchy Panel, you will find an object called Main Camera, this object represents your “head” point of view once you are “inside” your application.

  2. Unity ダッシュボードを前面に表示し、カメラのメインのユーザーオブジェクトを選択します。With the Unity Dashboard in front of you, select the Main Camera GameObject. [インスペクター] パネル(通常はダッシュボード内の右側にあります) には、そのユーザーのオブジェクトのさまざまなコンポーネントが表示されます。これには、上部にある [変換]、[カメラ]、および他のコンポーネントがあります。You will notice that the Inspector Panel (generally found to the right, within the Dashboard) will show the various components of that GameObject, with Transform at the top, followed by Camera, and some other components. メインカメラの変換をリセットして、正しく配置されるようにする必要があります。You will need to reset the Transform of the Main Camera, so it is positioned correctly.

  3. これを行うには、カメラの変換コンポーネントの横にある歯車アイコンを選択し、[リセット] を選択します。To do this, select the Gear icon next to the Camera’s Transform component, and selecting Reset.

    メインカメラの変換をリセットします。

  4. 変換コンポーネントは次のようになります。The Transform component should then look like:

    1. 位置0、0、0に設定されています。The Position is set to 0, 0, 0

    2. 回転0、0、0に設定されていますRotation is set to 0, 0, 0

    3. Scale1、1、1に設定されます。And Scale is set to 1, 1, 1

      カメラの変換情報

  5. 次に、メインカメラオブジェクトを選択した状態で、[インスペクター] パネルの一番下にある [コンポーネントの追加] ボタンをクリックします。Next, with the Main Camera object selected, see the Add Component button located at the very bottom of the Inspector Panel.

  6. そのボタンを選択し、次に示すように、オーディオソースと呼ばれるコンポーネントの [検索] フィールドに「 audio source 」と入力するか、セクションを移動して検索します (enter キーを押すことによっても動作します)。Select that button, and search (by either typing Audio Source into the search field or navigating the sections) for the component called Audio Source as shown below and select it (pressing enter on it also works).

  7. 次に示すように、オーディオソースコンポーネントがメインカメラに追加されます。An Audio Source component will be added to the Main Camera, as demonstrated below.

    オーディオソースコンポーネントを追加します。

    注意

    Microsoft HoloLens の場合は、次の項目も変更する必要があります。これは、メインカメラカメラコンポーネントに含まれています。For Microsoft HoloLens, you will need to also change the following, which are part of the Camera component on your Main Camera:

    • フラグのクリア: 純色。Clear Flags: Solid Color.
    • 背景' Black, Alpha 0 ' –16進数の色: #00000000。Background ‘Black, Alpha 0’ – Hex color: #00000000.

第4章–セットアップのデバッグキャンバスChapter 4 – Setup Debug Canvas

翻訳の入力と出力を表示するには、基本的な UI を作成する必要があります。To show the input and output of the translation, a basic UI needs to be created. このコースでは、データを表示する複数の ' テキスト ' オブジェクトを含む Canvas UI オブジェクトを作成します。For this course, you will create a Canvas UI object, with several ‘Text’ objects to show the data.

  1. [階層] パネルの空の領域を右クリックし、[ UI] の下にキャンバスを追加します。Right-click in an empty area of the Hierarchy Panel, under UI, add a Canvas.

    新しいキャンバス UI オブジェクトを追加します。

  2. キャンバスオブジェクトを選択した状態で、[インスペクター] パネル(' canvas ' コンポーネント内) で、[レンダリングモード] を [ワールド空間] に変更します。With the Canvas object selected, in the Inspector Panel (within the ‘Canvas’ component), change Render Mode to World Space.

  3. 次に、インスペクターパネルの Rect 変換で次のパラメーターを変更します。Next, change the following parameters in the Inspector Panel’s Rect Transform:

    1. POS X 0 Y 0 Z 40 - POS - X 0 Y 0 Z 40

    2. -500Width - 500

    3. 高さ-300Height - 300

    4. スケール X 0.13 Y 0.13 Z 0.13 - Scale - X 0.13 Y 0.13 Z 0.13

      キャンバスの rect 変換を更新します。

  4. [階層] パネルキャンバスを右クリックし、[ UI] をクリックして、パネルを追加します。Right click on the Canvas in the Hierarchy Panel, under UI, and add a Panel. このパネルには、シーンに表示されるテキストの背景が表示されます。This Panel will provide a background to the text that you will be displaying in the scene.

  5. [階層] パネルの [ UI] の下にあるパネルを右クリックし、[テキスト] オブジェクトを追加します。Right click on the Panel in the Hierarchy Panel, under UI, and add a Text object. 合計で4つの UI テキストオブジェクトを作成した場合は、同じプロセスを繰り返します (ヒント: 最初の "テキスト" オブジェクトを選択している場合は、Ctrl キーを押しながら dキーを押すだけで、合計4つまで)。Repeat the same process until you have created four UI Text objects in total (Hint: if you have the first ‘Text’ object selected, you can simply press ‘Ctrl’ + ‘D’, to duplicate it, until you have four in total).

  6. テキストオブジェクトを選択し、以下の表を使用して、[インスペクター] パネルでパラメーターを設定します。For each Text Object, select it and use the below tables to set the parameters in the Inspector Panel.

    1. Rect 変換コンポーネントの場合:For the Rect Transform component:

      名前Name 変換-位置Transform - Position Width 高さHeight
      マイクロ電話の StatuslabelMicrophoneStatusLabel X -80 Y 90 Z 0X -80 Y 90 Z 0 300300 3030
      AzureResponseLabelAzureResponseLabel X -80 Y 30 Z 0X -80 Y 30 Z 0 300300 3030
      DictationLabelDictationLabel X -80 Y -30 Z 0X -80 Y -30 Z 0 300300 3030
      TranslationResultLabelTranslationResultLabel X -80 Y -90 Z 0X -80 Y -90 Z 0 300300 3030
    2. テキスト (スクリプト) コンポーネントの場合:For the Text (Script) component:

      名前Name テキストText フォント サイズFont Size
      マイクロ電話の StatuslabelMicrophoneStatusLabel マイクの状態:Microphone Status: 2020
      AzureResponseLabelAzureResponseLabel Azure Web 応答Azure Web Response 2020
      DictationLabelDictationLabel 先ほど言ったことは、You just said: 2020
      TranslationResultLabelTranslationResultLabel 変換Translation: 2020

      UI ラベルに対応する値を入力します。

    3. また、フォントスタイルを太字にします。Also, make the Font Style Bold. これにより、テキストが読みやすくなります。This will make the text easier to read.

      太字のフォント。

  7. 第5章で作成された各ui テキストオブジェクトに対して、新しい ui テキストオブジェクトを作成します。For each UI Text object created in Chapter 5, create a new child UI Text object. これらの子は、アプリケーションの出力を表示します。These children will display the output of the application. オブジェクトを作成するには、目的の親を右クリックし (例:マイクロラベル statuslabel)、[ UI ] を選択し、[テキスト] を選択します。Create child objects through right-clicking your intended parent (e.g. MicrophoneStatusLabel) and then select UI and then select Text.

  8. これらの各子を選択し、以下の表を使用して、[インスペクター] パネルでパラメーターを設定します。For each of these children, select it and use the below tables to set the parameters in the Inspector Panel.

    1. Rect 変換コンポーネントの場合:For the Rect Transform component:

      名前Name 変換-位置Transform - Position Width 高さHeight
      MicrophoneStatusTextMicrophoneStatusText X 0 Y ~ 30 Z 0X 0 Y -30 Z 0 300300 3030
      AzureResponseTextAzureResponseText X 0 Y ~ 30 Z 0X 0 Y -30 Z 0 300300 3030
      DictationTextDictationText X 0 Y ~ 30 Z 0X 0 Y -30 Z 0 300300 3030
      TranslationResultTextTranslationResultText X 0 Y ~ 30 Z 0X 0 Y -30 Z 0 300300 3030
    2. テキスト (スクリプト) コンポーネントの場合:For the Text (Script) component:

      名前Name テキストText フォント サイズFont Size
      MicrophoneStatusTextMicrophoneStatusText ???? 2020
      AzureResponseTextAzureResponseText ???? 2020
      DictationTextDictationText ???? 2020
      TranslationResultTextTranslationResultText ???? 2020
  9. 次に、各テキストコンポーネントの [中央揃え] を選択します。Next, select the 'centre' alignment option for each text component:

    テキストを整列します。

  10. 子 UI テキストオブジェクトが簡単に読み取れるようにするには、を変更します。To ensure the child UI Text objects are easily readable, change their Color. これを行うには、[] の横にあるバー (現在は "Black") をクリックします。Do this by clicking on the bar (currently ‘Black’) next to Color.

    UI テキストの出力に対応する値を入力します。

  11. 次に、新しい小さなのウィンドウで、 16 進数の色を次のように変更します。0032EAFFThen, in the new, little, Color window, change the Hex Color to: 0032EAFF

    色を青に更新します。

  12. UIの表示方法を次に示します。Below is how the UI should look.

    1. [階層] パネルで、次のようにします。In the Hierarchy Panel:

      指定された構造に階層があること。

    2. シーン ビューとゲームビューで、次のようにします。In the Scene and Game Views:

      シーンビューとゲームビューを同じ構造にします。

Chapter 5 – Results クラスを作成するChapter 5 – Create the Results class

作成する必要のある最初のスクリプトは、 resultsクラスです。このクラスは、翻訳の結果を確認する手段を提供します。The first script you need to create is the Results class, which is responsible for providing a way to see the results of translation. クラスは、次のものを格納して表示します。The Class stores and displays the following:

  • Azure からの応答結果。The response result from Azure.
  • マイクの状態。The microphone status.
  • ディクテーションの結果 (音声テキスト)。The result of the dictation (voice to text).
  • 変換の結果。The result of the translation.

このクラスを作成するには:To create this class:

  1. [プロジェクト] パネル内を右クリックし、[ > フォルダーの作成] をクリックします。Right-click in the Project Panel, then Create > Folder. フォルダーにスクリプトの名前を指定します。Name the folder Scripts.

    Scripts フォルダーを作成します。

    Scripts フォルダーを開きます。

  2. Scriptsフォルダー create を使用して、ダブルクリックして開きます。With the Scripts folder create, double click it to open. 次に、そのフォルダー内でを右クリックし、[作成] > [ C#スクリプト] の順に選択します。Then within that folder, right-click, and select Create > then C# Script. スクリプトの結果に名前を指定します。Name the script Results.

    最初のスクリプトを作成します。

  3. 新しい結果スクリプトをダブルクリックして、 Visual Studioで開きます。Double click on the new Results script to open it with Visual Studio.

  4. 次の名前空間を挿入します。Insert the following namespaces:

        using UnityEngine;
        using UnityEngine.UI;
    
  5. クラス内で、次の変数を挿入します。Inside the Class insert the following variables:

        public static Results instance;
    
        [HideInInspector] 
        public string azureResponseCode;
    
        [HideInInspector] 
        public string translationResult;
    
        [HideInInspector] 
        public string dictationResult;
    
        [HideInInspector] 
        public string micStatus;
    
        public Text microphoneStatusText;
    
        public Text azureResponseText;
    
        public Text dictationText;
    
        public Text translationResultText;
    
  6. 次に、起動される () メソッドを追加します。このメソッドは、クラスの初期化時に呼び出されます。Then add the Awake() method, which will be called when the class initializes.

        private void Awake() 
        { 
            // Set this class to behave similar to singleton 
            instance = this;           
        } 
    
  7. 最後に、さまざまな結果情報を UI に出力するメソッドを追加します。Finally, add the methods which are responsible for outputting the various results information to the UI.

        /// <summary>
        /// Stores the Azure response value in the static instance of Result class.
        /// </summary>
        public void SetAzureResponse(string result)
        {
            azureResponseCode = result;
            azureResponseText.text = azureResponseCode;
        }
    
        /// <summary>
        /// Stores the translated result from dictation in the static instance of Result class. 
        /// </summary>
        public void SetDictationResult(string result)
        {
            dictationResult = result;
            dictationText.text = dictationResult;
        }
    
        /// <summary>
        /// Stores the translated result from Azure Service in the static instance of Result class. 
        /// </summary>
        public void SetTranslatedResult(string result)
        {
            translationResult = result;
            translationResultText.text = translationResult;
        }
    
        /// <summary>
        /// Stores the status of the Microphone in the static instance of Result class. 
        /// </summary>
        public void SetMicrophoneStatus(string result)
        {
            micStatus = result;
            microphoneStatusText.text = micStatus;
        }
    
  8. Unityに戻る前に、変更内容をVisual Studioに保存してください。Be sure to save your changes in Visual Studio before returning to Unity.

Chapter 6 – MicrophoneManagerクラスを作成するChapter 6 – Create the MicrophoneManager class

2番目に作成するクラスは、 MicrophoneManagerです。The second class you are going to create is the MicrophoneManager.

このクラスの役割は次のとおりです。This class is responsible for:

  • ヘッドセットまたはコンピューターに接続されている記録デバイスを検出する (どちらかの既定値)。Detecting the recording device attached to the headset or machine (whichever is the default).
  • オーディオ (音声) をキャプチャし、ディクテーションを使用して文字列として格納します。Capture the audio (voice) and use dictation to store it as a string.
  • 音声が一時停止したら、ディクテーションを Translator クラスに送信します。Once the voice has paused, submit the dictation to the Translator class.
  • 必要に応じて、音声キャプチャを停止できるメソッドをホストします。Host a method that can stop the voice capture if desired.

このクラスを作成するには:To create this class:

  1. [ Scripts ] フォルダーをダブルクリックして開きます。Double click on the Scripts folder, to open it.

  2. Scriptsフォルダー内を右クリックし、[ Create > C# Script] をクリックします。Right-click inside the Scripts folder, click Create > C# Script. スクリプトにMicrophoneManagerという名前を指定します。Name the script MicrophoneManager.

  3. 新しいスクリプトをダブルクリックして、Visual Studio で開きます。Double click on the new script to open it with Visual Studio.

  4. MicrophoneManagerクラスの先頭にある次の名前空間を更新します。Update the namespaces to be the same as the following, at the top of the MicrophoneManager class:

        using UnityEngine; 
        using UnityEngine.Windows.Speech;
    
  5. 次に、 MicrophoneManagerクラス内に次の変数を追加します。Then, add the following variables inside the MicrophoneManager class:

        // Help to access instance of this object 
        public static MicrophoneManager instance; 
    
        // AudioSource component, provides access to mic 
        private AudioSource audioSource; 
    
        // Flag indicating mic detection 
        private bool microphoneDetected; 
    
        // Component converting speech to text 
        private DictationRecognizer dictationRecognizer; 
    
  6. 起動可能な () メソッドとStart () メソッドのコードを追加する必要があります。Code for the Awake() and Start() methods now needs to be added. これらは、クラスの初期化時に呼び出されます。These will be called when the class initializes:

        private void Awake() 
        { 
            // Set this class to behave similar to singleton 
            instance = this; 
        } 
    
        void Start() 
        { 
            //Use Unity Microphone class to detect devices and setup AudioSource 
            if(Microphone.devices.Length > 0) 
            { 
                Results.instance.SetMicrophoneStatus("Initialising..."); 
                audioSource = GetComponent<AudioSource>(); 
                microphoneDetected = true; 
            } 
            else 
            { 
                Results.instance.SetMicrophoneStatus("No Microphone detected"); 
            } 
        } 
    
  7. Update () メソッドは、このクラスでは使用されないため、削除できます。You can delete the Update() method since this class will not use it.

  8. 次に、アプリが音声キャプチャを開始および停止するために使用するメソッドと、間もなくビルドするTranslatorクラスに渡すメソッドが必要です。Now you need the methods that the App uses to start and stop the voice capture, and pass it to the Translator class, that you will build soon. 次のコードをコピーし、 Start () メソッドの下に貼り付けます。Copy the following code and paste it beneath the Start() method.

        /// <summary> 
        /// Start microphone capture. Debugging message is delivered to the Results class. 
        /// </summary> 
        public void StartCapturingAudio() 
        { 
            if(microphoneDetected) 
            {               
                // Start dictation 
                dictationRecognizer = new DictationRecognizer(); 
                dictationRecognizer.DictationResult += DictationRecognizer_DictationResult; 
                dictationRecognizer.Start(); 
    
                // Update UI with mic status 
                Results.instance.SetMicrophoneStatus("Capturing..."); 
            }      
        } 
    
        /// <summary> 
        /// Stop microphone capture. Debugging message is delivered to the Results class. 
        /// </summary> 
        public void StopCapturingAudio() 
        { 
            Results.instance.SetMicrophoneStatus("Mic sleeping"); 
            Microphone.End(null); 
            dictationRecognizer.DictationResult -= DictationRecognizer_DictationResult; 
            dictationRecognizer.Dispose(); 
        }
    

    ヒント

    このアプリケーションではこれを使用しませんが、アプリケーションでのオーディオのキャプチャを停止する機能を実装する場合は、 Stopcapturingaudio () メソッドもここで提供されています。Though this application will not make use of it, the StopCapturingAudio() method has also been provided here, should you want to implement the ability to stop capturing audio in your application.

  9. 次に、音声が停止したときに呼び出されるディクテーションハンドラーを追加する必要があります。You now need to add a Dictation Handler that will be invoked when the voice stops. このメソッドは、ディクテーションされたテキストをTranslatorクラスに渡します。This method will then pass the dictated text to the Translator class.

        /// <summary>
        /// This handler is called every time the Dictation detects a pause in the speech. 
        /// Debugging message is delivered to the Results class.
        /// </summary>
        private void DictationRecognizer_DictationResult(string text, ConfidenceLevel confidence)
        {
            // Update UI with dictation captured
            Results.instance.SetDictationResult(text);
    
            // Start the coroutine that process the dictation through Azure 
            StartCoroutine(Translator.instance.TranslateWithUnityNetworking(text));   
        }
    
  10. Unity に戻る前に、変更内容を Visual Studio に保存してください。Be sure to save your changes in Visual Studio before returning to Unity.

警告

この時点で、 Unity エディターのコンソールパネルにエラーが表示されます ("Translator ' という名前は存在しません...")。At this point you will notice an error appearing in the Unity Editor Console Panel (“The name ‘Translator’ does not exist...”). これは、コードがトランスレータークラスを参照するためです。このクラスは、次の章で作成します。This is because the code references the Translator class, which you will create in the next chapter.

第7章– Azure と translator サービスへの呼び出しChapter 7 – Call to Azure and translator service

作成する必要がある最後のスクリプトは、 Translatorクラスです。The last script you need to create is the Translator class.

このクラスの役割は次のとおりです。This class is responsible for:

  • Azureを使用したアプリの認証 (認証トークンの交換)。Authenticating the App with Azure, in exchange for an Auth Token.
  • 認証トークンを使用して、翻訳するテキスト ( MicrophoneManagerクラスから受信) を送信します。Use the Auth Token to submit text (received from the MicrophoneManager Class) to be translated.
  • 変換された結果を受け取り、それを結果クラスに渡して UI で視覚化されるようにします。Receive the translated result and pass it to the Results Class to be visualized in the UI.

このクラスを作成するには:To create this Class:

  1. 前に作成したScriptsフォルダーにアクセスします。Go to the Scripts folder you created previously.

  2. [プロジェクト] パネル内を右クリックし、[ C# > スクリプト] を作成します。Right-click in the Project Panel, Create > C# Script. スクリプト変換プログラムを呼び出します。Call the script Translator.

  3. 新しいTranslatorスクリプトをダブルクリックして、 Visual Studio で開きます。Double click on the new Translator script to open it with Visual Studio.

  4. ファイルの先頭に次の名前空間を追加します。Add the following namespaces to the top of the file:

        using System;
        using System.Collections;
        using System.Xml.Linq;
        using UnityEngine;
        using UnityEngine.Networking;
    
  5. 次に、 Translatorクラス内に次の変数を追加します。Then add the following variables inside the Translator class:

        public static Translator instance; 
        private string translationTokenEndpoint = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"; 
        private string translationTextEndpoint = "https://api.microsofttranslator.com/v2/http.svc/Translate?"; 
        private const string ocpApimSubscriptionKeyHeader = "Ocp-Apim-Subscription-Key"; 
    
        //Substitute the value of authorizationKey with your own Key 
        private const string authorizationKey = "-InsertYourAuthKeyHere-"; 
        private string authorizationToken; 
    
        // languages set below are: 
        // English 
        // French 
        // Italian 
        // Japanese 
        // Korean 
        public enum Languages { en, fr, it, ja, ko }; 
        public Languages from = Languages.en; 
        public Languages to = Languages.it; 
    

    注意

    • 言語の列挙に挿入される言語は、単純な例です。The languages inserted into the languages enum are just examples. 必要に応じて、さらに自由に追加できます。API は、 60 を超える言語(Klingon を含む) をサポートしています。Feel free to add more if you wish; the API supports over 60 languages (including Klingon)!
    • 使用可能な言語については、より対話的なページがありますが、サイトの言語が "en-us" に設定されている場合にのみページが動作しているように見えますが、Microsoft サイトではネイティブ言語にリダイレクトされる可能性があることに注意してください。There is a more interactive page covering available languages, though be aware the page only appears to work when the site language is set to 'en-us' (and the Microsoft site will likely redirect to your native language). ページの下部にあるサイトの言語を変更するか、URL を変更することができます。You can change site language at the bottom of the page or by altering the URL.
    • 上記のコードスニペットのAuthorizationkey値は、 Azure Translator Text APIをサブスクライブしたときに受け取ったキーである必要があります。The authorizationKey value, in the above code snippet, must be the Key you received when you subscribed to the Azure Translator Text API. これについては、第1章で説明しました。This was covered in Chapter 1.
  6. 起動可能な () メソッドとStart () メソッドのコードを追加する必要があります。Code for the Awake() and Start() methods now needs to be added.

  7. この場合、コードは、トークンを取得するために、承認キーを使用してAzureを呼び出します。In this case, the code will make a call to Azure using the authorization Key, to get a Token.

        private void Awake() 
        { 
            // Set this class to behave similar to singleton  
            instance = this; 
        } 
    
        // Use this for initialization  
        void Start() 
        { 
            // When the application starts, request an auth token 
            StartCoroutine("GetTokenCoroutine", authorizationKey); 
        }
    

    注意

    トークンは10分後に期限切れになります。The token will expire after 10 minutes. アプリのシナリオによっては、同じコルーチン呼び出しを複数回行うことが必要になる場合があります。Depending on the scenario for your app, you might have to make the same coroutine call multiple times.

  8. トークンを取得するコルーチンは次のとおりです。The coroutine to obtain the Token is the following:

        /// <summary> 
        /// Request a Token from Azure Translation Service by providing the access key. 
        /// Debugging result is delivered to the Results class. 
        /// </summary> 
        private IEnumerator GetTokenCoroutine(string key)
        {
            if (string.IsNullOrEmpty(key))
            {
                throw new InvalidOperationException("Authorization key not set.");
            }
    
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Post(translationTokenEndpoint, string.Empty))
            {
                unityWebRequest.SetRequestHeader("Ocp-Apim-Subscription-Key", key);
                yield return unityWebRequest.SendWebRequest();
    
                long responseCode = unityWebRequest.responseCode;
    
                // Update the UI with the response code 
                Results.instance.SetAzureResponse(responseCode.ToString());
    
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Results.instance.azureResponseText.text = unityWebRequest.error;
                    yield return null;
                }
                else
                {
                    authorizationToken = unityWebRequest.downloadHandler.text;
                }
            }
    
            // After receiving the token, begin capturing Audio with the MicrophoneManager Class 
            MicrophoneManager.instance.StartCapturingAudio();
        }
    

    警告

    IEnumerator メソッドGetTokenCoroutine () の名前を編集する場合は、上記のコードのStartCoroutineStopCoroutineの呼び出し文字列値を更新する必要があります。If you edit the name of the IEnumerator method GetTokenCoroutine(), you need to update the StartCoroutine and StopCoroutine call string values in the above code. Unity のドキュメントに従って、特定のコルーチンを停止するには、文字列値メソッドを使用する必要があります。As per Unity documentation, to Stop a specific Coroutine, you need to use the string value method.

  9. 次に、 MicrophoneManagerクラスによって受信されたテキストの翻訳を取得するために、("サポート" ストリームメソッドを含む) コルーチンを追加します。Next, add the coroutine (with a “support” stream method right below it) to obtain the translation of the text received by the MicrophoneManager class. このコードは、 Azure Translator Text APIに送信するクエリ文字列を作成し、内部 Unity UnityWebRequest クラスを使用して、クエリ文字列を使用してエンドポイントへの ' Get ' 呼び出しを行います。This code creates a query string to send to the Azure Translator Text API, and then uses the internal Unity UnityWebRequest class to make a ‘Get’ call to the endpoint with the query string. 結果を使用して、結果オブジェクトの翻訳を設定します。The result is then used to set the translation in your Results object. 次のコードは、の実装を示しています。The code below shows the implementation:

        /// <summary> 
        /// Request a translation from Azure Translation Service by providing a string.  
        /// Debugging result is delivered to the Results class. 
        /// </summary> 
        public IEnumerator TranslateWithUnityNetworking(string text)
        {
            // This query string will contain the parameters for the translation 
            string queryString = string.Concat("text=", Uri.EscapeDataString(text), "&from=", from, "&to=", to);
    
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Get(translationTextEndpoint + queryString))
            {
                unityWebRequest.SetRequestHeader("Authorization", "Bearer " + authorizationToken);
                unityWebRequest.SetRequestHeader("Accept", "application/xml");
                yield return unityWebRequest.SendWebRequest();
    
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Debug.Log(unityWebRequest.error);
                    yield return null;
                }
    
                // Parse out the response text from the returned Xml
                string result = XElement.Parse(unityWebRequest.downloadHandler.text).Value;
                Results.instance.SetTranslatedResult(result);
            }
        }
    
  10. Unityに戻る前に、変更内容をVisual Studioに保存してください。Be sure to save your changes in Visual Studio before returning to Unity.

Chapter 8 – Unity シーンの構成Chapter 8 – Configure the Unity Scene

  1. 戻る Unity エディターで、をクリックし、ドラッグ、 結果 クラス からスクリプト フォルダーを Main Camera 内のオブジェクト 階層パネル します。Back in the Unity Editor, click and drag the Results class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  2. メインカメラをクリックし、[インスペクター] パネルを確認します。Click on the Main Camera and look at the Inspector Panel. 新しく追加されたスクリプトコンポーネント内には、空の値を持つ4つのフィールドがあることがわかります。You will notice that within the newly added Script component, there are four fields with empty values. これらは、コード内のプロパティへの出力参照です。These are the output references to the properties in the code.

  3. 次の図に示すように、該当するテキストオブジェクトを [階層] パネルから4つのスロットにドラッグします。Drag the appropriate Text objects from the Hierarchy Panel to those four slots, as shown in the image below.

    指定された値でターゲット参照を更新します。

  4. 次に、[スクリプト] フォルダーのTranslatorクラスをクリックして、[階層] パネルの [メインカメラ] オブジェクトにドラッグします。Next, click and drag the Translator class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  5. 次に、[スクリプト] フォルダーのMicrophoneManagerクラスをクリックして、[階層] パネルの [メインカメラ] オブジェクトにドラッグします。Then, click and drag the MicrophoneManager class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  6. 最後に、メインカメラをクリックし、[インスペクター] パネルを確認します。Lastly, click on the Main Camera and look at the Inspector Panel. ドラッグしたスクリプトには、2つのドロップダウンボックスがあり、それらを使用して言語を設定できることがわかります。You will notice that in the script you dragged on, there are two drop down boxes that will allow you to set the languages.

    目的の翻訳言語が入力されていることを確認します。

第9章– mixed reality でのテストChapter 9 – Test in mixed reality

この時点で、シーンが正しく実装されていることをテストする必要があります。At this point you need to test that the Scene has been properly implemented.

次のことを確認してください。Ensure that:

  • 章 1で説明したすべての設定が正しく設定されています。All the settings mentioned in Chapter 1 are set correctly.
  • ResultsTranslator、およびMicrophoneManagerの各スクリプトは、メインカメラオブジェクトにアタッチされます。The Results, Translator, and MicrophoneManager, scripts are attached to the Main Camera object.
  • Azure Translator Text APIサービスキーは、 Translatorスクリプト内のauthorizationkey変数内に配置しました。You have placed your Azure Translator Text API Service Key within the authorizationKey variable within the Translator Script.
  • メインカメラインスペクターパネルのすべてのフィールドが適切に割り当てられます。All the fields in the Main Camera Inspector Panel are assigned properly.
  • マイクがシーンの実行中に機能している (そうでない場合、接続されているマイクが既定のデバイスであること、およびWindows 内で正しく設定されていることを確認してください)。Your microphone is working when running your scene (if not, check that your attached microphone is the default device, and that you have set it up correctly within Windows).

イマーシブヘッドセットをテストするには、 Unity エディターの [再生] ボタンを押します。You can test the immersive headset by pressing the Play button in the Unity Editor. アプリは、接続されているイマーシブヘッドセットを介して機能している必要があります。The App should be functioning through the attached immersive headset.

警告

既定のオーディオデバイスの変更について Unity コンソールにエラーが表示される場合は、シーンが想定どおりに機能しない可能性があります。If you see an error in the Unity console about the default audio device changing, the scene may not function as expected. これは、mixed reality ポータルが、ヘッドセットを持つヘッドホン用の組み込みマイクを扱う方法に起因します。This is due to the way the mixed reality portal deals with built-in microphones for headsets that have them. このエラーが表示された場合は、単にシーンを停止してからもう一度開始するだけで、期待どおりに動作するはずです。If you see this error, simply stop the scene and start it again and things should work as expected.

Chapter 10 –ローカルコンピューターに UWP ソリューションとサイドロードを構築するChapter 10 – Build the UWP solution and sideload on local machine

このプロジェクトの Unity セクションに必要なものはすべて完了したので、Unity から構築します。Everything needed for the Unity section of this project has now been completed, so it is time to build it from Unity.

  1. [ビルドの設定] に移動します。ビルド設定をファイル > ます...Navigate to Build Settings: File > Build Settings...

  2. [ビルドの設定] ウィンドウで、[ビルド] をクリックします。From the Build Settings window, click Build.

    Unity シーンをビルドします。

  3. Unity C#プロジェクトをまだティックしていない場合は、ティックします。If not already, tick Unity C# Projects.

  4. [Build] をクリックします。Click Build. Unity はエクスプローラーウィンドウを起動します。このウィンドウでは、アプリを作成するフォルダーを作成して選択する必要があります。Unity will launch a File Explorer window, where you need to create and then select a folder to build the app into. ここでそのフォルダーを作成し、「 App」という名前を指定します。Create that folder now, and name it App. 次に、アプリフォルダーを選択し、 [フォルダーの選択] をクリックします。Then with the App folder selected, press Select Folder.

  5. Unity は、アプリフォルダーへのプロジェクトのビルドを開始します。Unity will begin building your project to the App folder.

  6. Unity のビルドが完了すると (時間がかかる場合があります)、ビルドの場所でファイルエクスプローラーウィンドウを開きます (ウィンドウの上に常に表示されるとは限りませんが、新しいウィンドウが追加されたことが通知されます)。Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build (check your task bar, as it may not always appear above your windows, but will notify you of the addition of a new window).

第11章–アプリケーションのデプロイChapter 11 – Deploy your application

アプリケーションをデプロイするには:To deploy your application:

  1. 新しい Unity ビルド (アプリフォルダー) に移動し、 Visual Studioでソリューションファイルを開きます。Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

  2. ソリューション構成で、[デバッグ] を選択します。In the Solution Configuration select Debug.

  3. ソリューションプラットフォームで、[ x86,ローカルコンピューター] を選択します。In the Solution Platform, select x86, Local Machine.

    Microsoft HoloLens の場合、これをリモートコンピューターに設定する方が簡単な場合があります。これにより、コンピューターにテザリングさされることはありません。For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. ただし、次の手順も実行する必要があります。Though, you will need to also do the following:

    • HoloLens のIP アドレスを確認します。これは、 [設定 > ネットワーク & インターネット > Wi-fi > 詳細オプション] にあります。IPv4 は、使用するアドレスです。Know the IP Address of your HoloLens, which can be found within the Settings > Network & Internet > Wi-Fi > Advanced Options; the IPv4 is the address you should use.
    • 開発者モードオンになっていることを確認します。開発者向けのセキュリティ > の更新プログラム & の > の設定にあります。Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    Visual Studio からソリューションをデプロイします。

  4. [ビルド] メニューの [ソリューションの配置] をクリックして、アプリケーションを PC にサイドロードします。Go to Build menu and click on Deploy Solution to sideload the application to your PC.

  5. アプリがインストール済みのアプリの一覧に表示され、起動できる状態になります。Your App should now appear in the list of installed apps, ready to be launched.

  6. アプリを起動すると、マイクへのアクセスを承認するように求められます。Once launched, the App will prompt you to authorize access to the Microphone. [はい] ボタンをクリックしてください。Make sure to click the YES button.

  7. これで、翻訳を開始する準備ができました。You are now ready to start translating!

完成した翻訳テキスト API アプリケーションYour finished Translation Text API application

これで、Azure Translation Text API を活用して音声を翻訳されたテキストに変換する、mixed reality アプリを構築しました。Congratulations, you built a mixed reality app that leverages the Azure Translation Text API to convert speech to translated text.

最終的な製品。

ボーナスの演習Bonus exercises

演習1Exercise 1

音声合成機能をアプリに追加して、返されたテキストが読み上げられるようにすることができますか。Can you add text-to-speech functionality to the app, so that the returned text is spoken?

演習2Exercise 2

言語を変更するたびに、アプリを再構築する必要がないように、ユーザーがアプリ自体でソースと出力の言語 (' from ' と ' to ') を変更できるようにします。Make it possible for the user to change the source and output languages ('from' and 'to') within the app itself, so the app does not need to be rebuilt every time you want to change languages.