unity之简单的语音交互

这篇具有很好参考价值的文章主要介绍了unity之简单的语音交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

做一个记录。

实现的效果为通过麦克风输入简单的指令,让cube动起来。

例如:我说“旋转”,它能旋转;我说“停止”,它就停止。

我使用的版本是unity2019.4.11f1,更高版本的应该也可以,但我没试过。

unity语音通讯,unity,语音识别

首先,创建项目

unity语音通讯,unity,语音识别

创建一个平面、物体cube。

unity语音通讯,unity,语音识别

使用动画机相关操作实现动作。

创建Animator Controller动画状态机,右侧Inspector窗口可以改名字,改为cube,挂到cube上面。

unity语音通讯,unity,语音识别 unity语音通讯,unity,语音识别

 【ps:如果找不到Animator那俩窗口了,去window里面找。】

unity语音通讯,unity,语音识别

创建state。橙色块为启动后自动跳的第一个状态,即默认状态。也就是说启动后Entry→idle是无条件转换的。

Entry和橙色状态之间的转换不能删除,一开始就跳到橙色块的状态。所以要设置为静止状态。如果将橙色块直接设置旋转状态,那么一运行就自动跳到这里了,小球开局即跳,语音指令就没有意义了。

【可以通过右键灰色状态块,Set As Layer Default State 将该状态设置为默认状态。这里的设置都是灵活、不唯一的,我只记录我的过程。】

unity语音通讯,unity,语音识别

再创建一个空的State,改名为Rotate,表示旋转状态。

unity语音通讯,unity,语音识别

创建动画Animator,改名为Rotate。

unity语音通讯,unity,语音识别

将动画Rotate挂到状态Rotate上:

①点击灰色块Rotate

②点击动画Rotate,不要松鼠标

③将动画Rotate拖到状态Rotate的Motion属性上。

unity语音通讯,unity,语音识别

拖好的效果。

unity语音通讯,unity,语音识别

这时我们回到Scene窗口,点击cube,在Animation窗口创建Property,我们这里想实现的效果是旋转,所以在Transform里面找Rotation。

unity语音通讯,unity,语音识别

给cube设置跳跃的动作:

①左侧可以展开

②、③添加关键帧

④让cube绕y轴转360°

⑤点击播放可以查看效果。

unity语音通讯,unity,语音识别

状态的转换。回到Animator窗口,右键idle,Make Transition到Rotate。表示由idle静止状态到Rotate旋转状态的转换。

unity语音通讯,unity,语音识别

这里需要一个参数来判断转不转换。是布尔类型的。

unity语音通讯,unity,语音识别

改名为Rotating。

unity语音通讯,unity,语音识别 右键单击idle,添加从idle到Rotate的转换。

unity语音通讯,unity,语音识别

同样添加从Rotate到idle的转换。

unity语音通讯,unity,语音识别

添加转换条件,当参数Rotating 为true时,发生从idle到Rotate的转换。

unity语音通讯,unity,语音识别

从Rotate到idle同理,设为false。

unity语音通讯,unity,语音识别

然后就到代码部分了。因为之前没基础,也是查了很多资料,参考了各路大神的代码。

创建C#脚本。【我习惯放到文件夹里】

unity语音通讯,unity,语音识别

下面是完整代码。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;

public class SpeechInteraction : MonoBehaviour
{
    //一些必要的定义
    private KeywordRecognizer keywordRecognizer;//单词识别器
    private Dictionary<string, Action> actions = new Dictionary<string, Action>();//创建一个字典并初始化【必须初始化】,实现string和Action的配对。
    Animator animator;//动画机

    // Start is called before the first frame update
    void Start()
    {
        actions.Add("旋转",Rotate);//注册配对,说“旋转”对应Rotate函数。
        actions.Add("停止",Stop);//说“停止”对应Stop函数。
       
        //监听语音输入,并尝试将说出的短语与注册关键字列表匹配
        keywordRecognizer = new KeywordRecognizer(actions.Keys.ToArray()); 
        keywordRecognizer.OnPhraseRecognized += Recognizedspeech;
        keywordRecognizer.Start();

        //动画机
        animator = this.transform.GetComponent<Animator>();
    }

    private void Recognizedspeech(PhraseRecognizedEventArgs speech)//把识别到的语句打印出来
    {
        Debug.Log(speech.text);
        actions[speech.text].Invoke();
    }

    private void Rotate()//旋转
    {
        animator.SetBool("Rotating", true);//Rotating为状态转换参数
    }
    private void Stop()//停止
    {
        animator.SetBool("Rotating", false);
    }
}

