구글 음성인식이 요즘 상당히 정확하다, 웬만하면 다 제대로 알아듣고, 띄어쓰기까지 제대로 해준다.
네트워크가 될때 되는건지, 휴대폰 혼자만으로도 되는건지 궁금해졌다.
1. 음성녹음 RECORD_AUDIO 런타임퍼미션 기능이 있어야함
2. 구글 음성인식 Intent를 전역변수로 넣어줌
3. RecognitionListener를 달아줘야함, 해당 리스너에 모든 내용이 있음.
mRecognizer.setRecognitionListener( new RecognitionListener()
{
@Override
public void onResults(Bundle results)
{ }
});
4. SpeachRecognizer에 startListening으로 시작해줘야함
5. mRecognizer.startListening ( i );
실제로 이런 화면이 나오지는 않는다.
그냥 인식하는 비프음 정도만 나온다.
//<uses-permission android:name="android.permission.RECORD_AUDIO"/>
//전역변수 Intent i;
//전역변수 SpeechRecognizer mRecognizer;
//==================== 구글음성인식 ==================
i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");
mRecognizer = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
mRecognizer.setRecognitionListener(new RecognitionListener()
{
@Override
public void onRmsChanged(float rmsdB)
{
}
@Override
public void onResults(Bundle results)
{
String key= "";
key = SpeechRecognizer.RESULTS_RECOGNITION;
ArrayList<String> mResult = results.getStringArrayList(key);
String[] rs = new String[mResult.size()];
mResult.toArray(rs);
Log.v("DEBUG","정상결과 : " + rs[0]);
}
@Override
public void onReadyForSpeech(Bundle params)
{
}
@Override
public void onPartialResults(Bundle partialResults)
{
}
@Override
public void onEvent(int eventType, Bundle params)
{
}
@Override
public void onError(int error)
{
Log.v("DEBUG","에러입니다.");
}
@Override
public void onEndOfSpeech()
{
}
@Override
public void onBufferReceived(byte[] buffer)
{
}
@Override
public void onBeginningOfSpeech()
{
Log.v("DEBUG","말해주세요.");
}
});
Button button1 = (Button) findViewById(R.id.button1) ;
button1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View view)
{
if(checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED )
{
requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 1);
return;
}
try
{
mRecognizer.startListening(i);
}
catch(SecurityException e)
{
e.printStackTrace();
}
}
});
/*
* 음성인식/출력 객체가 남아있다면 실행을 중지하고 메모리에서 제거
*/
@Override
public void onDestroy() {
super.onDestroy();
if(tts != null){
tts.stop();
tts.shutdown();
tts = null;
}
if(mRecognizer!=null){
mRecognizer.destroy();
mRecognizer.cancel();
mRecognizer = null;
}
}
'APP DEVELOPER > Android 안드로이드' 카테고리의 다른 글
안드로이드 - 스크롤뷰 XML 스크롤이 생기는 VIEW (0) | 2019.10.01 |
---|---|
안드로이드 - 부분 슬라이드 좌우 스와이프 My Pager (0) | 2019.10.01 |
Android/안드로이드 - 어플백업방법 (0) | 2019.09.09 |
Android/안드로이드 - 휴대폰 전화번호 추출 (0) | 2019.09.09 |
[안드로이드] HTTP로 이미지파일 BITMAP 받아오기 (0) | 2019.09.08 |