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

news2025/3/21 1:35:21

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. 大功告成!!!

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

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三月九次前端面试复盘:当场景题成为通关密钥

三月初集中面了包括字节、美团、滴滴在内的9家公司&#xff0c;经历7场技术面2场Leader面后&#xff0c;发现如今的面试逻辑已发生根本转变。这里分享真实经历与题目&#xff0c;供近期求职者参考。 一、面试形态变化&#xff1a;从理论背诵到实战推演 1. 八股文边缘化&#…

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态&#xff08;重点&#xff09; 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1&#xff1a;逗号表达式等同于逻辑与 && 误区 2&#xff1a;忽略输入…

鸿蒙NEXT项目实战-百得知识库05

代码仓地址&#xff0c;大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点&#xff1a; 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

黑马node.js教程(nodejs教程)——AJAX-Day01-04.案例_地区查询——查询某个省某个城市所有地区(代码示例)

文章目录 代码示例效果 代码示例 axiosTest.html <!DOCTYPE html> <!-- 文档类型声明&#xff0c;告诉浏览器这是一个HTML5文档 --> <html lang"en"> <!-- HTML根元素&#xff0c;设置文档语言为英语 --><head> <!-- 头部区域&am…

vue 自制列表,循环滚动

需求人员表示&#xff0c;超过高度的表格内容需要滚动展示&#xff0c;所以效果图如下&#xff1a; 自定义列表样式&#xff0c;主要是通过flex布局&#xff0c;控制 类th 与 类td 的宽度保持一致&#xff0c;标签结构还是参考了table的结构&#xff0c;由thead与tbody包裹tr再…

Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传

以下内容源于日常学习的整理&#xff0c;欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图&#xff1a; 注意&#xff0c;下面谈及的所有方式&#xff0c;都要求两者的IP地址处于同一网段&#xff0c;涉及到的软件资源见felm。 一、Windows主…

Windows Docker 报错: has no HTTPS proxy,换源

pull python 3.7报错&#xff1a; 尝试拉取Docker 测试库hello world也失败 尝试使用临时镜像源&#xff0c;可以成功拉取&#xff1a; sudo docker pull docker.m.daocloud.io/hello-world说明确实是网络问题&#xff0c;需要配置镜像源&#xff0c;为了方便&#xff0c;在d…

Java:Arrays类:操作数组的工具类

文章目录 Arrays类常见方法SetAll(); 代码排序如果数组中存储的是自定义对象 Arrays类 常见方法 SetAll(); 注意&#xff1a; 不能用新的数组接是因为修改的是原数组&#xff0c;所以完了要输出原数组发现会产生变化参数是数组下标变成灰色是因为还能简化&#xff08;Lambda…

只是“更轻更薄”?不!遨游三防平板还选择“更强更韧”

当消费电子领域普遍追求“更轻更薄”的设计美学时&#xff0c;遨游三防平板不止于此&#xff0c;还选择了另一条道路——“更强更韧”。在智能制造的复杂场景中&#xff0c;三防平板需直面高温、油污、撞击与极端气候的考验。普通消费级平板因防护性能不足&#xff0c;常因环境…

基于RAGFlow本地部署DeepSeek-R1大模型与知识库:从配置到应用的全流程解析

作者&#xff1a;后端小肥肠 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; DeepSpeek服务器繁忙&#xff1f;这几种替代方案帮你流畅使用&#xff01;&#xff08;附本地部署教程&#xff09;-CSDN博客 10分钟上手…

[蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)

[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti​ 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 D i D_{i} Di​ 个单位时间&#xff0c;即它最早可以于 T i T_{i} Ti​ 时刻…

信创系统极速文件查找:locate 命令详解

原文链接&#xff1a;信创系统极速文件查找&#xff1a;locate 命令详解 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇信创终端操作系统上 locate 命令详解的文章。在 Linux 及信创终端操作系统&#xff08;如 统信 UOS、麒麟 KOS&#xff09;中&#xff0c;查找…

C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)

C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09; 文章目录 C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09;一、上位机开发中的CSV应用背景二、CSV读写实战教学1. 基本对…

PostgreSQL:语言基础与数据库操作

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

蓝桥杯学习——二叉树+奇点杯题目解析

基础认知 一、二叉树种类&#xff1a; 1.满二叉树。记深度k&#xff0c;节点数量2^k-1。 2.完全二叉树&#xff1a;除了底层&#xff0c;其余全满&#xff0c;底部从左到右连续。 3&#xff0c;平衡二叉搜索树&#xff1a;左子树和右子树高度差不大于1。 二、存储方式&…

基于django+vue的购物商城系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…

AI安全、大模型安全研究(DeepSeek)

DeepSeek 点燃AI应用革命之火,但安全 “灰犀牛” 正在逼近 DeepSeek-R1国产大模型的发布,以技术创新惊艳了全球,更是极致的性价比推动国内千行百业接入 AI,政府、企业竞速开发智能业务处理、智能客服、代码生成、营销文案等应用,“落地效率” 成为第一关键词。然而与此相…

卷积神经网络 - 汇聚层

卷积神经网络一般由卷积层、汇聚层和全连接层构成&#xff0c;本文我们来学习汇聚层。 汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer)&#xff0c;其作用是进 行特征选择&#xff0c;降低特征数量&#xff0c;从而减少参数数量。 卷积层虽然可以显著减少网络中连接的…

论文分享:PL-ALF框架实现无人机低纹理环境自主飞行

在室内仓库、地下隧道等低纹理复杂场景中&#xff0c;无人机依赖视觉传感器进行自主飞行时&#xff0c;往往会遇到定位精度低、路径规划不稳定等难题。针对这一问题&#xff0c;重庆邮电大学计算机学院雷大江教授团队在IEEE Trans期刊上提出了一种新型自主飞行框架&#xff1a;…

Nodejs使用redis

框架&#xff1a;koa&#xff0c;通过koa-generator创建 redis: 本地搭建&#xff0c;使用默认帐号&#xff0c;安装说明地址以及默认启动设置&#xff1a;https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/ 中间件&#x…