官方关于KeywordRecognizer的手册:Windows.Speech.KeywordRecognizer - Unity 脚本 API

里面说仅在 Windows 10 上可用,我是win11也可以的。

测试结果:

说“旋转”:是可以动起来的。

unity语音通讯,unity,语音识别

说“停止”:是会停的。 

unity语音通讯,unity,语音识别

控制台:

unity语音通讯,unity,语音识别

 文章来源地址https://www.toymoban.com/news/detail-755535.html

到了这里,关于unity之简单的语音交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • App Inventor 2 语音交互机器人Robot,使用讯飞语音识别引擎

    App Inventor 2 语音识别及交互App。识别语言指令并控制机器人运动,主要用到语音识别器及文本朗读器组件,语音识别相关开发最佳入门。代码逻辑简单,App交互性及趣味性非常强~ 视频预览 教程入口:App Inventor 2 中文网(www.fun123.cn) - 登陆 - “项目指南” - 语音机器人Ro

    2024年02月14日
    浏览(47)
  • TTS技术在语音识别中的应用:提升语音交互的准确性

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着人工智能技术的快速发展,语音助手、智能家居等智能设备越来越普及,语音交互已经成为人们日常生活中的重要组成部分。为了更好地提升语音交互的准确性,TTS技术(文字到语音技术)在语音识别中的应用显得尤为

    2024年02月11日
    浏览(49)
  • AI与语音识别合成:开启智能交互新时代

    引言: 随着人工智能(AI)技术的不断发展,语音识别和语音合成成为了人机交互领域的重要组成部分。语音识别技术使得机器能够理解人类的语言,而语音合成则使得机器能够以人类自然的语音形式进行回应。本文将深入探讨AI与语音识别合成的技术原理、应用场景以及未

    2024年04月23日
    浏览(48)
  • 基于百度语音识别、文心一言大模型、百度语音合成的一套完整的语音交互(利用Python实现)

           本人小白,因为毕设项目需要用的语音交互,便查网上的资料利用百度api实现,比较简单的过程,供大家借鉴批判。 项目框架大致分为3步:(1)百度语音识别可以将我们输入的语音转化为文本输入到文心一言大模型;(2)文心一言大模型根据输入以输出响应文本;

    2024年04月17日
    浏览(57)
  • 人工智能技术在智能音箱中的应用:智能语音识别与智能交互

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 智能音箱作为智能家居的重要组成部分,近年来得到了越来越多的用户青睐。随着人工智能技术的不断发展,智能音箱的核心功能之一——智能语音识别与智能交互也越来越受到人们的关注。智能语音识别技术可以让用户更

    2024年02月07日
    浏览(59)
  • Unity原生语音识别/无插件/可离线/不需要联网 语音识别

    直接上代码,保证自己的设备连接了麦克风,之后把下面代码直接挂在场景的空物体上,运行即可

    2024年02月03日
    浏览(47)
  • 免费的语音识别 API:简单实现语音转文本功能

    语音识别技术在现代信息处理和人机交互中扮演着重要角色。如果您正在寻找免费的语音识别 API,那么您来对地方了!本文将向您介绍一个简单的方法来实现语音转文本的功能,并提供相应的源代码供参考。 首先,您需要使用 Python 编程语言来实现这个功能。Python 提供了许

    2024年02月03日
    浏览(57)
  • 6款支持中文语音识别开源软件的简单使用

    摘自百度百科 语音识别技术,也被称为自动语音识别(Automatic Speech Recognition,ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。与说话人识别及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含

    2024年02月12日
    浏览(49)
  • springboot整合vosk实现简单的语音识别功能

    Vosk是开源的语音识别工具包。Vosk支持的事情包括: 支持十九种语言 - 中文,英语,印度英语,德语,法语,西班牙语,葡萄牙语,俄语,土耳其语,越南语,意大利语,荷兰人,加泰罗尼亚语,阿拉伯, 希腊语, 波斯语, 菲律宾语,乌克兰语, 哈萨克语。 移动设备上脱机工作

    2024年02月09日
    浏览(43)
  • Unity+chatgpt+webgl实现声音录制+语音识别

            AI二次元女友这个项目持续更新,在window端的语音识别和语音合成的功能,在上一篇博文里已经详细说明了微软Azure语音服务的代码实现。也是为了实现一次代码,多端复用这样的诉求,所以全部的代码实现都改成了web api的方式。然而在实测发布到webgl的时候,就发现

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包