1. 서론
내 삶을 더 편리하게 해줄 개인 비서 앱을 만들고 싶다. 그렇지만 버튼을 클릭하기는 너무 귀찮다. 역시 말로 하는 게 편하다.
지금 생각 중인 아키텍처로는
1) 클라이언트 앱에서 내 음성을 텍스트로 변환(STT)하고, 서버로 요청을 보낸다.
2) 서버에서 규칙 기반으로 요청을 분석하여 특정 요청은 직접 만든 API를 호출하고 나머지의 일반적인 질문은 chatGPT API를 호출한다.
ex. 버스 시간 알려줘 → 자체 서비스
ex. 우분투에서 CI/CD 어떻게 구축해 → chatGPT API
3) 결과를 클라이언트에 전달, 이 응답을 소리로 변환(TTS)하여 내가 들을 수 있게 한다.
2. SpeechRecognizer
구글에서 제공하는 SpeechRecognizer는 안드로이드에서 음성 인식 기능을 구현할 수 있게 해주는 클래스이다. Google의 음성 인식 서버와 통신하여 음성 데이터를 처리하므로 인터넷 연결이 필요하다. (오프라인으로도 작동하지만 정확도가 낮음)
권한으로는 INTERNET과 RECORD_AUDIO가 필요하다. 따라서 앱 구동 시 오디오 녹음 권한을 요청하도록 했다.
private fun checkPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.RECORD_AUDIO), RECORD_AUDIO_PERMISSION_CODE)
}
}
권한이 없으면 아래와 같이 권한 요청 화면이 뜨고, 허용 시 음성 인식이 가능하다. 권한이 없는 경우의 에러 코드는 9번, ERROR_INSUFFICIENT_PERMISSION이다.
실제 기기에 설치하여 테스트한 결과이다. 아주 잘 인식한다.
3. 결론
SpeechRecognizer를 사용하면 음성을 텍스트로 쉽게 변환할 수 있다. 다만 실제 대화하듯이 구현하려면 잠시 침묵이 흐르더라도 녹음을 중단하지 않고 대기하도록 설정값을 조정해야 할 것 같다.
'개인 프로젝트' 카테고리의 다른 글
Kafka로 메시지 전송하여 지연이체 처리하기 (0) | 2024.12.28 |
---|---|
리눅스 서버에 Docker Compose로 Kafka 구동하기 (0) | 2024.11.20 |
안드로이드 TTS 구현하기 (0) | 2024.09.21 |
SpeechRecognizer 음성인식 API 사용하기 - 2탄 (0) | 2024.09.20 |