0

我正在为 HoloLens2 的学士论文编写应用程序,并且我熟悉 C#/Unity。

我尝试了一整天来让它工作:

using UnityEngine.Windows.Speech;

public class test : MonoBehaviour
{
    private GrammarRecognizer m_recognizer;
    public GrammarRecognizer Recognizer { get => m_recognizer; set => m_recognizer = value; }

    void Start()
    {
        Recognizer = new GrammarRecognizer(Application.streamingAssetsPath + "/SRGS/test.xml");
        Recognizer.OnPhraseRecognized += Recognizer_OnPhraseRecognized;
        Recognizer.Start();
    }

    private void Recognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        Debug.Log("I recognized something");
    }

    void Update()
    {
        if(Recognizer.IsRunning)
        {
            Debug.Log("Running");
        }
    }
}

这是我的 xml 文件/代码:

<grammar version="1.0" xml:lang="en-US" root="rootRule"
 xmlns="http://www.w3.org/2001/06/grammar">

    <rule id="rootRule">
        <item>play</item>
    </rule>

</grammar>

语法识别器正在运行,我没有收到任何错误。听写或全局关键字识别等其他功能运行良好,但我需要在我的应用程序中进行更复杂的短语识别。文件由 GrammarRecognizer 正确加载。

我的 Unity 版本是 2020.3.6f1 Visual Studio 2019(版本 16.9.4)(我为 HoloLens2 构建了一个应用程序,并在 UWP 平台上的 XRSDKProfil 中使用 Unity 中的 MRTK。)

-> 我在 MRTK 中添加了 Data Providers Windows Speech Input 和 Windows Dictation Input(听写工作正常) -> 我的麦克风工作正常并被 Unity 使用

我猜这似乎是 XML 文件的问题,我在这里尝试了一堆不同的变体,但没有任何效果。我在互联网上的任何地方都没有发现任何有用的东西,请帮助我。

4

0 回答 0