마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

TTS 설정을 했더니 따발총처럼 음성이 나와서...

0 추천

 

if (squat) {

      if(Math.abs(leftHip.getPosition().x - leftKnee.getPosition().x) < 30){ //서있을 때
        chk_squat = 0;
        knee_check = 0;
        sit_check = 0;
      }
      if (leftHeel.getPosition().x > leftFootIndex.getPosition().x){ // 왼쪽을 보고있을 떼
        //무릎이 발밖으로 많이 나올경우
        if (knee_check == 0 && leftKnee.getPosition().x < leftFootIndex.getPosition().x || rightKnee.getPosition().x < rightFootIndex.getPosition().x) {

          knee_check++;
          tts1.speak("무릎을 넣어주세요.", TextToSpeech.QUEUE_FLUSH, null);


        }

        //서있지 않으면서 무릎과 엉덩이의 각도가 90도보다 작아지게 제대로 앉지 않았을 경우
        else if(sit_check == 0 && chk_squat < 7 && Math.abs(leftHip.getPosition().x - leftKnee.getPosition().x) > 30 && (leftKnee.getPosition().y - leftHip.getPosition().y > 0 &&  leftKnee.getPosition().y - leftHip.getPosition().y <=45 )){

            sit_check++;
            tts1.speak("더 앉아주세요.", TextToSpeech.QUEUE_FLUSH, null);

          chk_squat++;
        }
      }
      else { //오른쪽 보고 있을 때
        //무릎이 발밖으로 많이 나올경우
        if(Math.abs(rightHip.getPosition().x - rightKnee.getPosition().x) < 30){ //서있을 때
          chk_squat = 0;
          knee_check = 0;
          sit_check = 0;
        }
        if (knee_check == 0 && leftKnee.getPosition().x > leftFootIndex.getPosition().x + 40 || rightKnee.getPosition().x > rightFootIndex.getPosition().x + 40) {

            knee_check++;
            tts1.speak("무릎을 넣어주세요.", TextToSpeech.QUEUE_FLUSH, null);

        }
        // 서있지 않으면서 무릎과 엉덩이의 각도가 90도보다 작아지게 제대로 앉지 않았을 경우
        else if (sit_check == 0 && chk_squat < 7 && Math.abs(rightHip.getPosition().x - rightKnee.getPosition().x) > 30 && (rightKnee.getPosition().y - rightHip.getPosition().y > 0 &&  rightKnee.getPosition().y - rightHip.getPosition().y <=45)) {

            sit_check++;
            tts1.speak("더 앉아주세요", TextToSpeech.QUEUE_FLUSH, null);

          chk_squat++;
        }
      }
    }

 

만들고자 하는 것은 tts 음성이 한 번만 구현되게 하고싶은데...혹시 다른 방법이 없을까요??ㅜㅜ

안스초보 (120 포인트) 님이 2021년 4월 8일 질문

1개의 답변

0 추천
  1. 할 말을 리스트로 만든 다음에 한 문장이 끝나면 다음 문장 읽게하기
  2. 말을 시작할 때 기존에 하는 말이 있으면 강제로 종료하기

따발총 같다는 말이 읽는 속도가 빠른 건지, 여러 문장이 동시에 나온다는 건지는 모르겠지만, 예전에는 저런 방법을 썼습니다.

쎄미 (162,410 포인트) 님이 2021년 4월 8일 답변
따발총 같다는 말이
원하고자 하는 구현 반응은 스쿼트 시 어느 기준 포인트 이상 덜 내려갔을 때 "더 앉아주세요"라는 tts음성을 구현하는것인데 실제 결과로는 "더 더 더 더 더 ...."처럼 무한 반복적으로 tts음성이 구현된 것입니다...
혹시 이 문제를 해결할 구체적인 코드를 알려주실 수 있으실까요?ㅜㅜ
기준 포인트이상 덜 내려갔을 때 계속 tts를 읽으라고 하는 거 같은데요. tts 다 읽었다는 건 리스너 달면 알 수 있으니, 말이 다 끝나면 또 읽게 하면 될 것 같아요.
...