【Quest开发】接入语音转文字
参考官方文档:https://developers.meta.com/horizon/documentation/unity/voice-sdk-tutorials-overview
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72
硬件:Meta Quest3
注意:需全程科学上网
Meta提供了一个免费的api供大家使用— Wit.ai
这个也是云端把结果发回客户端,所以需要联网。 我最后实现的效果也很基础,只是获取了它转出来的文字而已
使用步骤:
一、在wit.ai登录自己的账号创建一个APP(就是meta账号)
找到Settings复制Server token
界面里的其他东西属于高阶用法,涉及到语音内容理解,我这里暂时不展开解释,语音转文字功能也不需要配置这个。有兴趣的同学看一下官方文档,大概就是能使用语音命令来程序化生成、改变一些东西吧,理解语音里的关键词
https://developers.meta.com/horizon/documentation/unity/voice-sdk-tutorials-2
二、配置Unity里的内容
Meta XR All in One SDK本身是包含Voice SDK的,所以不需要额外导入
1、点击GetStarted界面初始化语音资产,将上一步复制的token粘贴上去
创建后会让你取个名字啥的把asset保存下来,我这里随便取的名字存到了根目录
2、打开Project Settings > Player找到Other Settings进行如下配置
选择 IL2CPP 将构建切换为 64 位 IL2CPP
对于 Android 应用,在 Configuration 下的 Internet access 列表中,选择 Require ,以防止返回 NameResolutionFailure
错误。
3、打开voice hub检查一下是否自动进行了配置,配置好的应该长这样
没配置好也没关系,把之前创建的asset拖进去就行了
三、在场景中添加脚本
这里有两种选择
1、BuildingBlocks直接添加
但是博主还没有测试过这个方法怎么获得转出的文本,这里先不展开讲
2、 在左上角找到Assets > Create > Voice SDK > Add App Voice Experience to Scene
得到这样一个物体
大家这个时候可以连上头盔测一下能否正常运行(用模拟器讲话是不会有反应的!!!),运行后App Voice Experience里会出现下面这个东西,点activate
点击后说话。注意超过设定时间(MaxRecordingTime)就会自动关闭
说完点Deactivate或者等一会就会自动关
有时候会检测不出来,大家可以重试几次试试,有一次能成功都说明配置没问题,可能是网络不好。
四、自定义脚本调用api
using System.Collections;
using System.Collections.Generic;
using Meta.XR.BuildingBlocks.Editor;
using Oculus.Voice;
using Oculus.Voice.Dictation;
using UnityEngine;
using UnityEngine.UI;public class TranscriptionTest : MonoBehaviour
{public AppVoiceExperience appVoiceExperience;[ContextMenu("施法")]public void ReleaseSkill(){appVoiceExperience.Activate();appVoiceExperience.TranscriptionEvents.OnPartialTranscription.AddListener(Test);}public void Test(string content){Debug.Log("Speak:"+content);}
}
很简单的一个脚本,功能就是在Inspector点一下能输出说话内容到console里而已,挂在哪都行,我这里直接挂在App Voice Experience上了
连着头盔运行后稍等一会(因为App Voice Experience连接服务器需要一段时间),右键单击TranscriptionTest点施法,随便说点啥,我这里说的是旋风
会输出这一串就成功咯,可以看到它正确识别出了旋风