총 게시물 1,105건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[소스코드]

구글 음성 인식 사용하기(STT : Speech to Text)

글쓴이 : 카이로 날짜 : 2014-07-19 (토) 09:30 조회 : 44935
글주소 : http://www.androidside.com/B56/26206
SpeechToText.zip (149.9K), Down : 91, 2014-07-19 09:30:33
 
  마인즈랩 음성인식,음성합성
AI 전문기업 음성인식, 음성합성 서비스
mindslabmall.ai/
  STT 셀비 스피치
음성합성, 음성인식, TTS, 영어음성인식, 음성홈페이지, 음성기술 솔루션 전문
speech.selvasai.com
  인공지능음성인식 소리자바
인공지능 음성인식, 다자간대화인식, 특허등록, 외국어음성인식, STT, 녹취인식
www.sorizava.co.kr
신청하기


안드로이드 앱을 개발하다보면 사용자의 보이스 입력을 텍스트로 변환해야 할 경우가 있다. 이런 것을 Speech To Text, STT라고 하는데 구글에서는 이런 기능을 구현하여 보다 쉽게 사용 할 수 있게 만들었다.


구글의 STT는 2가지 사용법을 제공하고 있다. 한가지는 구글 음성인식 앱을 실행시켜 결과값을 얻는 방법이다. 이 방법은 구현이 굉장히 쉽다. 하지만 구글 음성인식 앱을 사용하기에 UI 부분에 있어서 자신의 앱과는 맞지 않을 수 있다. 2번째는 방법은 UI는 개발자들에게 맡기고 음성인식하는 기능 자체만 제공하는 방법이다. 이 방법은 개발자가 사용자의 입력 시작/종료, 인식 결과 성공/실패 같은 이벤트가 발생할 때 마다 그에 맞게 개발을 해야 해서 조금은 번거로울 수 있다.


1. 구글 음성인식 앱을 실행시켜 결과만 받아보기


*구글 음성인식 실행하기

Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);            //intent 생성
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());    //호출한 패키지
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");                            //음성인식 언어 설정
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "말을 하세요.");                     //사용자에게 보여 줄 글자


startActivityForResult(i, GOOGLE_STT);                                                //구글 음성인식 실행




*결과 받기

음성인식 결과는 onActivityResult 메소드를 통해서 받게 된다. 결과는 ArrayList 형태로 넘어오게 된다.


String key = RecognizerIntent.EXTRA_RESULTS;

mResult = data.getStringArrayListExtra(key);        //인식된 데이터 list 받아옴.
String[] result = new String[mResult.size()];            //배열생성. 다이얼로그에서 출력하기 위해
mResult.toArray(result);                                    //    list 배열로 변환


//1개 선택하는 다이얼로그 생성
AlertDialog ad = new AlertDialog.Builder(this).setTitle("선택하세요.")
                      .setSingleChoiceItems(result, -1, new DialogInterface.OnClickListener() {
                         @Override public void onClick(DialogInterface dialog, int which) {
                               mSelectedString = mResult.get(which);        //선택하면 해당 글자 저장
                         }
                       })
                       .setPositiveButton("확인", new DialogInterface.OnClickListener() {
                          @Override public void onClick(DialogInterface dialog, int which) {
                                mResultTextView.setText("인식결과 : "+mSelectedString);        //결과 출력
                           }
                        })
                       .setNegativeButton("취소", new DialogInterface.OnClickListener() {
                          @Override public void onClick(DialogInterface dialog, int which) {
                                mResultTextView.setText("");        //취소버튼 누르면 초기화
                                mSelectedString = null;
                          }
                       }).create();
ad.show();



2. 자신이 만든 UI에 음성인식 기술만 사용하기

음성인식의 또 다른 방법은 SpeechRecognizer 와 RecognitionListener를 이용하는 방법이다.


*음성인식 시작하기


Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);            //음성인식 intent생성
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());    //데이터 설정
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");                            //음성인식 언어 설정
        
mRecognizer = SpeechRecognizer.createSpeechRecognizer(this);                //음성인식 객체
mRecognizer.setRecognitionListener(listener);                                        //음성인식 리스너 등록
mRecognizer.startListening(i);


*음성인식 이벤트 받기

이벤트는 RecognitionListener를 통해서 받을수 있다.


//음성인식 리스너

