public void Speech() //speech.Say -> SY;hello S say:"..."
        {
            // say:,said:,reco:,lbl:,+idle,+end

            if (vr == null)
            {
                RefreshParser("", "IDLE,END,NOIDLE,NOEND", "SAY,SAID,RECO");
                if (vr.SAY != null && vr.RECO == null)
                {
                    vr.IDLE = !vr.NOIDLE;
                    vr.END  = !vr.NOEND;
                }
            }


            if (vr.SAID != null)
            {
                float conf = vr.CONF[0] == null ? 0.9f : int.Parse(vr.CONF[0]) / 100.0f;
                if (plugin.Said(vr.SAID[0], conf))
                {
                    NextAction();
                }
                return;
            }


            if (vr.SAY != null)
            {
                string say = vr.SAY[0];
                if (vr.IDLE || vr.END)
                {
                    $"{(vr.IDLE ? "S +IDLE!" : "")}S SAY:\"{say}\" RECO:2{(vr.END ? "!S +IDLE" : "")}".ReplaceCurrentCommand();
                    return;
                }
                plugin.Say(say);
                NextAction();
                return;
            }

            if (vr.IDLE && !plugin.Speaking)
            {
                NextAction();
            }
        }