unity 使用windows自带的语音识别

网上有很多相关教程,但是说的不全,在此记录一下

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);
    }
    
}

猜你喜欢

转载自blog.csdn.net/weixin_44568736/article/details/122057930
今日推荐