KewordRecognizer в Unity: MissingMethodException - PullRequest
1 голос
/ 28 марта 2019

Я пытаюсь поэкспериментировать с программой распознавания голоса в единстве. Я использую UnityEngine.Windows.Speech.KeywordRecognizer. Однако всякий раз, когда я запускаю программу, я получаю следующую ошибку:

MissingMethodException: попытка доступа к недостающий метод. UnityEngine.Windows.Speech.KeywordRecognizer..ctor (System.String [] ключевые слова, UnityEngine.Windows.Speech.ConfidenceLevel минимальная уверенность) (при /Users/builduser/buildslave/unity/build/Runtime/Export/Windows/Speech.cs:221) UnityEngine.Windows.Speech.KeywordRecognizer..ctor (System.String [] ключевые слова) (в /Users/builduser/buildslave/unity/build/Runtime/Export/Windows/Speech.cs:201) VoiceRecognition.Start () (в разделе «Ресурсы / VoiceRecognition.cs: 23)

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

public class VoiceRecognition : MonoBehaviour
{
    public string[] keywords = { "right", "left", "up", "down" };
    public ConfidenceLevel confidence = ConfidenceLevel.Low;
    public float speed = 1;

    public Text results;
    public Image target;

    private KeywordRecognizer recognizer;
    protected string word = "right";

    private void Start()
    {
        if (keywords != null)
        {
            recognizer = new KeywordRecognizer(keywords, confidence); #Source of error
            recognizer.OnPhraseRecognized += Recognizer_OnPhraseRecognized;
            recognizer.Start();
        }
    }

    private void Recognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        word = args.text;
        results.text = "You said: <b>" + word + "</b>";
    }

    #Code to move image
    private void Update()
    {
        var x = target.transform.position.x;
        var y = target.transform.position.y;

        switch (word)
        {
            case "up":
                y += speed;
                break;
            case "down":
                y -= speed;
                break;
            case "left":
                x -= speed;
                break;
            case "right":
                x += speed;
                break;
        }

        target.transform.position = new Vector3(x, y, 0);
    }

    private void OnApplicationQuit()
    {
        if (recognizer != null && recognizer.IsRunning)
        {
            recognizer.OnPhraseRecognized -= Recognizer_OnPhraseRecognized;
            recognizer.Stop();
        }
    }
}

Я ожидал, что смогу переместить изображение, когда пользователь говорит «вправо», «влево», «вверх» или «вниз», но я продолжаю получать исключение MissingMethodException, и мое изображение продолжает двигаться в одном направлении независимо от того, о чем я говорю.

...