ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Google STT 테스트 결과
    개발/개발관련 2020. 7. 23. 15:19
    반응형

    0. Google STT 사용 이유

    저번에 annyangjs를 이용해서 음성인식 테스트 했었는데, 대부분 stt는 서버가 있는 상태에서 하는 경우가 많음.

    아마 ai를 적용해서 서버로 통신해서 그런거같기도하고. 그리고 Google이라고하면 많은 사람들에게 신뢰받으니까. (난 그닥..)

    무튼 그래서 annyangjs 해봤으니 테스트겸 구글꺼도 해보자

    1. Google STT 환경 세팅

    환경세팅은 문서에 나온것과 같이 따라하면되고, 나는 자바서버를 이용하기때문에 자바소스를 참고했다.

    api 키같은거 등록하는거에서 일차로 막히고 자바소스 적용하는데 이차로 막혔다...

    기본 예제소스는 적용한 사례가 좀 있었는데 나는 마이크로 입력된 음성을 글자로 변환해야한다. 따로 참고할만한게 없어서 순전히 api문서만 참고했다.

    자바 소스를 뭐 어떻게 넣어서 적용시켜야하는지...

    돌리면 뭐 못찾는단 에러가 나는데 일단 라이센스관련 에러나 google 관련 에러는 안뜨니까 api등록은 된거같으니 패스.

    일단 차근차근 해보자

    2. ajax 통신

    일단 화면이 뜨거나 액션이 있거나 그 후에 음성인식이 되어야하므로 스크립트에서 ajax로 통신을 해야할거같다.

    spring + maven으로 구성되어있어서 컨트롤러에 넘겼다. 컨트롤러에서는 구글에서 제공하는 stt 자바 함수를 호출했다.

    어디까지 어떻게 진행이 되는지 일단 로그를 사이사이 넣어줬다.

    a.js -> controller.java -> streamingMicRecognize()(구글에서 제공하는 자바함수)에서 syso로 출력

    중간중간 막히긴했었지만 내 실수여서 패스~

    여기서 텍스트를 결과로 return해서 jsp화면에 뿌려줘야한다. 그래서 streamingMicRecognize()함수를 좀 고쳐봤다.

    public void로 되어있는걸 String 반환하게 해줬는데 아예 이 함수를 못찾더라. 다 맞게 고친거같은데...

    테스트니까 그냥 클래스 안에 음성인식 후 받은 텍스트 setter, 텍스트 getter를 만들어줬다.

    그러고 controller.java에서 호출해서 받았다.

    StreamingMicRecognize streaming = new StreamingMicRecognize();
    streaming.streamingMicRecognize();
    String str = streaming.getStt();    //getStt()가 추가한 만든 함수
    //syso str 하면 컨트롤러에서도 출력이된다.

    컨트롤러에서 결과 return해서 a.js에서 콜백으로 받아서 뿌려주니까 jsp에 음성인식한 텍스트가 뜬다!

    3. 약간의 수정

    jsp에서 버튼을 만들어서 버튼 클릭하면 음성인식이 시작되게끔 수정했다.

    그리고 시간이 1분으로 잡혀있는데 streamingMicRecognize()함수 안 하단부분에 if (estimatedTime > 60000)~

    이런 부분이 있다.

    여기선 60초로 잡혀있으니 적당히 줄여서 쓰면될것같다. 나는 30초로 바꿨다가 10초로 더 줄였다.

    4. 약간의 테스트 결과

    1. 영어

    영어가 기본이니 영어로 테스트를 진행했다. 영어는 네이버 파파고의 회화를 활용했고, 성우가 읽어주는 음성을 마이크에 들려주었다.(내가 읽으면 혹시나 발음때문에 못알아듣지 않을까 해서... ㅠㅠ)

    문제는... 완벽히 인식이 되는건 아니라는거다.......

    당연히 전문 성우가 읽어주고, 구글 stt니까 어느정도 완벽할거라 생각했는데... 주변소음, 음성의 크기 등등 복합적인 요소때문인지 완벽하게 인식을 하진 못했다.

    하지만 주변 잡음이 없고 음성의 크기가 크면 인식률이 올라가긴한다. 영어로 인사 주고받는 짧은문장 2문장정도를 들려주었다. (헬로 하와유 파인 이정도)

    2. 한국어

    한국어는 얼마나 인식이 잘되는지 테스트를 진행했다. 영어와 같이 파파고 회화를 이용했고, 성우의 음성을 들려주었다.

    한국어도 잡음이나 음성크기등 주변 환경에 영향을 좀 받는다. 근데... 완전 정확하진 않다.... 오를 우로 알아듣는다거나 반환된 텍스트를 읽으면 의미는 유추할 수 있지만 전혀 다른 글자가 나오는경우가 영어보다 많다.

    영어데이터보단 한국어 데이터가 적으니 어쩔수 없을것같긴한데, 한국어만 음성인식을 하려면 네이버나 카카오에서 제공하는 음성인식 api를 사용하는게 훨씬 좋다.

    한국어에 한해서는 인식률이 구글보다 뛰어나다. (구글에서 찾으면 한국어 한정 구글, 네이버, 카카오 인식률관련된 논문이 있다. 그리고 테스트상에서도 비슷한 결과가 나온다.)

    5. 결과

    일단 나는 한국어, 영어 둘다 되어야하고 일단 현재는 문장이 아닌 단어형태로 진행할 것이고, 영어의 비중이 더 높기때문에 지금은 구글이나 annyangjs 둘중에 하나를 쓸것이다.

    근데 의외로 인식률이 좋지 않아서 놀랬다. 내 발음이 이상한건가. siri 정도 생각했는데 더 안좋은듯...

    일단 말한것과 비슷한 발음도 같이 나오는데 그중에 내가 원하는 단어가 있을 때, 이벤트를 발생시켜야겠다.

    자연어로 문장 분석해서 뭐 하는건 진짜 시리만드는 것과 같으니 내 영역이 아니고.. 챗봇기능은 여기저기 많으니 단어 중심으로 그 단어를 말했냐 말 안했냐를 따져야겠다.

    반응형

    댓글

Designed by Tistory.