private static void PhraseRecognitionSystem_InvokeStatusChangedEvent(SpeechSystemStatus status)
 {
     StatusDelegate onStatusChanged = OnStatusChanged;
     if (onStatusChanged != null)
     {
         onStatusChanged(status);
     }
 }
Example #2
0
 private static void PhraseRecognitionSystem_InvokeStatusChangedEvent(SpeechSystemStatus status)
 {
     PhraseRecognitionSystem.StatusDelegate onStatusChanged = PhraseRecognitionSystem.OnStatusChanged;
     if (onStatusChanged != null)
     {
         onStatusChanged(status);
     }
 }
    private void StatusHandler(SpeechSystemStatus status)
    {
        Debug.Log("SPEECH API STATUS CHANGED: " + status);

        if (status != SpeechSystemStatus.Running)
        {
            RebindVoiceCommands();
        }
    }
    // Update is called once per frame
    void Update()
    {
        // if any text has been recognized from speech, stop STT service
        if (dictationResult != tempString)
        {
            tempString      = dictationResult;
            inputField.text = dictationResult;
            StopSpeechToText();
        }

        // update STT status variable
        if (dictationRecognizer.Status != dictationRecognizerStatus)
        {
            dictationRecognizerStatus = dictationRecognizer.Status;
        }
    }
Example #5
0
 private static void PhraseRecognitionSystem_InvokeStatusChangedEvent(SpeechSystemStatus status)
 {
     PhraseRecognitionSystem.OnStatusChanged?.Invoke(status);
 }
