当前位置: 首页 > news >正文

Unity3D开发AI桌面精灵/宠物系列 【二】 语音唤醒 ivw 的两种方式-Windows本地或第三方讯飞等

Unity3D 交互式AI桌面宠物开发系列【二】ivw 语音唤醒


该系列主要介绍怎么制作AI桌面宠物的流程,我会从项目开始创建初期到最终可以和AI宠物进行交互为止,项目已经开发完成,我会仔细梳理一下流程,分步讲解。 这篇文章主要讲有关于语音唤醒ivw方面的一些方法。


提示:内容纯个人编写,欢迎评论点赞,来指正我。

文章目录

  • Unity3D 交互式AI桌面宠物开发系列【二】ivw 语音唤醒
  • 前言
  • 一、什么是ivw语音唤醒?
  • 二、Unity 内置语音唤醒 API
    • 1.API讲解
    • 2.方法讲解
    • 2.方法封装
  • 三、讯飞ivw语音唤醒接入本地版
    • 1. 注册账号
    • 2. 领取免费测试包
    • 3. 创建应用
    • 4. 设置唤醒词
    • 5. 生成SDK
    • 6. 下载插件包
    • 7. 替换SDK库
    • 8. 修改配置
    • 9. 运行程序
    • 10. 大功告成!!!
  • 总结


前言

本篇内容主要讲Unity开发桌面宠物语音唤醒功能,大家感兴趣也可以了解一下这个开发方向,目前还是挺有前景的,AI智能科技发展这么迅猛,紧跟步伐哈~

下面让我们出发吧 ------------>----------------->


一、什么是ivw语音唤醒?

顾名思义,就是用户可以通过使用指定关键词来让桌面宠物做某件事或者有某种响应。原理即是通过实时监听用户语音,来检测其中是否含有指定关键词,监听到之后绑定某个事件。

在这里插入图片描述

二、Unity 内置语音唤醒 API

1.API讲解

  • KeywordRecognizer类
  • 引入命名空间 using UnityEngine.Windows.Speech;
  • 通过 Windows 系统自带的一个dll库,在Unity封装后可以轻松使用

2.方法讲解

  • private string[] m_Keywords = { “小姐姐” };
    首先声明一个关键词数组
  • private KeywordRecognizer m_Recognizer;
    然后创建一个关键词识别器
  • m_Recognizer.OnPhraseRecognized += OnPhraseRecognized;
    然后给识别器绑定一个用户的自定义事件
  • m_Recognizer.Start();
    这个是识别器的打开方法
  • m_Recognizer.Stop();
    这个是识别器的关闭方法

2.方法封装

  • 直接上代码,前面讲解过使用大概方法了
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
#if UNITY_STANDALONE_WIN
using UnityEngine.Windows.Speech;
#endif
/// <summary>
/// unity内置语音唤醒 windows有效
/// </summary>
public class UnityWakeOnVoice : MonoBehaviour
{
    /// <summary>
    /// 关键词
    /// </summary>
    [SerializeField]
    private string[] m_Keywords = { "小姐姐" }; 
    /// <summary>
    /// 关键字识别器
    /// </summary>
#if UNITY_STANDALONE_WIN
    private KeywordRecognizer m_Recognizer;
    
    void Start()
    {
        //创建一个关键字识别器
        m_Recognizer = new KeywordRecognizer(m_Keywords);
        Debug.Log("创建识别器成功");
        m_Recognizer.OnPhraseRecognized += OnPhraseRecognized;
    }

    /// <summary>
    /// 开始识别
    /// </summary>
    public void StartRecognizer()
    {
        if (m_Recognizer == null)
            return;
        if (!m_Recognizer.IsRunning)
        {
            m_Recognizer.Start();
        }
    }
    /// <summary>
    /// 结束识别
    /// </summary>
    public void StopRecognizer()
    {
        if (m_Recognizer == null)
            return;
        if (m_Recognizer.IsRunning)
        {
        m_Recognizer.Stop();
        }
    }
    
