2019-07-01 ~ 2020-06-11 건국대 소프트웨어학과 졸업 프로젝트(화자 인식을 적용한 AI 스피커)

3학년 2학기에 들어서면서 졸업 프로젝트를 시작하였다. 주위에서는 왜 한 학기 먼저 시작하냐는 말도 나왔었지만 이런저런 사정으로(군 문제라던가...) 한 학기 당겨 졸업 요건을 채우고 싶은 욕심으로 시작하였다.

 

졸업 프로젝트를 진행하면서 가장 어려웠던 부분은 역시 주제 선정이었다.

주위 다른 팀은 연구 주제를 시작으로 기존 연구 결과 및 성능을 향상하는 쪽으로 가닥을 잡는 팀이 많았는데, 우리 팀의 경우(순전히 내 욕심이었을 수도 있다) 사용자가 사용할법한 서비스를 구현해보고 싶었다.

이것저것 생각해본 결과, 사용자 취향 분석을 이용한 레시피 추천 모바일 애플리케이션을 주제로 삼고 첫 한 학기를 보냈다.(꽤나 큰 실수였다...)

 

기능적으로도 꽤나 흔한 기능이었고, 무엇보다 1년 안에 학부생 두 명이서 구현하기에는 너무 덩치가 큰 프로젝트였다.(우리의 욕심이 컸던 것일지도 모른다...)

대표적인 기능으로는 머신러닝을 이용하여 사용자의 취향을 분석해 레시피를 추천하는 기능, 기록된 레시피를 음성 지원을 통하여 시뮬레이션을 제공하는 기능(3분 동안 센 불에 졸여주세요 등), 개인 레시피 등록 및 즐겨찾기 추가 기능 이외에도 다양한 기능이 있었는데, 사실 이 중 두 개에서 세 개 정도의 기능을 제공하는 것이 기간상 할만하다 여겨졌다. 그렇다고 또 두세 개 정도의 기능만 제공하기에는 차별성이 부족하다는 것이 해당 주제의 가장 큰 문제였다.

 

이후 3학년 2학기가 끝나고 새로운 주제를 생각하길 반복하여 NAS를 이용해보거나... 라즈베리파이를 이용해서 무언가를 해볼까 라는 생각을 하기 시작하였다. 그러던 와중 교수님이 그럼 차라리 IoT 허브 기능을 하는 무언가를 만들어보면 어떻겠느냐는 말씀을 주셨고, 그것을 중심으로 우리는 주제를 잡아보고자 하였다.

그러던 와중, 마땅히 참신한 아이디어는 떠오르지 않아서 AI 스피커를 만들어보자 하였고, 그럼 기존의 AI 스피커와는 무엇을 다르게 할지를 생각해보았다.

 

첫 번째로 떠오른 것은 화자 인식이라는 키워드였다. 해외 일부 AI 스피커에서는 일부 이미 사용하고 있는 기술이기는 하지만, 국내에서 주로 사용되는 AI 스피커에는 탑재되지 않은 기능이었기에 충분히 해볼 만하다고 생각이 들었다.

 

두 번째는 첫 번째 추가 기능만으로는 부족하여 생각을 들였던 것인데, 엣지 컴퓨팅이었다. 사실 최근에 가장 핫하게 떠오르는 부분 중 하나인 클라우드 컴퓨팅에 대항해 엣지 컴퓨팅을 졸업 프로젝트에서 시도해보는 것은 약간의 도전이었다.(사실 우리가 한 것이 엣지 컴퓨팅이라고 하기에도 조금 민망하겠지만...) AI 스피커에 대한 조사를 해가던 중 사용자들의 가장 큰 문제 인식점이 클라우드를 이용하여 정보를 처리하기 때문에 수집되는 본인의 목소리 데이터(단순 목소리만이 아닌 어떤 대화를 하는지 등)에 있다는 것에 주목하였다.

그에 대해 nano jetson을 이용하여 말단 기기에서 머신 러닝을 구현하는 것을 목표로 하였다.

 

그리하여 두 명이었던 우리 팀은 나는 AI 스피커의 기능 구현 및 자연어 분석을 통한 명령어 처리와 스피커 내부 연산 과정을 담당하였고, 다른 한 명은 화자 인식과 STT를 맡았다.

기능 구현은 python을 이용하여 해결하였으며 명령어 분석의 경우 처음에는 Konlpy의 mecab을 이용하다가 JVM Komoran으로 변경하였다. 그 이유로는

1. 분석 속도가 빠르다.
2. 프로그램 실행 중에도 사용자 사전에 단어를 추가할 수 있다.
3. 명사형으로 지정된 단어의 경우, 기분석 사전보다 사용자 사전의 우선 순위가 높다는 점을 이용하여 사용자 개인 최적화 명령어를 우선 순위로 둘 수 있다.

로 총 세 가지였다. 이후 JVM Komoran을 이용하여 사용자 개인 최적화 명령어 추가 및 자연어 분석 기능을 구현하였다.

그 외 AI 스피커가 제공해주는 기능을 구현한 것으로는

1. 알람 및 타이머 기능
2. 가족 알람 기능
3. 외부 기온에 따른 의상 추천 기능
4. Youtube Music을 이용한 노래 재생
5. Google Calendar를 이용한 일정 확인 및 브리핑 기능
6. Gmail을 이용한 최근 온 메일 및 특정 발신인에 대한 메일 검색 기능
7. 구글 계정을 이용한 사용자의 디바이스 현재 위치 검색 후 위치 브리핑 또는 app에 위치 정보 전송 기능

으로 총 7가지의 기능을 구현하였다. Android 애플리케이션 또한 구현하였는데 이는 사용자의 계정 등록을 위한 것이었으므로 소켓 통신을 이용하여 AI 스피커와 통신을 하고 계정 정보 전송 및 인증 확인 기능만 구현하였다.

 

졸업 프로젝트를 진행하면서 정말 다행이었다고 생각 드는 점은 무엇보다 팀원이었다. 다른 팀들이 이런저런 이유로 다툴 때 단 한 번도 다툰 적 없이 나를 믿어준 팀원에게는 지금도 감사한 마음을 갖고 있다.

또한 프로젝트를 진행하면서 프로그램 개발에 대한 자신감이 붙은 것도 컸다. 이전에는 내가 저런 걸 만들 수 있을까 하는 걱정만 가득하였는데, 실제로 학교에서 과제로 주어지는 프로젝트가 아닌 각자가 어느 정도의 자율성을 가지고 진행하는 프로젝트를 진행해보면서 학교 밖에는 셀 수도 없는 정보가 많고, 그것을 어떻게 활용하고 공부해가느냐에 따라 나는 무엇이든 만들 수 있는 사람이 될 수 있구나 라는 생각을 하였다.

그런 의미에서 정말 값진 경험이었으며, 이후에 쓸 스타트업에 대한 회고록에서도 나오겠지만, 자신감을 가지고 부딪히고 배워나갈 수 있도록 해 준 것에 소중한 경험이었다 생각한다.

 

다시 한번 나와 팀을 이뤄주고 믿어주고 같이 프로젝트를 끝까지 잘 완수하도록 도와준 나의 김도연 학우에게 심심한 감사의 인사를 전하며 글을 마무리하고자 한다.

댓글