private RecognitionListener listener = new RecognitionListener() {
   //입력 소리 변경 시
   @Override public void onRmsChanged(float rmsdB) {}


   //음성 인식 결과 받음
   @Override public void onResults(Bundle results) {}
        
   //음성 인식 준비가 되었으면
   @Override public void onReadyForSpeech(Bundle params) {}
        
   //음성 입력이 끝났으면
   @Override public void onEndOfSpeech() {}
        
   //에러가 발생하면
   @Override public void onError(int error) {}

   @Override public void onBeginningOfSpeech() {}                            //입력이 시작되면
   @Override public void onPartialResults(Bundle partialResults) {}       //인식 결과의 일부가 유효할 때

  

   //미래의 이벤트를 추가하기 위해 미리 예약되어진 함수
   @Override public void onEvent(int eventType, Bundle params) {}
   @Override public void onBufferReceived(byte[] buffer) {}                //더 많은 소리를 받을 때

};



*결과 받기

음성인식 결과는 RecognitionListener의 onResults(Bundle results)로 받을수 있다. 결과는 ArrayList 형태로 Bundle에 담겨 넘어오게 된다.키 값은 SpeechRecognizer.RESULTS_RECOGNITION 이다.




전체 샘플 코드 첨부하였습니다.

*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다.


출처 http://blog.daum.net/mailss/20




종합평점 (참여 25명)
로그인 창이 있는 "정보 수정"에서
서명 이쁘게 등록해보세요 ^^

추천 버튼을 클릭하면 추천한 자와 추천받은 자 모두에게 포인트가 지급됩니다.

NewTurn 2017-08-07 (월) 13:14
감사합니다.
댓글주소
쏘주째즈 2017-09-03 (일) 07:47
좋은 정보 감사합니다.
댓글주소
아이잉우 2017-09-11 (월) 18:56
감사합니다
댓글주소
작늑 2017-10-20 (금) 11:44
감사합니다.
댓글주소
안드로이드개… 2017-12-16 (토) 19:37
감사합니다.
댓글주소
씨디케이 2017-12-22 (금) 13:59
감사합니다
댓글주소
샤랗 2018-01-12 (금) 16:25
감사합니다.
댓글주소
구진형 2018-02-06 (화) 19:27
좋은정보 감사합니다.
댓글주소
saga11 2018-02-20 (화) 14:41
감사합니다.
댓글주소
Vbae 2018-07-15 (일) 20:54
많은 도움이 되었습니다
댓글주소
처음  1  2  3  4  5
이전글  다음글  목록 글쓰기

총 게시물 1,105건, 최근 0 건 안내 RSS
번호 분류 제목 글쓴이 날짜 추천 조회
1105 소스코드  안드로이드 두더지게임 (랭킹, 두더지 종류 -… 홍훙훙 10-04 0 523
1104 강좌  100 Days Google Dev, 3: Google Play Services 7.5 StanleyKou 01-24 1 1112
1103 강좌  100 Days Google Dev, 2: The Magic of LRU Cache StanleyKou 01-20 0 1071
1102 강좌  100 Days Google Dev, 1: Android Design Support Library 2 StanleyKou 01-18 0 1241
1101 TIP&TECH  리스트뷰에서 스위치,체크박스사용시 5 에찌 05-08 5 2857
1100 TIP&TECH  뷰(RecyclerView/...)에 Max Height 주기/[Android] 김병희라고요 04-26 0 2582
1099 TIP&TECH  TabLayout ClickEvent 에찌 04-21 1 2308
1098 TIP&TECH  현재 사용하고 있는 어플 foreground인지 backgroun… 4 에찌 04-14 2 3502
1097 TIP&TECH  안드로이드 Drawble 에 해상도 마다 이미지를 … 1 에찌 04-14 2 2285
1096 TIP&TECH  fragment 에서 ButterKnife 사용 시 resource가져올 때… 1 에찌 04-12 0 1860
1095 TIP&TECH  Youtube 및 facebook 동영상 업로드 할때 1 희망과꿈을 03-28 0 2363
1094 TIP&TECH  google service lib 가져올 때 3 에찌 03-20 3 2366
1093 소스코드  CentralRV 프로젝트 - RecyclerView 가로/세로 가운… 1 김병희라고요 01-30 2 4168
1092 TIP&TECH  번개검색 시스템/[Android] 2 김병희라고요 12-29 2 2872
1091 TIP&TECH  RecyclerView 특정 포지션으로 스크롤 - smoothScroll… 1 김병희라고요 12-12 1 3014
1090 강좌  왕앱따 107. 자바/C++ 파일읽기 속도 비교/[Androi 김병희라고요 11-26 0 3018
1089 강좌  왕앱따 106. C++ 동영상 강좌/[Android] 김병희라고요 11-23 0 3627
1088 소스코드  AOSP용 한글 키보드 입력키 엘카이저 11-17 1 3481
1087 강좌  addDrawerListener, setDrawerListener(deprecated)/[Android] 김병희라고요 11-02 2 3546
1086 강좌  왕앱따 103. 아이콘 반복클릭 테스트/[Android] 김병희라고요 11-01 0 2732
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  다음  맨끝
 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기