本日はチュートリアルの実施枠です。
Academyの「MR and Azure 302b: Custom vision」の実施内容をまとめます。
docs.microsoft.com
前回記事の続きです。
bluebirdofoz.hatenablog.com
今回は「Chapter 8」です。
Chapter 8:Create the VoiceRecognizer class
3つ目に作成するスクリプトは VoiceRecognizer クラスです。
このクラスはユーザーからの音声入力を認識します。
1.Script フォルダを開きます。
フォルダ内で右クリックして、Creapte -> C# Script を選択します。
Script の名称は VoiceRecognizer に設定します。
2.新しいスクリプトをダブルクリックしてVisual Studioで開きます。
3-7.以下の通り、スクリプトを編集します。
・VoiceRecognizer.cs
// 名前空間の追加 using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Windows.Speech; public class VoiceRecognizer : MonoBehaviour { // メンバ変数の追加 /// <summary> /// Allows this class to behave like a singleton /// クラスがシングルトンのように動作できるようにします /// </summary> public static VoiceRecognizer Instance; /// <summary> /// Recognizer class for voice recognition /// 音声認識のための認識器クラス /// </summary> internal KeywordRecognizer keywordRecognizer; /// <summary> /// List of Keywords registered /// 登録されたキーワードのリスト /// </summary> private Dictionary<string, Action> _keywords = new Dictionary<string, Action>(); /// <summary> /// Called on initialization /// 初期化処理 /// </summary> private void Awake() { Instance = this; } /// <summary> /// Runs at initialization right after Awake method /// StartメソッドはAwakeメソッドの直後の初期化時に実行されます /// </summary> void Start() { Array tagsArray = Enum.GetValues(typeof(CustomVisionTrainer.Tags)); foreach (object tagWord in tagsArray) { _keywords.Add(tagWord.ToString(), () => { // When a word is recognized, the following line will be called // 単語が認識されると、次の行が呼び出されます CustomVisionTrainer.Instance.VerifyTag(tagWord.ToString()); }); } _keywords.Add("Discard", () => { // When a word is recognized, the following line will be called // The user does not want to submit the image // therefore ignore and discard the process // ’Discard’単語が認識されると、次の行が呼び出されます // ユーザーは画像を送信したくない場合に利用します // したがって、プロセスを無視して破棄します ImageCapture.Instance.ResetImageCapture(); keywordRecognizer.Stop(); }); //Create the keyword recognizer // KeywordRecognizer(キーワード認識)を作成する keywordRecognizer = new KeywordRecognizer(_keywords.Keys.ToArray()); // Register for the OnPhraseRecognized event // OnPhraseRecognizedイベントの登録 keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized; } /// <summary> /// Handler called when a word is recognized /// 単語が認識されたときに呼び出されるハンドラ /// </summary> private void KeywordRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args) { Action keywordAction; // if the keyword recognized is in our dictionary, call that Action. // 認識されたキーワードが辞書に含まれている場合は、そのアクションを呼び出します。 if (_keywords.TryGetValue(args.text, out keywordAction)) { keywordAction.Invoke(); } } }
※ この時点でエラーが表示されます(「The name‘CustomVisionTrainer’does not exist...」)。
これは、コードが CustomVisionTrainer クラスを参照するためです。CustomVisionTrainer クラスは、次の章で作成します
8.Visual Studio で変更を保存して Unity に戻ります。
Chapter 8 はここまでです。
次回は Chapter 9 を実施します。
bluebirdofoz.hatenablog.com