반응형
구글 음성 API 흔히 적혀있는 SPEECH TO TEXT에 대한 Tutorial 파일입니다.
Gradle에 다른 특별한 셋팅은 없네요. 필요한 권한은 인터넷과 오디오 부분입니다.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
Intent 데이터중에 RecognizerIntent가 있는데 그 데이터들을 셋팅하여 startActivityResult를 사용하여 구글 음성API를 사용하시고 onActivityResult로 데이터를 받아 사용하시면 되겠습니다.
public class GoogleActivity extends Activity implements RecognitionListener{ private SpeechRecognizer speech; private Intent recognizerIntent; private final int RESULT_SPEECH = 1000; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_google); speech = SpeechRecognizer.createSpeechRecognizer(this); speech.setRecognitionListener(this); findViewById(R.id.btn_start).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "ko-KR"); //언어지정입니다. recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5); //검색을 말한 결과를 보여주는 갯수 startActivityForResult(recognizerIntent, RESULT_SPEECH); } }); } @Override public void onEndOfSpeech() { } @Override public void onReadyForSpeech(Bundle bundle) { } @Override public void onResults(Bundle results) { ArrayList<String> matches = results .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); for(int i = 0; i < matches.size() ; i++){ Log.e("GoogleActivity", "onResults text : " + matches.get(i)); } } @Override public void onError(int errorCode) { String message; switch (errorCode) { case SpeechRecognizer.ERROR_AUDIO: message = "오디오 에러"; break; case SpeechRecognizer.ERROR_CLIENT: message = "클라이언트 에러"; break; case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS: message = "퍼미션없음"; break; case SpeechRecognizer.ERROR_NETWORK: message = "네트워크 에러"; break; case SpeechRecognizer.ERROR_NETWORK_TIMEOUT: message = "네트웍 타임아웃"; break; case SpeechRecognizer.ERROR_NO_MATCH: message = "찾을수 없음";; break; case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: message = "바쁘대"; break; case SpeechRecognizer.ERROR_SERVER: message = "서버이상";; break; case SpeechRecognizer.ERROR_SPEECH_TIMEOUT: message = "말하는 시간초과"; break; default: message = "알수없음"; break; } Log.e("GoogleActivity", "SPEECH ERROR : " + message); } @Override public void onRmsChanged(float v) { } @Override public void onBeginningOfSpeech() { } @Override public void onEvent(int i, Bundle bundle) { } @Override public void onPartialResults(Bundle bundle) { } @Override public void onBufferReceived(byte[] bytes) { } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case RESULT_SPEECH : { if (resultCode == RESULT_OK && null != data) { ArrayList<String> text = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); for(int i = 0; i < text.size() ; i++){ Log.e("GoogleActivity", "onActivityResult text : " + text.get(i)); } } break; } } } }
반응형
'프로그램 > Android' 카테고리의 다른 글
안드로이드 애니메이션 Xml이용[Android Animation] (0) | 2017.09.11 |
---|---|
안드로이드 DatePicker, TimePicker 사용법 (0) | 2017.09.07 |
안드로이드 실행중인 서비스 체크[Android Service Running Check] (0) | 2017.09.06 |
안드로이드 웹뷰 셋팅[Webview Setting] (0) | 2017.09.06 |
안드로이드 플레이스토어 버전체크(업데이트 체크) (1) | 2017.09.05 |