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

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

글쓴이 : 카이로 날짜 : 2014-07-19 (토) 09:30 조회 : 41957
글주소 : http://www.androidside.com/B56/26206
SpeechToText.zip (149.9K), Down : 90, 2014-07-19 09:30:33
 
  STT 셀비 스피치
음성합성, 음성인식, TTS, 영어음성인식, 음성홈페이지, 음성기술 솔루션 전문
speech.selvasai.com
  인공지능음성인식 소리자바
딥러닝 기반의 인공지능 음성인식, 다자간대화인식, 외국어음성인식, 특허등록
www.sorizava.co.kr
  위메프 STT
최대 90% 역대급할인! 위메프 특가, 하나만 사도 무료배송, STT
www.wemakeprice.com
신청하기


안드로이드 앱을 개발하다보면 사용자의 보이스 입력을 텍스트로 변환해야 할 경우가 있다. 이런 것을 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
감사합니다.
댓글주소
처음  1  2  3  4  5
이전글  다음글  목록 글쓰기

총 게시물 1,105건, 최근 0 건 안내 RSS
번호 분류 제목 글쓴이 날짜 추천 조회
1105 소스코드  안드로이드 스튜디오 (oreo) 설문조사 어플 개… sooooom 06-16 0 54
1104 강좌  100 Days Google Dev, 3: Google Play Services 7.5 StanleyKou 01-24 0 621
1103 강좌  100 Days Google Dev, 2: The Magic of LRU Cache StanleyKou 01-20 0 635
1102 강좌  100 Days Google Dev, 1: Android Design Support Library 2 StanleyKou 01-18 0 730
1101 TIP&TECH  리스트뷰에서 스위치,체크박스사용시 4 에찌 05-08 5 2073
1100 TIP&TECH  뷰(RecyclerView/...)에 Max Height 주기/[Android] 김병희라고요 04-26 0 1816
1099 TIP&TECH  TabLayout ClickEvent 에찌 04-21 1 1630
1098 TIP&TECH  현재 사용하고 있는 어플 foreground인지 backgroun… 4 에찌 04-14 2 2471
1097 TIP&TECH  안드로이드 Drawble 에 해상도 마다 이미지를 … 1 에찌 04-14 1 1684
1096 TIP&TECH  fragment 에서 ButterKnife 사용 시 resource가져올 때… 1 에찌 04-12 0 1363
1095 TIP&TECH  Youtube 및 facebook 동영상 업로드 할때 1 희망과꿈을 03-28 0 1776
1094 TIP&TECH  google service lib 가져올 때 3 에찌 03-20 3 1800
1093 소스코드  CentralRV 프로젝트 - RecyclerView 가로/세로 가운… 1 김병희라고요 01-30 1 3157
1092 TIP&TECH  번개검색 시스템/[Android] 2 김병희라고요 12-29 2 2358
1091 TIP&TECH  RecyclerView 특정 포지션으로 스크롤 - smoothScroll… 1 김병희라고요 12-12 1 2251
1090 강좌  왕앱따 107. 자바/C++ 파일읽기 속도 비교/[Androi 김병희라고요 11-26 0 2411
1089 강좌  왕앱따 106. C++ 동영상 강좌/[Android] 김병희라고요 11-23 0 2819
1088 소스코드  AOSP용 한글 키보드 입력키 엘카이저 11-17 1 2573
1087 강좌  addDrawerListener, setDrawerListener(deprecated)/[Android] 김병희라고요 11-02 2 2942
1086 강좌  왕앱따 103. 아이콘 반복클릭 테스트/[Android] 김병희라고요 11-01 0 2207
 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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기