지난번 포스팅에서 Chrome Speech를 활용해서 웹 기반 어플에서 말하기 기능을 쉽게 사용하는 방법에 대해서 포스팅 했습니다.
기존 기능을 테스트 해보다가, 메신저에서 여자사람 목소리를 친구에게 보내면 재미 있겠다 싶어서 (여자 목소리로 욕을 보내면 재미있을것 같.. ㅎ) 무작정 만들어 보기로 했습니다.
일단 연동 가능한 메신저 후보군은 많은데, 그중에서 많이들 쓰시는 카톡/Line은 등록하고 하는게 귀찮을것 같고, 개발자에게 무지 친화적인 텔레그램으로 맛만 보기로 결정했습니다.
오늘은 만드는 과정은 차후에 알려 드리기로 기약하며, 결과물과 경험에 대한 공유를 하고자 합니다.
1. 텔레그램
다들 아시리라 믿습니다. 항간에 보안에 용의한 메신저라고 국가적 보안크리에 반발하여 다들 가입 러쉬가 이뤄졌던 외산 메신저 입니다. 최근에 미국 FBI등 여러 국가 기관에서도 보안검열 같은 움직임에서 조금 이라도 자유로워 지기 위해서 사용자들이 이쪽으로 많이들 갔죠.
저는 보안에 좀 너그러운 상태라서, 굳이 이민까지는 생각하지 않았는데, 오픈소스를 지향하는 개발자로, "오픈되어 있는 개발환경"에 대한 필요성 때문에 올해 가입해서 테스트 용도로 사용중입니다.
2. 텔레그램과 외부 (나의) 프로그램의 연동
텔레그램에서 외부 프로그램과 연계는 중간에 가상의 대화친구인 봇(bot)이라는 대리인을 구현하여 사용할수 있습니다. 여기서 봇(Bot)은 로봇의 준말로 생각하시면 되고, Telegram과 대화를 대신하는 기계/콜백 프로그램으로 생각하면 됩니다. 봇(bot)에 대한 제약은 거의 없는 편이고, 취향에 맞게 개인 서버에 심어서 텔레그램 서버에 제공하면 됩니다. 봇은 크게 2가지 방법으로 준비 할수 있는데, 가장 간단하게는
1) telegram-cli 라는 텔레그램의 프로토콜을 리버스 엔지니어링으로 만든 환경을 사용하는것이고
2) Telegram Bot API라는 official platform/library 기능을 활용하여 연동할수 있습니다.
저희는 이것 저것 손볼께 있어서 그 나마 확장용이한 Telegram Bot API를 활용했습니다.
일반적으로 bot을 만들고 텔레그램에 *무료*로 등록하고 나면 (저희의 경우 isaybot) 누구나 대화 친구처럼 추가해서 사용가능합니다.
Note: 다른 메신저는 사용가능한 앱이 뭔지 알려주는 앱스토어 같은게 존재 하는데, 텔레그램은.. 아... 애석하게도 그런게 없습니다. 그냥 사용자가 지인을 통해서 그 봇의 존재에 점조직처럼 알음알음 퍼집니다. 앱을 열심히 만드는 사람의 경우 홍보의 이슈가 있어서 피곤하고 약간은 문제죠. ^^; 차후 바뀔수도 있을꺼라고 사료됩니다.
3. 사용법
3.1 봇(bot) 추가
일단 텔레그램 앱이 여러분의 스마트폰에 설치가 되어 있다고 가정을 하겠습니다. 특정 봇(bot)을 추가하려면, 대화상대 추가와 똑같이 생각하면 됩니다. 대화상대 추가하듯이, 텔레그램 친구목록의 위쪽에 돋보기(Search)를 누르면, 두번째와 같은 화면이 나옵니다. 그창의 맨위 입력부분에 "isaybot"이라고 치면 아래와 같이 isaybot이 보입니다. 그럼, 봇을 선택하여 추가하세요.
isaybot을 누구나 추가할수 있는 가상의 대화상대/친구로 생각하면 됩니다.
3.2 isaybot 사용하기
isaybot이 대화상대로 추가되면, 맨 처음으로 아래에 나타나는 [ start ] 버튼을 눌러서 시작합니다. 이후에는 언제든지 친구리스트에서 isaybot을 선택하여 봇과 대화를 시작하면 됩니다. 우리 isaybot의 경우에는 제일 처음 내리는 /change 명령(command)을 통해서 음성대화를 하기 위한 환경세팅이 끝납니다.
/change 명령어는 말하고 싶은 언어를 선택하는건데, /change라고 치면 위와 같은 사용자 키보드가 뜹니다. 위의 그림 처럼, 사용자 키보드에서 isaybot이 한국음성으로 말하게 하고 싶으면, /koKR을 선택하면 됩니다.
Note: 목소리는 언어별로 약 40여개 지원 합니다.
한국어 음성으로 설정이 언어설정이 끝난 후, 마지막으로 Message (입력창)에 아무글이나 적어 보세요. 저는 친구를 놀려 먹기 좋은 "오빠 라면먹고 가세요"를 쳐봤습니다 ㅎ
그러면 위의 그림과 같이 서버에 입력된 글을 보내서, 잠시후 입력한 글을 여자사람 음성을 만들어서 다시 내게 보내줍니다. 보내준 메시지에 파란 플레이 버튼을 눌러주면, "오빠 라면먹고 가세요"가 음성으로 나옵니다.
혼자만 듣기 아깝죠? 친구에게 텔레그램으로 보내보세요. ^^ 음성 메시지의 오른쪽에 보면 화살표 버튼이 있습니다. 그걸 누르면 친구목록 뜨며, 친구 이름을 선택하여 보내기 버튼만 누르면 됩니다.
재미있죠? ㅋ
4. 확장 사용법: "inline" isaybot
위의 isaybot을 친구와 대화하는 방식으로 사용하는 방법 말고, 친구 추가 없이 다른 사람과 대화중에 사용가능하는 방법이 있습니다. 텔레그램에서는 이걸 "inline" bot 이라고 하는데, 아무 대화창에서 "@"로 시작하는 명령어를 날리면 되는데, "@" 명령으로는 봇의 이름을 사용하면 됩니다.
가령, isaybot을 inline 봇으로 사용하고 싶은경우, 위의 그림처럼 @isaybot을 대화 입력창에 치고, 글 내용을 치고 잠시 머물면, 위와 같이 팝업 메뉴가 뜹니다. 이후 언어중 하나를 눌러주면, 아래와 같이 새로운 링크를 포함한 메세지(Facebook Open Graph)가 대화창에 나타납니다.
위 수신된 메세지 본문의 그림을 눌러주면 음성을 들어 볼수 있는 웹플레이어가 뜹니다. 참고로, 팝업 플레이어는 본분의 그림을 눌렀을때만 뜹니다. 반면 링크를 누르면, 추가적인 새 웹창이 뜨면서 플레이어가 뜹니다. (텔레그램에서는 PC나 태블릿인 경우 팝업플레이어가 지원되지 않고, 웹플레이어만 지원됩니다.)
작년 말에 접하게 된 마이크로소프트의 에반군이 만든 garage 프로젝트인 스마트미러(Smart Mirror) 에서 확인 했었고, 거의 모든 오픈소스 스마트 미러 프로젝트는 라즈베리파이(RPi)등의 Arm기반 보드에서 "리눅스"로 돌리고 있었기 때문에 믿기 힘든 비보였습니다.
"쫌! 잘해봐. 말이돼냐? (썩소)" "아니예요, 실제 잘 안된다고 어디서 본것도 같아요.(떨리는 눈빛)"
'에이 설마, 또 초짜 주우우니어 호빗 개발자의 닥질..' 여전히 그 생각이였고, 솔직히 다른 OS에서 다되는데 리눅스에서 안된다는 건 약간은 리눅스(마이프레셔스!)를 데탑으로 끌어 안고 사는 한때 호빗 개발자였던 골름의 밥상에 돌 던진듯한 느낌을 받는...
12월 중순 쯤 회사내에 흥미로운 동영상이 공유 되었는데 바로 smart-mirror 라는 프로젝트였습니다. 아래 동영상을 보시면 smart-mirror에서 사용자의 음성으로 지도나 philips hue 전등을 컨트롤 하는 모습을 보실 수 있을 것입니다. 되게 fancy해 보이지 않나요? smart-mirror에서 사용한 언어는 javascript이며 speech recognition library로는 annyang 을 사용하고 있었습니다.
회사 내에서도 우리도 해보자라는 의견이 나오기도 했고 마침 이전 프로젝트도 끝나고 시간이 남아 Garage Project로 smart-mirror를 하게 되었습니다.2주 동안 진행했던 이 프로젝트의 1단계 목표는 아래와 같습니다.
첫번째, smart-mirror 한글화
두번째, 재미있는 기능(youtube search, 지하철 도착 정보, Sound Cloud 음악 재생 등) 추가
이 프로젝트에서 추가로 사용한 API는 다음과 같습니다.
1. Youtube Data API
2. 서울시 지하철 도착정보 open API
3. Sound Cloud API
smart-mirror는 소프트웨어 측면보다 하드웨어 측면에서 준비하는 시간이 걸렸습니다.
준비물(원하는 결과물에 따라 가격이 달라질 수 있습니다. )
물품
가격 (단위: 원)
회사에 안쓰고 굴러다니던 오래된 태블릿
0
philips hue 전등
279,000
고대유물이 되어 방치 되었던 서버랙 유리 문짝
0
절연테이프
1300
아크릴 (가로: 40cm , 세로 : 50cm) 1개
10,000
미러필름 1m~2m
18,000
총 비용
308,300
하드웨어 구성을 살펴 보면 라즈베리파이 2, USB microphone, 모니터, one-way mirror, philips hue 전등으로 구성되어 있었는데 라즈베리파이 2 + 모니터 대신 사용한지 오래된 노트북이나 태블릿 등을 사용하였고, philips hue 전등은 프리스비에서 구매하였습니다. 한가지 남은게 있다면 one-way mirror가 관건이었습니다. 현재 한국에서 one-way mirror를 구하는 것이 어려울 뿐만 아니라 상당히 비싼 가격에 판매되고 있어서 대체 할 만한 것을 계속 찾아보다 유리에 미러필름을 붙였습니다.
미러필름의 판매처는 다음 링크에서 확인하세요.[사이트내에 가격이 30m가 180,000원, 1m~2m가 18,000원에 판매 되고 있습니다. ]