【发布时间】:2020-02-16 19:20:40
【问题描述】:
我是 C 编程新手,我想开发一个统一的游戏,包括一些语音检测,以响应游戏玩家的选择。关于如何实现这一点的任何想法?
【问题讨论】:
-
Unity 主要使用 C#。您是否打算为 Unity 编写本机插件?这远非微不足道(而且对于 SO 来说太宽泛了)
-
正确的术语叫做“speech to text”。谷歌。
我是 C 编程新手,我想开发一个统一的游戏,包括一些语音检测,以响应游戏玩家的选择。关于如何实现这一点的任何想法?
【问题讨论】:
对于所谓的 Speech To Text,您可以使用 KeywordRecognizer 或 PhraseRecognizer 作为 UnityEngine.Windows.Speech 的一部分。这是一个示例(在右侧的 Editor Inspector 窗格中填写单词):
using System;
using System.Text;
using UnityEngine;
// Put this check around any part you want to hide on other systems.
#if UNITY_STANDALONE_WIN
using UnityEngine.Windows.Speech;
#endif
public class KeywordScript : MonoBehaviour
{
[SerializeField] string[] keywords;
KeywordRecognizer recognizer;
void Start()
{
recognizer = new KeywordRecognizer(keywords);
recognizer.OnPhraseRecognized += OnPhraseRecognized;
recognizer.Start();
}
void OnPhraseRecognized(PhraseRecognizedEventArgs args)
{
print(args.text);
print(args.confidence);
}
}
请注意,至少在我们的项目中,根据特定的操作系统详细信息,一些用户无法使其正常工作;当您考虑到各种操作系统语言设置时,它也会变得更加棘手。最重要的是,单词通常根本无法正确理解,但这也部分取决于您过滤了多少命令词;如果你只有少量的单词,并且允许高容错性,那么在这方面你可能会得到很好的结果。
另请注意,此库仅适用于 Windows,因此您需要其他方法,例如Android 或 iOS。
【讨论】: