詳解Unity 實現(xiàn)語音識別功能
現(xiàn)在語音識別已經(jīng)被廣泛的應用到各個領(lǐng)域中,在Unity開發(fā)中,語音識別也非常受歡迎。大部分人都會選擇科大訊飛的語音識別功能,但是在一些小的項目中,使用科大訊飛的就有點大材小用了。今天就介紹一下Unity自帶的語音識別功能。說是語音識別,其實unity本身還是做不到的,Unity自帶的語音識別功能其實是關(guān)鍵字識別。比如我在Unity中設定好一句話匯總的幾個關(guān)鍵詞。當我再說這句話的時候就會和識別到。經(jīng)過測試發(fā)現(xiàn)當一句話中有八個關(guān)鍵字,這句話就會非常好的被識別出來。
接下來就一起來實現(xiàn)一下:
首先貼一張效果圖:
場景我們沿用的是音頻可視化那篇文章里用到的場景。這里就不多做介紹了。Unity自帶的語音識別功能官方有API供參考,地址在這里(戳這里)
這里大家可以自行去看一下。下面開始介紹一下我們要實現(xiàn)的功能:
想要識別語音識別功能我們首先由先引用個命名空間
using UnityEngine.Windows.Speech;//引入命名空間
然后定義一個string類型數(shù)組,這個數(shù)組就是存放那些我們要識別關(guān)鍵字。
// 關(guān)鍵字 public string[] keywords = { "你好", "開始","停止" };
緊接著我們要在start方法中先創(chuàng)建一個語音識別器,這樣才能夠進行語音識別
//創(chuàng)建一個識別器 m_PhraseRecognizer = new KeywordRecognizer(keywords, m_confidenceLevel); //通過注冊監(jiān)聽的方法 m_PhraseRecognizer.OnPhraseRecognized += M_PhraseRecognizer_OnPhraseRecognized; //開啟識別器 m_PhraseRecognizer.Start();
接著是一個方法,這個方法主要就是用于識別到關(guān)鍵字后要做的事情
/// <summary> /// 當識別到關(guān)鍵字時,會調(diào)用這個方法 /// </summary> /// <param name="args"></param> private void M_PhraseRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args) { print(args.text); }
這樣基本上重要的部分就完成。下面是全部的代碼,在底部還有一個小Demo,感興趣的可以下載下來自行體驗一下
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Windows.Speech;//引入命名空間 利用 /// <summary> /// 語音識別(主要是別關(guān)鍵字) /// </summary> public class speechKey : MonoBehaviour { // 短語識別器 private PhraseRecognizer m_PhraseRecognizer; // 關(guān)鍵字 public string[] keywords = { "你好", "開始","停止" }; // 可信度 public ConfidenceLevel m_confidenceLevel = ConfidenceLevel.Medium; // Use this for initialization void Start() { if (m_PhraseRecognizer == null) { //創(chuàng)建一個識別器 m_PhraseRecognizer = new KeywordRecognizer(keywords, m_confidenceLevel); //通過注冊監(jiān)聽的方法 m_PhraseRecognizer.OnPhraseRecognized += M_PhraseRecognizer_OnPhraseRecognized; //開啟識別器 m_PhraseRecognizer.Start(); Debug.Log("創(chuàng)建識別器成功"); } } /// <summary> /// 當識別到關(guān)鍵字時,會調(diào)用這個方法 /// </summary> /// <param name="args"></param> private void M_PhraseRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args) { SpeechRecognition(); print(args.text); } private void OnDestroy() { //判斷場景中是否存在語音識別器,如果有,釋放 if (m_PhraseRecognizer != null) { //用完應該釋放,否則會帶來額外的開銷 m_PhraseRecognizer.Dispose(); } } // Update is called once per frame void Update() { } /// <summary> /// 識別到語音的操作 /// </summary> void SpeechRecognition() { } }
Demo下載地址:https://github.com/ShuxinWen/AutomaticSpeechRecognition-ASR-
到此這篇關(guān)于Unity 實現(xiàn)語音識別功能的文章就介紹到這了,更多相關(guān)Unity 語音識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c# 通過wbemtest和WMI Code Cretor更加高效的訪問WMI
能找到這篇博客的,相信都是有操作WMI需求的了。本文將講述如何快速驗證、并集成到C#來操作WMI。2021-05-05C#語言基礎——結(jié)構(gòu)體和枚舉類型全面解析
下面小編就為大家?guī)硪黄狢#語言基礎——結(jié)構(gòu)體和枚舉類型全面解析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07詳解C# 網(wǎng)絡編程系列:實現(xiàn)類似QQ的即時通信程序
本篇主要介紹了c#實現(xiàn)類似QQ的即時通信程序 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼
本篇文章是對將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06