    /// <summary>
    /// 识别关键词回调
    /// </summary>
    /// <param name="args"></param>
    private void OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        StringBuilder builder = new StringBuilder();
        builder.AppendFormat("{0}", args.text);
        string _keyWord = builder.ToString();
        Debug.Log("识别器捕捉到关键词:"+_keyWord);   
    }

    private void OnDestroy()
    {
        if (m_Recognizer != null)
        {
            m_Recognizer.OnPhraseRecognized -= OnPhraseRecognized;
            if (m_Recognizer.IsRunning)
            {
                m_Recognizer.Stop();
            }
            m_Recognizer.Dispose();
            m_Recognizer = null;
        }
    }
    #endif
}

  • 代码很简单,根据需求直接调用Start方法开始识别,Stop进行关闭就可以了
  • 重点来了,第三方平台的唤醒怎么接入,下面来看一下讯飞平台的吧

三、讯飞ivw语音唤醒接入本地版

1. 注册账号

在这里插入图片描述

  • 注册讯飞账号,新用户有免费的服务量可以用来测试。注册完登录点击控制台

2. 领取免费测试包

在这里插入图片描述

  • 按需求领取,领测试包,我的是二级测试包,新人也有不一样的包,领语音唤醒的包

3. 创建应用

在这里插入图片描述在这里插入图片描述

  • 点击用户下面的 “我的应用” 然后创建应用,命名语音唤醒的应用,创建成功后会生成一个APPKey或者APPID 保存好。

4. 设置唤醒词

在这里插入图片描述

-自己随便设置唤醒词,最好是不要加标点,可以同时设置好几个。

在这里插入图片描述

-点击前往SDK下载中心

5. 生成SDK

在这里插入图片描述

  • 一定要先点回到旧版,新版没有普通的语音唤醒的,根据需求选择,可能和我的界面不一样,没关系,选择语音唤醒的包,点击下载。如果提示设置唤醒词,就再去设置一下。

6. 下载插件包

地址:讯飞语音唤醒的SDK离线版

7. 替换SDK库

  • 打开自己下载的讯飞的语音唤醒的SDK包
    在这里插入图片描述
  • 找到bin文件下的 msc_x64.dll 和msc.dll 分别是64位和32位的库,对应系统装

在这里插入图片描述

  • 将Unity中的msc_x64的库替换成自己的,直接粘贴替换

8. 修改配置

在这里插入图片描述

-修改脚本中的APPId为自己创建应用生成的APPId

9. 运行程序

在这里插入图片描述

-运行程序,大声喊出你在平台设置的关键词,然后看控制台是否有打印,成功的回调事件自行扩展哦~ 我测试是成功的。

10. 大功告成!!!

在这里插入图片描述
比心啦 ❥(^_-)

在这里插入图片描述语音唤醒功能就实现啦!
二选一 总有你喜欢的!!!

总结

  • 提示: 大家根据需求来做功能,后续继续其他功能啦,不懂的快喊我。
  • 大家可以在评论区讨论其他系列下一期出什么内容,这个系列会继续更新的
  • 点赞收藏加关注哦~ 蟹蟹

相关文章:

  • 一些常用的docker镜像及命令 python各版本(持续更新中)
  • pnpm config set ignore-workspace-root-check true
  • 【Spring Boot 中 `@Value` 注解的使用】
  • Python散点图(Scatter Plot):高阶分析、散点图矩阵、三维散点图及综合应用
  • 塔能智慧运维箱:智慧城市的“量子跃迁”,创新与售后的双轨驱动
  • 硬件基础(5):(1)二极管初步认识
  • Git 使用笔记
  • 基于大模型的唇裂手术全流程预测与应用研究报告
  • CLR中的marshal_context 介绍
  • redis分布式锁实现Redisson+redlock中watch dog是如何判断当前线程是否持有锁进行续租的呢?
  • Redis HyperLogLog
  • 希尔伯特变换
  • http header参数的key包含下划线时遇到的一个问题
  • 1. 初识golang微服务-gRPC
  • Vite+微前端Qiankun-状态管理
  • 【GL008】C++ 入门基础(2)之 多态案例
  • centos【rockylinux】安装【supervisor】的注意事项【完整版】
  • Android开发中的Native 调试
  • Go语言的基础类型
  • STM32和PN532 寻卡实验
  • 长三角铁路“五一”假期运输今启动:预计发送旅客量增6%,5月1日当天有望创新高
  • ​关键词看中国经济“一季报”:韧,长期向好看底气
  • 外交部:欢迎外国朋友“五一”来中国
  • 全国电影工作会:聚焦扩大电影国际交流合作,提升全球影响力
  • 马上评丨机械停车库成“僵尸库”,设计不能闭门造车
  • 起底网红热敷贴“苗古金贴”:“传承人”系AI生成,“千年秘方”实为贴牌货