2016년 5월 30일 월요일

offline F.R.I.D.A.Y - (아두이노 음성인식)

영화에서 JARVIS 도 Vision 이 되고 FRIDAY 가 역할을 대신하게 된 것 처럼, 기존에 만들었던 google 음성 인식과 Raspberry Pi 기반의 JARVIS 는 놔주고 Arduino 기반의 FRIDAY 를 만들어야 겠다는 생각이 들었다.

인터넷에서 아두이노 음성인식 모듈을 찾아보니 geeetech 사의 음성인식 모듈이 검색이 됐다. 국내에서도 구매 가능하지만 4만 8천원 정도의 비싼 가격이다. ebay 에서 찾아보니 $22.99 에 살 수 있고 무료 배송이지만, 한달 정도 기다려야 했다. 홍콩에서 Air mail 로 tracking number 없이 보내기 때문이다.
Geeetech Voice Recognization Module
5월 초쯤에 주문 했던 것 같은데, 아무생각없이 우편함을 열었더니 손바닥 만한 우편물이 들어 있는 것이 아닌가. 기대 안하다가 받은 선물 같이 느껴 진다. 이래서 사람들이 알리 익스프레스의 묘한 재미에 중독 되는건가. 여하튼 나는 ebay 에서 주문 했지만...

사진의 모듈과 마이크, 그리고 선5개만 달랑 들어 있고 아무 설명서도 없어서, 부랴부랴 인터넷을 뒤져서 wiki 를 찾아 봤다.

[wiki]
http://www.geeetech.com/wiki/index.php/Arduino_Voice_Recognition_Module

위키에 들어가면 Voice 로 LED 를 켜는 예제만 달랑 있다. 좀 당황스러운데, 글의 마지막 부분에 Recording 하는 Manual 링크가 있다.

[Recording Manual]
http://www.geeetech.com/wiki/index.php/File:Voice_Recognize_manual.pdf

문서를 다운받아 열심히 읽어 봤는데, windows 에서 정체를 알 수 없는 terminal 프로그램을 하나 다운받아서 HEX command 를 날려서 녹음을 하라는 것 같은데, Ubuntu 를 사용하는 나에게는 좀 짜증나는 가이드였다.

핵심은 serial 을 사용하는데 입력은 Hex 로 출력은 Ascii 로 하라는 것이니까, Ubuntu 에서 Hex 로 입력을 할 수 있는 Terminal 을 찾아보니 CuteCom 이라는 것이 있었다. 바로 설치 했다.

$ sudo apt-get install cutecom

실행하면 아래와 같은 app 이 실행된다. 우측 하단에 input type 을 'Hex Input' 으로 바꿔 주기만 하면 된다.
녹음 할 수 있는 command 는 5개씩 3그룹이다. 총 15개의 command 를  할 수 있는데, 그룹을 변경하는 것도 Hex 값으로 입력해야 하기 때문에, 실질적으로 realtime 에 쓰는 것은 한그룹 (5개의 명령) 이다. 쉽게 말해서 내 목소리로 (빨강,파랑,노랑,주황,검정) 을 입력하고, 아들 목소리로 (하나, 둘, 셋, 넷, 다섯) 이라고 두 그룹을 녹음해 놓아도 실제 사용할 때는 select group 을 하나만 하기 때문에 '빨강'과 '하나' 를 동시에 구분 할 수 없다.

사용방법은 다 익혔는데 실제 녹음하는 과정은 정말 짜증난다. '소리가 작아', '소리가 너무 커', '두 소리가 달라' 와 같은 에러를 계속 뱉어내서 정말 인식은 할 수 있는건가 하는 의구심이 든다. 나의 경우에 동봉된 마이크를 잭에 꽂아서 녹음을 하면 거의 실패였다. 그래서 다시 wiki 를 차근차근 살펴보니, 가이드에는 마이크를 직접 VCC / GND 에 꽂아서 사용하는 것이 아닌가.
wiki 에 설명되어 있는 연결 가이드
그래서 나도 과감하게 마이크를 분해 해서 아래 사진과 같이 납땜을 해 버렸다. 단, 위 그림처럼 VCC / GND 에 한 것은 아니고 audio jack 에 납땜하고 그것을 끼웠다. 그랬더니 녹음을 한방에 성공할 수 있었다. 더군다나 인식률이 좋아서 4개의 LED 를 끄고 켜는 것에 쉽게 성공했다.
마이크를 분해해서 audio jack 에 납땜한 모습

그런데... 문제가 있었다.
녹음에 성공하고 기쁜 마음에 Smart Home 커맨드를 녹음해서 거실에 두고 실행 하려고 했더니, 실사용이 거의 불가능 했다. 이유는 마이크 앞에 가까이 붙어서 명령을 해야 하고, TV 소리나 주위 잡음이 있을 경우에는 잘 되지 않았다. 가끔은 아이들이 떠드는 소리를 내가 녹음한 명령어로 인식을 해서 TV 가 꺼지거나, 불이 꺼지는 상황이 벌어졌다. 이래서야 어떻게 기존의 똑똑한 Jarvis 를 대체 할 수 있으랴.

온라인 / 오프라인 음성인식의 장단점은 명확하다. 온라인은 내 사생활이 그대로 노출될 수도 있다는 치명적인 단점이 있는 반면에 Q&A 와 같은 똑똑한 비서를 만들 수 있고, 오프라인은 privacy 는 지킬 수 있으나 소수의 단순한 명령어만 할 수 있다는 점.

F.R.I.D.A.Y 를 만드려면 좀 더 고민해야 겠다. '마이크와의 거리 제한', '잘못 인식할 경우 대비' 가 해결되지 않고서는 실제 사용하기가 어려우니, 숙제를 해결하면 다시 시도 해야 겠다.

댓글 없음: