2013년 7월 27일 토요일

AppInventor 그리고 음성인식 명령

2013. 11. 5 추가: 오프라인 버전으로 소스포지에 AiLiveComplete 가 있네요.  http://sourceforge.net/projects/ailivecomplete/


날씨도 더워지고 주말엔 게을러 지고... 진행이 더디다. 그래도 천천히 진도 나간다.. 오늘은 안드로이드 폰에서 음성인식 기능으로 장난을 좀 치려고 한다.

머시여.. 안드로이드도 벅찬디.. 음성인식이라고?? 

자고로 그놈의 생각의 벽이란. 평생 동안 자신을 규명하기 위해 이리저리 쌓아올린 사고 체계가 어느 날 보니 스스로를 안에 가두는 견고한 벽이라는 생각이 들 때가 있다. 얘기가 또 새려고 한다.. 거두 절미하고 일단 AppInventor로 시작해보자. 나도 처음 사용하는 것이니 완벽하지는 않겠지만, 그래도 사상 최초로 앱을 만드는 동시에 블로깅 질을 해본다는데 의미를 둔다.

일단 appinventor.mit.edu 접속 해서 개발 환경을 꾸민다. http://appinventor.mit.edu/explore/setup-mit-app-inventor.html 참조 .  나는 USB를 통한 안드로이드 연결 방식을 선택하고 설치하였다. 당연히 인터넷은 연결되어 있어야 하고.. 구글 계정도 필요하다.. 일단 모든게 그렇듯 시작전에 둘러 보기를 한다. (불행히도 영어라 애들이 초반부터 좀 달아나게 생겼다..)



이리 저리 둘러 보고 나서.. 본격 적으로 시작해보자. 일단 구글 계정으로 로그인하면 첫페이지가 나오는데 My Project - New 를 눌러 새로운 프로젝트 명을 만든다. (나는 Moon01)

그러면 다음과 같이 Screen1 이라는 컴포넌트가 자동으로 생성되고 제법 스마트폰 화면 같은게 나온다.. 오늘은 여기에 음성 명령을 받아서 받은 색깔로 화면을 칠해 보는 간단한 장난을 해보려 한다.

일단 Basic - Button  과 Other stuff - SpeechRecognizer  를 추가한다. 드래그 엔드 드롭으로 실행 가능하다.


이리하면 스크린에 보이는 버튼과 보이지 않는 음성인식 컴포넌드가 생성된다. 버튼의 속성들을 잘 둘러보기 바란다. 나중에 저 버튼의 Background Color를 음성을 통에 바꿀거니.. 그리고 버튼의 크기도 조절가능한데.. 크게 보기 위해 맨 마지막에 있는 Width 를 Fill parent,  Height 를 200 pixels 정도로 바꾼다. 그리고 머라고 말하는지 그대로 출력해줄 Label 컴포넌트도 추가.. 그리고 Save 눌러 저장 하고 이제 대망의...

  • 안드로이드 (내껀 넥서스7 OS ver 4.2.2)를 USB에 연결하고. 당연한 얘기지만 안드로이드 기기는 개발자 모드 허용해 놔야 함.. 
  • 우측 상단 Open the Blocks Editor를 클릭



경고창이 뜨고 확인- 다운로드후-클릭하면 자바가 실행되면서 블락 에디터 화면 등장. 여기서 디바이스 연결을 시도 했으나 실패 !!!


이게 먼일인가 하고 다시 앱벤터 홈페이지에 가서 설치 가이드를 꼼꼼이 본다. 이런 젠장 os ver 4.2.2 이후로는 새론운 adb.exe 를 이용해야 한단다.  http://appinventor.mit.edu/explore/content/setup-device-usb.html
새로운 파일로 바꾸고 나니 비로소 연결이 된다. 이때 안드로이드 기기에서도 메시지 창이 뜨니 확인 눌러준다.
이 그림에는 Label 컴포넌트가 빠져있는데 대세에 상관없으므로 패스
음성인식율이 좋지않아 나중에 확인 목적으로 Label을 추가 함. 


항상 그렇듯 이거저거 마구 눌러 본다. 그러다보니 My Blocks 에 아까 만들어논 컴포넌트와 이것으로 무언가 할 수 있는 조각들이 보인다. 이게 중요하다. 천천히 바라고보 무엇을 하는건지 어떻게 하는건지 생각해볼 필요가 있다. 그래도 안되면 아까 홈페이지에 가서 여러가지 예제도 보고 또 바라본다. 이건 어쩔수 없다 무한루프다 될때까지.. 조각들의 기능을 모르고는 작전을 못짠다. 또 다 알고 있다치더라도 적절한 전략을 구사하지 않으면 원하는 기능에 도달 못한다. 그건 모든 프로그래밍 언어가 같다. 자기가 원하는 기능에 대한 논리에 오류가 없어야 하고 또 현실적으로 그것을 구현할 언어도 알아야 한다. 

그리고 나서 우리가 해야할 것에 대한 구체적 작전을 짠다. 이건 레고 블럭과 흡사하다
  • 버튼을 누르면 음성을 받아들인다
  • 음성인식이 끝나면 버튼의 백그라운드 색을 바꾼다

조각들의 기능을 모르고는 작전을 못짠다. 또 다 알고 있다치더라도 적절한 전략을 구사하지 않으면 원하는 기능에 도달 못한다. 그건 모든 프로그래밍 언어가 같다. 자기가 원하는 기능에 대한 논리에 오류가 없어야 하고 또 현실적으로 그것을 구현할 언어도 알아야 한다. 

My Blocks 와 Built-In 메뉴를 왔다 갔다 하면서 조각을  조립해 본다.



여기서 문제가 발생... 한국어 음성 지원을 하기 때문에 왠만한 발음은 한국어 우선으로 인식되기 쉽다(실제로 삽질은 많이 함). 그런데 블락 입력은 한글를 지원 안하니... 그래도 미친척하고 노트패드에서 글자를 쳐서 강제로 복사-붙여 넣기 해보았다.. 위 그림의 네모난 글자는  "빨강", "파랑" 이다.

완성되면 여기서도 Save를 눌러주고 브라우저 개발창으로 돌아와서 block editor 열기 메뉴 옆에 있는 "Package for Phone - Download to Connected Phone" 을 눌러 폰으로 프로그램을 전송하고 즐기기...




영상에서 보다 시피 아직은 음성인식에 아쉬움이 있다. (노랑은 코드에 안심어 논거니 당연히 안되고..ㅎㅎ)  "파랑"을 "사랑"으로 인식하기도 한다. 그러니 영어 발음은 오죽하겠는가? 그래도 이 정도의 범위에서 여러가지 재미있게 이용할 수 있는 방법은 많아 보인다.

ps1:
글 올리고 몇 가지 추가로 살펴보니 굳이 스마트폰을 직접 연결 안하고도 테스트가 가능해 보인다. Package for Phone 메뉴에서 "PC로 다운로드" 하면 apk로 저장되는데.. 그걸 dropbox 등에 올려서 설치하는게 훨씬 수월하다. 친구들과 공유도 가능하고..



댓글 없음: