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

안녕하세요! STT 관련해서 고수님들의 도움이 필요합니다ㅠ

0 추천

안녕하세요. 안드로이드를 공부하고 있는 학생인데요~

현재 오픈소스를 따와서 하고있는데요...

이 소스는 현재 액티비티가 안뜨면서 문장을 말하고 말을 끝내야 음성인식한 결과값을 한꺼번에 나타내는데요. 말을 안하면 기능이 활성화가 안되고 버튼을 다시 눌러야 음성인식을 하더라구요.

저는 음성을 인식할때마다 그때그때 결과값을 타이핑 하는것처럼 하게 하고 싶구, 음성이 꺼지더라도 다시 켜지게 하고 싶은데 어느 코드를 수정해야 할까요 ㅠ 

도와주세요 ㅠㅠ

 

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    Intent intent;
    SpeechRecognizer mRecognizer;
    EditText editText;
    private final int MY_PERMISSIONS_RECORD_AUDIO = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.RECORD_AUDIO)
                != PackageManager.PERMISSION_GRANTED) {

            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.RECORD_AUDIO)) {

            } else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.RECORD_AUDIO}, MY_PERMISSIONS_RECORD_AUDIO
                );
            }
        }

        intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");

        mRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
        mRecognizer.setRecognitionListener(recognitionListener);


        editText = (EditText) findViewById(R.id.editText); 


        

  
    public void getSpeechInput(View view) {
        mRecognizer.startListening(intent);
    }

    private RecognitionListener recognitionListener = new RecognitionListener() {
        @Override
        public void onReadyForSpeech(Bundle bundle) {
        }

        @Override
        public void onBeginningOfSpeech() {
        }

        @Override
        public void onRmsChanged(float v) {
        }

        @Override
        public void onBufferReceived(byte[] bytes) {
        }

        @Override
        public void onEndOfSpeech() {
        }

        @Override
        public void onError(int i) {
            editText.setText("너무 늦게 말하면 오류뜹니다");

        }

        @Override
        public void onResults(Bundle bundle) {
            String key = "";
            key = SpeechRecognizer.RESULTS_RECOGNITION;
            ArrayList<String> mResult = bundle.getStringArrayList(key);

            String[] rs = new String[mResult.size()];
            mResult.toArray(rs);

            editText.setText(rs[0]);
        }

        @Override
        public void onPartialResults(Bundle bundle) {
        }

        @Override
        public void onEvent(int i, Bundle bundle) {
        }
    };
}
익명사용자 님이 2017년 11월 24일 질문

1개의 답변

0 추천
익명사용자 님이 2017년 11월 24일 답변
감사합니다. 근데 에러가 좀 많이 뜨는거 같네요 ㅠ.
...