[Android] 음성인식

Android 2011.03.22 18:04

2011.02.08 작성 / 2011.03.22 갱신(내용수정 없음)




음성인식은 간단하게 처리 할 수 있습니다.

1. 인텐트를 만들고
2. startActivityForResult 로 액티비티를 시작하고
3. onActivityResult 메소드를 override해서 음성인식 결과를 처리하면 됩니다.



 public void find_voice()
 {
// 인텐트를 만들고 액티비티를 시작한다.
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);    
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "주소록 음성 검색");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
startActivityForResult(intent, 17);
 }    

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) 
 {
if (requestCode == 17 && resultCode == RESULT_OK) 
{  
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// TODO Do something with the recognized voice strings     
// results에 음성인식 결과들이 들어가 있다.
// 이 부분에서 그 결과들로 어떤 처리를 할지 코딩하면 된다. 
}
super.onActivityResult(requestCode, resultCode, data);
 }  

requestCode는 숫자를 직접 지정해서 넘기지 않아도 된다. 상수를 사용해도 됩니다.
저는 명시적으로 하기 위해 숫자를 써두었을 뿐입니다.





인텐트 엑스트라(Intent extra)의 값들

RecognizerIntent.EXTRA_LANGUAGE_MODEL
  : 음성인식의 startActivity의 intent는 반드시 이 값을 가져야 합니다.
    RecognizerIntent에 정의되 있는 static 상수 중 하나를 사용하면 됩니다.
    ( 
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM / 
RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH )


RecognizerIntent.EXTRA_PROMPT 
  : 위의 음성인식 다이얼로그에 보이는 "주소록 음성 검색"위치에 들어갈 스트링입니다.


RecognizerIntent.EXTRA_MAX_RESULTS 
  : 잠재적 인식결과(potential recognition results)의 수를 제한한다. 라고 되있습니다.
    몇개의 결과를 보여줄지 라고 생각하면 될듯합니다.

RecognizerIntent.EXTRA_LANGUAGE
  : 인식할 언어가 Device의 기본값과 다를 경우 지정합니다.
    Locale 클래스에 정의된 언어 상수들 중 하나를 지정하면 됩니다.
    현재 설정된 기본 값은 Locale.getDefault() 메소드 호출로 알 수 있습니다.
Posted by croute

댓글을 달아 주세요

  1. Droider 2011.02.09 10:17  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 잘 봤습니다.
    질문이 있는데요 혹시 다이얼로그의 특성을 수정할 수 있나요?? 예를 들면 다이얼로그가 보이지 않게 한다든지 아니면 모양을 수정한다든지.. 너무 궁금합니다ㅠㅠ

  2. 안녕하세요 2012.02.05 13:14  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 정보 감사합니다!
    질문이있는데요 혹시 이 방법과 음성으로 문자보내는 어플의 방식과 같은건가요 ㅠㅠ?
    졸업프로젝트를 하고 있는데 어떻게 해야될지 잘 몰라서요 ㅠㅠㅠ

    • Favicon of https://croute.me BlogIcon croute 2012.02.08 16:24 신고  댓글주소  수정/삭제

      안드로이드 API를 사용했다면 같은 방식으로 했을거구요, 직접 음성인식하는 부분을 만들었다면 다른 방식일겁니다.
      어떤 어플을 말씀하시는 건가요? ㅎ