[안드로이드] 음성인식 관련 질문입니다.
by 따끈따끈베이커리 | 15.06.18 14:30 | 3,225 hit
안녕하세요 SpeechRecognizer 클래스 관련해서 질문이있는데요

3가지 질문이 있습니다.


1. 해당클래스는 오프라인으로 작동 되는걸로 알고잇는데요 왜 인터넷의 연결을 끊고 하면 네트워크 에러가 나는걸까요?

2. 인텐트 값을 줄때 
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName());
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 8000);
recognizerIntent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR");
recognizerIntent.putExtra("android.speech.extra.GET_AUDIO", true);
이렇게 주었는데요 startListening 로실행하면 intent 설정이 안먹힙니다(max값,소리지연)

startActivityForResult(intent, RESULT_SPEECH); <- 이함수로 실행하면 구글에서 제공해주는 UI는뜨지만 그래도
                                                          maxresult가 먹힙니다.
startListening(recognizerIntent);                   <- 이녀석으로 실행하면 language빼고 다안먹힙니다.

3. record된 파일을 남기고 싶은데 방법이 있을까요?

답변 부탁드립니다.

감사합니다.
질문자가 자신의 포인트 50 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 40을 드립니다.
질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

by nicehee 2015.06.18 18:36
1. 해당클래스는 오프라인으로 작동 되는걸로 알고잇는데요 왜 인터넷의 연결을 끊고 하면 네트워크 에러가 나는걸까요?
 
=> 이전까지 알기로는 구글음성인식은 음성을 녹음한후 구글서버로 보내서 음성인식후
    해당 음성과 가장 유사한 단어/문장을 몇개 추려서 어플로 응답해주는 식으로 구현되었는데요..
 
   그래서 네트웍이 정상적으로 연결이 되어야만 가능한것으로..
 
   안드로이드가 버전업되면서 이 기능을 폰에 모두 포함되었다는 이야기는 못들은것같은데요
   오프라인에서 된다는 이야기는 어디서 들으셨는지요?
   출처를 알려주심 저도 함 조사해보지용...
   플리즈!!!
 
추천 0 반대 0
by 따끈따끈베이… 2015.06.19 08:31
[@nicehee]
http://www.androidhive.info/2014/07/android-speech-to-text-tutorial/
해당 클래스 offline이 지원되서  젤리빈 이후로는 음성언어팩이 있어야 되는걸로 알고있어요
그래서 삼성같은경우에는 s-voice라는 것을 이용해서 해당 클래스쓰면 에러가 나구요..
문서로 정리된게 없으니 다구글링 ㅋㅋ
추천 0 반대 0
by UnlimitedJava 2015.06.19 09:19
[@따끈따끈베이커리]
Offline으로 되긴 하는데요 인식률의 정도는 대학생과 초딩(혹은 유딩) 정도로 확 떨어집니다.
그래서 Offline으로 하는게 의미가 없을 겁니다. 음성인식을 Offline으로 할려면 자체 DB 구축하든지 뭐 그렇게 해야될텐데요...
추천 0 반대 0
by 따끈따끈베이… 2015.06.19 11:46
[@UnlimitedJava]

답변 감사합니다.

OFFLINE으로 할려는게 아니고 안드로이드에서 되는 SpeechRecognizer 클래스가 offline이라

api서버랑 통신하는거는 50개 한정적이라 사용할수가 없더라구요
추천 0 반대 0
by nicehee 2015.06.19 09:35
[@따끈따끈베이커리]
언어팩을 설치해도 영어권은 그런데로 쓸만했었는데
한국어는 별로였었지요. 
구글서버 갔다와도 마찬가지였었던거 같구요

한국어만하려면 다음에서 만든 음성인식을 사용해보셔요
영어만큼 품질이 나오더군요

이건 다음 서버연동이므로 네트웍이 살아있어야 됩니당
추천 0 반대 0
by 따끈따끈베이… 2015.06.19 11:48
[@nicehee]

영어만 필요한데요
google speech to text api는 제한50개가 있는게 그래서...  
추천 0 반대 0
by nicehee 2015.06.19 15:34
[@따끈따끈베이커리]
가능하면 네트웍이 연결된 상태에서 시도하라고 하셔요
그렇지않으면 제데로 결과를 얻기 어렵다고 메시지를 띄우거나
네트웍 연결이 안된상태에서는 시도조차 못하게 하심이..
괜히 욕먹을 필요는 없으니까...
추천 0 반대 0
안드로이드사이드 PC버전 로그인