TTS와 STT는 이미 많은 사람들이 사용하고 있었고, 실제로 구현하는데 크게 어려움이 없었다.
정확성은 굉장히 좋았으며(실제 20번정도 말하면 1번 틀릴까말까 할 정도), 안드로이드에서 여러가지 언어로도 지원이 가능했다.
하지만 문제점은 저 둘을 합치면 실행이 안됫었다.(저번 발표때 문제점...)
그래서 계속 문제점을 고치면서 코딩을 새로 했는데.
문제점을 찾았다.
실제로 저 화면에서 말을 하면 두번째 줄에 말이 적히고
그 적힌 말을 안드로이드에서 읽어준다.
- 문제점은 2가지가 있었는데Android Manifest에서 Permission문제
- STT를 실행한 뒤, TTS를 실행하는 위치.
이중 첫번째 문제는 굉장히 간단한 부분이였는데
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
이 2개의 permission이 STT를 사용하는데 필요한 Permission이였다. 내가 코딩할때는 Manifest를 간과하고 있어서 이 permission이 필요한지도 모르고 사용해서 안되던 것이였다...이 2개의 permission을 사용하면 STT와 TTS가 같이 실행되기는 한다.
이제 두번째 문제였던 TTS의 위치. TTS의 위치를 잘못잡으면 STT와 TTS가 같이 실행되는 현상이 벌어진다.
onEndOfSpeech는 사용자의 음성이 끝났을때 일어나는 행동이고
onResults는 음성입력이 끝났을때 일어나는 행동이다.
처음 만들었을때는 onEndOfSpeech에다가 TTS를 실행하게 했는데 그렇게 했더니 사용자의 말을 다 받고나서, 말이 TextView에 적히기도 전에 말을 해버리는 상황이 벌어졌다.
그래서 onResults에서 했더니 TextView에 적히고 나서 그 적힌 말을 읽어주는, 즉 제대로된 상황이 나왔다.
댓글 없음:
댓글 쓰기