一、Windows10平臺下Unity3d的語音識別——關鍵字識別

JoeManba發表於2018-12-18

Unity3d軟體中的語音識別,包含了關鍵字識別、語法識別和聽寫識別,本篇先介紹Win10平臺下Unity3d關鍵字識別
本文介紹瞭如何使用Windows語音API在unity3d中實現語音識別。本例給出的實現也可用於虛擬現實(VR)應用。
從Unity 5.4.0開始,Unity引擎新增了windows語音識別API (UnityEngine.Windows.Speech)來識別語音輸入。這些api支援所有型別的windows平臺(windows editor、windows independent和windows Store),但只支援windows 10作業系統,支援中文語音識別。
關鍵點:

  • 名稱空間:UnityEngine.Windows.Speech
  • Unity3d支援:Unity 5.4.0或更高版本
  • 作業系統支援:Windows 10

Unity3d軟體中的語音識別
語音識別API可分為兩大類:

  • 短語識別
    Keyword Recognizer(關鍵字識別)
    Grammar Recognizer(語法識別)
  • 聽寫識別
    Dictation Recognizer(聽寫識別)

注意:不能同時使用短語識別和語音聽寫識別。在同一時間內間個例項中,應用程式中只有一個識別是啟用的。

短語識別
短語識別用於識別使用者所說的特定短語。

Windows Store構建的釋出設定:
如果您想為windows store構建應用程式,那麼可以啟用麥克風功能來利用應用程式的語音輸入。

  • 在Unity編輯器中設定 (Edit -> Project Settings -> Player)
  • 選擇 “Windows Store”標籤
  • 檢查麥克風(Publishing Settings -> Capabilities)

短語識別可以分為兩種型別:關鍵詞識別語法識別

關鍵詞識別
關鍵字識別用於監聽給定字串陣列。讓我們看看如何實現關鍵字識別器。

Step 1: 定義字串陣列
Step 2: 訂閱和處理OnPhraseRecognized事件。當給定短語被識別時,將呼叫此事件。.
Step 3: 開始關鍵字識別

下面給出了實現關鍵字識別的完整指令碼。將此指令碼複製到專案中,可以掛在任何遊戲物體上。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Windows.Speech;

public class KeyWordRecognizerBehaviour : MonoBehaviour {
	
	KeywordRecognizer keywordRecognizer;
	// keyword array
	public string[] Keywords_array;

	// Use this for initialization
	void Start () {
		// Change size of array for your requirement
		Keywords_array = new string[2];
		Keywords_array [0] = "hello";
		Keywords_array [1] = "how are you";

		// instantiate keyword recognizer, pass keyword array in the constructor
		keywordRecognizer = new KeywordRecognizer(Keywords_array);
		keywordRecognizer.OnPhraseRecognized += OnKeywordsRecognized;
		// start keyword recognizer
		keywordRecognizer.Start ();
	}

	void OnKeywordsRecognized(PhraseRecognizedEventArgs args)
	{
		Debug.Log ("Keyword: " + args.text + "; Confidence: " + args.confidence + "; Start Time: " + args.phraseStartTime + "; Duration: "  + args.phraseDuration);
		// write your own logic
	}
}

執行結果:
在這裡插入圖片描述

可以同時有多個關鍵字識別器,但它們不監聽普通關鍵字

如果您在專案中使用多個關鍵字識別器,那麼您可以使用PhraseRecognitionSystem類用一行程式碼停止並重新啟動所有關鍵字識別。

// shut down phrase recognition system. All keyword recognizer will be stopped
PhraseRecognitionSystem.Shutdown();
// restore all recognizer in the previous state
PhraseRecognitionSystem.Restart();

二、Windows10平臺下Unity3d的語音識別——語法識別
三、Windows10平臺下Unity3d的語音識別——聽寫識別

相關文章