// Start is called before the first frame update
    public void Start()
    {
#if PLATFORM_ANDROID
        if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
        {
            Permission.RequestUserPermission(Permission.Microphone);
        }
#endif
        //voiceTest = new VoiceTest();
        voiceC    = this.transform.GetChild(2).gameObject;
        voiceTest = voiceC.GetComponent <VoiceTest>();
        VoiceController voiceController = voiceC.GetComponent <VoiceController>();
        voiceTest.InitPluin();
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
        pandaBot            = new pandaAIMLBot();
        pandaBot.Start();
        speechController = new myvoiceController();
        var aSources = GetComponents <AudioSource>();
        userAudioSource                  = aSources[0];
        pandaOutputAudioSource           = aSources[1];
        originalPosition                 = gameObject.transform.position;
        originalRotationValue            = transform.rotation;
        speechController.audioSource     = pandaOutputAudioSource;
        speechController.myHandleTextBox = myHandleTextBox;
        animator = GetComponent <Animator>();
        speechController.animator = animator;
        robotOutput.text          = "Hi, I am panda bot. How can I help you?";
        Debug.Log(robotOutput.text);
        if (voiceTest.isIntialised())
        {
            //StartCoroutine(voiceTest.TTS(robotOutput.text));
            voiceTest.TTS(robotOutput.text);
        }
        else
        {
            StartCoroutine(speechController.sendRequestToRSSAndPlayAudio(robotOutput.text));
        }
        animator.Play("talking");
        animator.Play("waving");
        clipSampleData       = new float[1024];
        userAudioSource.clip = null;
        //Invoke("voiceTest.TTS(robotOutput.text)", 1);
        Idle();
    }
    private void Talk()
    {
        //inputField.text = "Talk called.....";

        if (animator != null)
        {
            Debug.Log("Talk called");
            //inputField.text = "Talk called.";
            gameObject.transform.position = originalPosition;

            transform.rotation = Quaternion.Slerp(transform.rotation, originalRotationValue, Time.time * 1.0f);
            if (!(voiceTest.myResponse == null))
            {
                inputField.text = "My question is: " + voiceTest.myResponse;
                char[] a = voiceTest.myResponse.ToCharArray();
                a[0] = char.ToUpper(a[0]);
                string userAudioResponse = new string(a);
                string answer            = pandaBot.getResponse(userAudioResponse);
                animator.Play("talking");
                voiceTest.TTS(answer);
                //StartCoroutine(voiceTest.TTS(answer));
                //StartCoroutine(speechController.sendRequestToRSSAndPlayAudio(answer));
                robotOutput.text = answer;
                SwitchState();

                //Invoke("SwitchState", 4);
            }
            else
            {
                myHandleTextBox.text = "Please speak loudly.";
                Invoke("SwitchState", 1);
            }
        }
        else
        {
            inputField.text = "Animator is not running.";
        }
    }