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

Speech to Text 기능에서 Text 결과물이 자꾸 중복되어 나와요.

0 추천

안녕하세요. 완전 안드로이드 초보 입니다..

지금 현재 실시간 STT 기능을 구현하고 있습니다. 

Activity 이동 없이 버튼 누르면 음성인식 되고, 실시간으로 EditText에 입력이 되도록 하는게 게 목표입니다.

현재 Activity 이동없이, RecognitionListener의 onPartialResults 를 이용하여 실시간으로 EditText에 입력이 되는것 까지는 구현했습니다만. 

onPartialResults이 계속 불리는지, 텍스트에 자꾸 내용이 중첩되서 나옵니다.

예를들어 "안녕하세요 가나다라마바사입니다 반가워요" 라고 한다면  "안녕하세요 안녕하세요 가나다라마바사입니다 반가워요 안녕하세요 가나다라마바사입니다 가나다라마바사입니다 가나다라마바사입니다 반가워요 반가워요 " 뭐 이런식으로 비슷하게 나옵니다.

하루종일 찾아봐도 잘 모르겠네요.. onBufferRecieved를 건드려야하는지, 고수님들의 도움 부탁드립니다!.

리스너 코드는 아래있습니다.

private RecognitionListener listener = new RecognitionListener() {

    @Override
    public void onReadyForSpeech(Bundle params) {
        Log.d(TAG, "Ready for speech " + params);
    }
    @Override
    public void onBeginningOfSpeech() {
        progressBar1.setMax(10);
    }
    @Override
    public void onRmsChanged(float rmsdB) {
        progressBar1.setProgress((int) rmsdB);
    }
    @Override
    public void onBufferReceived(byte[] buffer) {
    }
    @Override
    public void onEndOfSpeech() {
    }
    @Override
    public void onError(int error) {
        Log.d(TAG, getErrorText(error));
    }

    @Override
    public void onResults(Bundle results) {
        Log.d(TAG, "full results");
    }
    @Override
    public void onPartialResults(Bundle partialResults) {

            receiveResults(partialResults);
    }
    @Override
    public void onEvent(int eventType, Bundle params) {

    }
};

private void receiveResults(Bundle results) {

    if ((results != null) && results.containsKey(SpeechRecognizer.RESULTS_RECOGNITION)) {
        List<String> heard = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
        resultText = heard.get(0);
        txtText.append(resultText);


    }
}

 

 

박태우 (120 포인트) 님이 2016년 1월 25일 질문

1개의 답변

0 추천
익명사용자 님이 2016년 1월 26일 답변
...