티스토리 뷰
개인 프로젝트를 고민하다가 예전부터 미루어 왔던 AI 스피커 만들기를 시작합니다. 프로젝트의 요구사항은 간단합니다. 사용자의 음성을 인식하고 의도를 파악한 후에 상황에 맞는 답변을 스피커로 출력합니다. 가벼운 요구사항이지만 내부적으로는 아래와 같은 기술을 필요로 합니다.
- 사용자의 음성을 인식 ( Speech to Text )
- 변환된 Text 를 구문 분석 ( Natural Language Processing )
- 분석된 내용을 토대로 답변을 음성 출력 ( Text to Speech )
일단 당장은 머신러닝에 대한 배경지식이 부족하기 때문에 세 가지 모두 쉬운 과제는 아닙니다. 그래서 고민끝에 우선 Speech to Text( STT), Text to Speech( TTS) 는 Google Cloud Platform( GCP ) 에서 제공되는 API 를 통해 구현하도록 합니다. API 사용하는 부분을 깔끔하게 모듈로 작성해두면 향후에 단계적으로 걷어내기도 쉽습니다. 구문 분석하는 NLP 에도 큰 노력과 학습이 필요한 부분이기 때문에 첫걸음에는 배제합니다.
구문분석을 빼면 이 프로젝트에 남는 것은 무엇일까요? 바로 ping / pong 입니다. 사용자의 음성을 인식해서 기계 음성으로 다시 출력합니다. 단순하지만 여기에 또 붙일 수 있는 여러가지 기능들이 있습니다. 단계적으로는 인식된 음성을 firebase 에 저장하고, 주기적으로 질문을 분류합니다. 사용자들이 스피커를 통해 얻고자 하는 것이 무엇인지 확인하는 과정도 재미있을 것 같습니다. 이 글을 쓰는 시점에 간략하게 그려본 아키텍처는 아래와 같습니다.
프로젝트의 이름은 Hanvi 입니다. 현재는 로컬머신에서 STT, TTS API 를 사용하고 있으며 뒷단에 GCP 안에 있는 아키텍처는 구현되어 있지 않네요. 테스트해본 영상을 첨부합니다.
이 프로젝트의 모든 소스코드는 아래 경로에서 확인 가능합니다.
기본적으로 소스코드를 돌리기 위해서는 GCP 계정 정보가 필요하며 API 호출을 위한 KEY 설정이 필요합니다. 프로젝트에 README 를 참고 하세요. 또한 GCP API 를 사용하는 것이기 때문에 비용이 발생합니다.
혹시 이 프로젝트에 관심이 있으시거나 GCP API 호출에 대해 문의가 있으시면 언제든 편하게 연락 주십시오 :-)
'개발 > 개인 프로젝트' 카테고리의 다른 글
용인->강남 버스출근 앉아가기 프로젝트 ( #2 ) (0) | 2019.09.02 |
---|---|
용인->강남 버스출근 앉아가기 프로젝트 ( #1 ) (0) | 2019.08.28 |
slack 투표 명령어 만들기 (3) | 2018.12.24 |
질의응답 QnA 웹 서비스 제작기 (2) | 2018.04.03 |
공공데이터를 활용한 미세먼지 농도 측정 (0) | 2017.05.23 |
- Total
- Today
- Yesterday