网上有很多相关教程,但是说的不全,在此记录一下
1 只能识别提前设置好的语句,不能实现实时文字转语音
2 并非像网上说的那样只能识别关键词,实际上是可以识别句子的,长句也可以
3 需要提前安装windows的语音包,否则会报不能使用语音识别,安装方式为 w10的开始菜单-设置-时间和语言-语音,通常来说你安装输入法的中文语言时会附带安装语音识别,如果没有,请从我说的地方确认并重新安装
4 注意你的麦克风,普通耳机在手机上通常可以同时使用耳机可麦克风,但是插电脑的麦克风接口上是不行的,电脑必须使用专用的带麦克风接口的耳机或麦克风,普通的耳机,插在电脑麦克风插口里,能识别设备,但是说话不会有声音
5 识别是实时的,启动后直接说话就可以
6 如果需要监听途中更换关键词,必须释放监听者,然后重启监听者,否则,只会检测最初的关键词
7 关键词的数量必须大于0
8 语音包安装好后不需要网络,不需要任何验证操作,可以直接使用
代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Windows.Speech;
/// <summary>
/// 语音识别
/// </summary>
public class SpeechRecognition : MonoBehaviour
{
/// <summary>
/// 关键词
/// </summary>
public string[] keywords = {
"你每天忘记的事有上千件,为什么不也忘了这件事","麦克·迪圣塔"};
/// <summary>
/// 语音监听者
/// </summary>
private PhraseRecognizer phraseRecognizer;
//监听级别
private ConfidenceLevel confidenceLevel = ConfidenceLevel.Medium;
void Start()
{
if (phraseRecognizer == null)
{
//语音识别器
phraseRecognizer = new KeywordRecognizer(keywords, confidenceLevel);
//注册检测到短语的事件
phraseRecognizer.OnPhraseRecognized += OnPhraseRecognized;
print("开始监听语音输入");
phraseRecognizer.Start();
}
}
private void OnDestroy()
{
if (phraseRecognizer != null)
{
phraseRecognizer.Dispose();
}
}
/// <summary>
/// 检测到对应短语的事件实例函数
/// </summary>
/// <param name="args"></param>
private void OnPhraseRecognized(PhraseRecognizedEventArgs args)
{
//此处添加识别到对饮关键字的操作
print(args.text);
}
}