Example #6
0
    // Update is called once per frame
    void Update()
    {
        WakeWordState  = WWEList[0].GetState();
        DictationState = STT.GetState();
        //lasse das Mikrofon Overlay blinken, falls TTS aktiv ist

        /*if (DictationState.Equals(SpeechSystemStatus.Running))   {
         *  StartCoroutine("FlashMicrophoneOverlay");
         * }*/
        //WakeWordStateText.text = WakeWordState.ToString();
        //DictationStateText.text = DictationState.ToString();


        if (WantToChangeToWakeWordDetection)
        {
            Debug.LogError("*****Sie möchten zur WakeWordEngine wechseln...");
            if (DictationState.Equals(SpeechSystemStatus.Running))
            {
                Debug.LogError("....aber der DictationMode lief noch.****");
                Debug.LogError("DictationState: " + DictationState);
                Debug.LogErrorFormat("ASRQueue Count: {0}", ASRModeSwitchQueue.Count);
            }
            else if (DictationState.Equals(SpeechSystemStatus.Stopped))
            {
                Debug.LogError("....und los gehts.*******");
                foreach (IWakeWordEngineInterface WWE in WWEList)
                {
                    WWE.StartDetection();
                }
                WantToChangeToWakeWordDetection = false;
                isSwitchingASRMode = false;
            }
            else
            {
                Debug.LogErrorFormat("......_______________ERROR!!!__________...DictationState steht auf: {0}", DictationState);
            }
        }

        /*if(PhraseRecognitionSystem.Status.Equals(SpeechSystemStatus.Stopped) && STT.dictationRecognizer.Status.Equals(SpeechSystemStatus.Stopped))
         * {
         *  Debug.Log("------ Keine Spracherkennung aktiv. Starte WakeWordEngine");
         *  SwitchToWakeWordDetection("fehler erkannt");
         * }*/

        int i = 0;

        foreach (AsrSwitchDelegate command in ASRModeSwitchQueue)
        {
            Debug.LogErrorFormat("Befehl {0} befindet sich an Position {1}", command.Method.Name, i);
            i++;
        }

        //Falls zuletzt ausgeführter Wechsel fertig -> nehme den nächsten aus der Warteschlange und führe ihn aus
        if (ASRModeSwitchQueue.Count != 0)
        {
            if (!isSwitchingASRMode)
            {
                if (ASRModeSwitchQueue.Count == 1)   //Bei nur einem in der Liste und keinem der gerade arbeiten kann direkt gewechselt werden
                {
                    //Ignoeriere Wechsel, wenn dieser Modus bereits aktiv ist
                    if ((ASRModeSwitchQueue.Peek().Method.Name.Equals(SwitchToSTT.Method.Name) && DictationState.Equals(SpeechSystemStatus.Stopped)) || (ASRModeSwitchQueue.Peek().Method.Name.Equals(SwitchToWWE.Method.Name) && WakeWordState.Equals(SpeechSystemStatus.Stopped)))
                    {
                        Debug.LogError("Haben nur einen Befehl in der Warteschlage und führen diesen aus.");
                        ASRModeSwitchQueue.Dequeue()();
                    }
                    else
                    {
                        Debug.LogError("Modus in den gewechselt werden soll ist bereits aktiv. -> Pop ohne Ausführung");
                        ASRModeSwitchQueue.Dequeue();
                    }
                }

                else
                {
                    if (ASRModeSwitchQueue.Peek().Method.Name.Equals(SwitchToSTT.Method.Name))
                    {
                        //Debug.LogError("Nehme das vordere der Warteschlage weg. **STT Befehl**");
                        //ASRModeSwitchQueue.Dequeue()();
                        AsrSwitchDelegate topFunction = ASRModeSwitchQueue.Dequeue();

                        if (DictationState.Equals(SpeechSystemStatus.Stopped))     //wenn zur STT gewechselt werden soll darf diese momentan nicht aktiv sein
                        {
                            Debug.LogError("Nehme das vordere der Warteschlage weg. **STT Befehl**");
                            topFunction();
                            //ASRModeSwitchQueue.Dequeue()();
                        }
                        else
                        {
                            Debug.LogErrorFormat("DictationState steht auf: {0}. Ich kann daher nicht zu STT wechseln. --POP--", DictationState);
                        }
                    }

                    else if (ASRModeSwitchQueue.Peek().Method.Name.Equals(SwitchToWWE.Method.Name))  //für WWE muss STT beendet sein
                    {
                        //Debug.LogError("Nehme das vordere der Warteschlage weg. **WWE Befehl**");
                        //ASRModeSwitchQueue.Dequeue()();

                        AsrSwitchDelegate topFunction = ASRModeSwitchQueue.Dequeue();
                        if (WakeWordState.Equals(SpeechSystemStatus.Stopped))
                        {
                            Debug.LogError("Nehme das vordere der Warteschlage weg. **WWE Befehl**");
                            topFunction();
                            //ASRModeSwitchQueue.Dequeue()();
                        }
                        else
                        {
                            Debug.LogErrorFormat("WakeWordState steht auf: {0}. Ich kann daher nicht zu WWE wechseln.--POP--", WakeWordState);
                        }
                    }
                    else
                    {
                        Debug.LogErrorFormat("Konnte Methode {0} nicht ausführen, da der Gegenpart noch lief.", ASRModeSwitchQueue.Peek().Method.Name);
                    }
                }
            }
            else if (isSwitchingASRMode)
            {
                Debug.LogErrorFormat("Warte mit Mode Wechsel... ein anderer wechselt noch. WWEState: {0}, STTState: {1}", WakeWordState, DictationState);
            }
        }
        else
        {
            //Debug.Log("Kein Wechsel beantragt.");
        }

        if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.H))
        {
            RefreshWakeWordDetection();
        }
    }
    private SpeechSystemStatus dictationRecognizerStatus;       // variable to check if STT is active

    /// <summary>
    /// This method initilizes necessary variables with default values
    /// </summary>
    void Start()
    {
        dictationRecognizer       = new DictationRecognizer();
        dictationRecognizerStatus = SpeechSystemStatus.Stopped;
        voiceIconAnimator.enabled = false;
    }
Example #8
0
 void SpeechSystemStatusFn(SpeechSystemStatus status)
 {
     Debug.Log("Speech System Status: " + status);
 }