using UnityEngine;
using UnityEngine.Windows.Speech;
public class SpeechRecognition : MonoBehaviour
{
[Header("关键词")]
public string[] keywords;
PhraseRecognizer phraseRecognizer;// 短语识别器
ConfidenceLevel confidenceLevel = ConfidenceLevel.Medium;// 可信度
void OnEnable()
{
StartRecognizePhrase();
}
void OnDisable()
{
StopRecognizePhrase();
}
private void OnDestroy()
{
//判断场景中是否存在语音识别器,如果有,释放
if (phraseRecognizer != null)
phraseRecognizer.Dispose();
}
/// <summary>
/// 开启短语识别
/// </summary>
void StartRecognizePhrase()
{
if (phraseRecognizer == null)
{
//创建一个识别器
phraseRecognizer = new KeywordRecognizer(keywords, confidenceLevel);
//通过注册监听的方法
phraseRecognizer.OnPhraseRecognized += phraseRecognizer_OnPhraseRecognized;
}
//开启识别器
phraseRecognizer.Start();
}
/// <summary>
/// 停止短语识别
/// </summary>
void StopRecognizePhrase()
{
if (phraseRecognizer != null)
phraseRecognizer.Stop();
}
/// <summary>
/// 当识别到关键字时,会调用这个方法
/// </summary>
private void phraseRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
{
RecognitionSpeechExecution(args.text);
print(args.text);
}
/// <summary>
/// 识别到语音的操作
/// </summary>
void RecognitionSpeechExecution(string msg)
{
switch (msg)
{
case "你好":
Debug.LogError(msg);
break;
case "开始测试":
break;
case "结束测试":
break;
}
}
}
03-01
1118

05-23
3102

03-07