텔레그램 봇으로 음성채팅 하기

- Telegram Bot for Text to Speech (TTS)






지난번 포스팅에서 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나 태블릿인 경우 팝업플레이어가 지원되지 않고, 웹플레이어만 지원됩니다.)  


여기에서 플레이 버튼을 누르면 수신된 내용을 음성으로 들어 볼수 있습니다.


5. 마치며


봇의 이해를 위해 재미로 만들어본 서비스입니다.   

가입없고 계정따위는 없는  무료 서비스이니 부담없이 쓰셔도 좋습니다. ㅎ


화창한 봄날에

화려한 벗꼬ㅊ엔딩을 간절히 기다리는 

가망없는 벗에게 

봇으로 여자 목소리를 흘려보내보세요.

잘하면 꽁짜술 한잔 하실수 있습니다. 



- 골름골름



PS  isaybot을 만드는데, 이번에도 forcemax님과 mo님이 수고해 주셨습니다. 감사합니다.





Posted by 알 수 없는 사용자
,

chrome speech synthesis service 개발기

- "크롬을 음성합성 서버"로 사용해보자







"사장님, 스마트 미러가 리눅스에서 잘 안돼요. 어떻하죠?"

.

.

.

작년 말에 접하게 된 마이크로소프트의 에반군이 만든 garage 프로젝트인 스마트미러(Smart Mirror) 에서 확인 했었고, 거의 모든 오픈소스 스마트 미러 프로젝트는 라즈베리파이(RPi)등의 Arm기반 보드에서 "리눅스"로 돌리고 있었기 때문에 믿기 힘든 비보였습니다.


"쫌! 잘해봐. 말이돼냐? (썩소)"  "아니예요, 실제 잘 안된다고 어디서 본것도 같아요.(떨리는 눈빛)"


'에이 설마, 또 초짜 주우우니어 호빗 개발자의 닥질..'  여전히 그 생각이였고, 솔직히 다른 OS에서 다되는데 리눅스에서 안된다는 건 약간은 리눅스(마이프레셔스!)를 데탑으로 끌어 안고 사는 한때 호빗 개발자였던 골름의 밥상에 돌 던진듯한 느낌을 받는... 


그래도 한번 속는셈 치고 들어나 보기로 했습니다.


"그래 뭐가 안된다는 건데?(썩소2)"       "아, 제가 이번에 연동한게 유투브, 지도API, 어쩌구 저쩌구..."

"아 그러니까 뭐가 안된다는 건데?(확신찬 썩소썩소썩소)"           ".. 그러니까.. 저.. 말하는게 안되요!"


"응?!?  혹시 말하기 기능 넣었어?(반짝반짝)"   "..네.."  (이 시점에서 소으니:골름 = 1:0!) 



바로 소으니는 맥에서 잘되는걸 보여줬고, 리눅스에서는 안되는것도 보여줬다. (2:0!)


"아.. 그..러네.  그래도 니가 비동기 방식의 javascript 쓰다가 뭔가 잘못한거?" (쓸데없는 의심, 3:0!)


"네,  그런데 일단 코드가 너무 간단해서... 잘못하기 힘든데요?"







크롬에서 음성합성 예제: HTML5 Speech Synthesis API 사용

========================================





여기서 말하기 기능이라는 것은 '음성합성' 또는 'Speech Synthesis'라고 불립니다.  다들 아시겠지만, 우리가 은행이나 콜센터에 전화를 걸었을 때 자동으로 대답을 해주는 약간 어색한 사람 목소리를 위장한 마디마디 리코딩된 기계음 등이 이 부류입니다.   



코드군: 

var utterance = new SpeechSynthesisUtterance('Hello, 세상');

var voices = window.speechSynthesis.getVoices();


utterance.voice = voices.filter(function(voice) { return voice.name == 'Google 한국의'; })[0];


window.speechSynthesis(utterance);



'잉, 코드군이 너무 간단한데? ' 


뒷목이 뻑뻑한 느낌이 들더군요. 지은죄가 있는지라 몇일 구글군의 힘을 빌어 뒷북 뒤지기를

시작했는데, 음성합성을 쓰기 위해서 엔지니어링 관점에서 몇가지 알고 있어야 될것들이 나왔습니다.




음성합성(Speech Synthesis) 간략정리

=========================


0. Speech Synthesis는 나름 긴역사가 있다.  특히 예전에 sphinxsearch검색하면 검색결과 밀어 

버리고 쓸데 없이 나오던 sphinx도 speech 관련해서 꽤 유명한 놈이더라. (제대로 잡설!)


1. 웹브라우저가 사용할수 있는 Speech Synthesis API는  Speech Recognition API와 나름 2년이나 되었다.  (since google chrome 33+, 현재 쓰고 있는 버젼은 48+)

구글 크롬이야 당연히 지원하고 있었고, 사파리도 지원하고 브라우저들이 다들 지원하는 분위기다.


2.  위의 내용 1을 순진하게 믿고 테스트 하다보면, 지금 그닥 쓸만한 놈은 chrome이다.  

     그리고 된다는 SSML은 아직 안된다.  SSML은 음성합성을 XML로 표기하여 끝말올리기, 반복하기 등을 표기할수 있는 방법입니다.    


3.  그리고 결정적인, Speech Synthesis가 "리눅스에서는 안되고, 맥에서는 된다"는 틀렸다.  



정확한 정보는 "(목소리가 없기 때문에) chromium에서는 안되고, chrome에서는 된다" 이다.  (앗싸.  3:1!)


3번은 알고 나면 허무하지만, 약간의 보충설명이 필요합니다. 그래서 조금 내용을 살펴 보겠습니다.





Chromium은 Chrome과 다르기 때문에 

구글의 완성도 높은  아름다운 목소리를 가져올수 없습니다.

======================================



원래 웹브라우저의 Speech Synthesis API에 대한 표준화 문서를 보면,

Speech Synthesis API는 API이지 실제 voice라는 리소스는 웹브라우저가 

지원(provision)할수도 있고, OS가 지원하는 네이티브 리소스로 (따라서 chrome external) 

voice를 사용할 수도 있습니다. (양자택일!)



그런데, 대부분의 우리가 수행했던 Speech Synthesis의 테스트는 

구글 크롬(default로 날아오는 voice는 google이 제공)했기 때문에 문제가 없었고, 

쓸수 있는 API만 있지만, chromium은 google의 voice API 키가 없기 때문에, 

말할 '목소리'가 없습니다. 


기계가 목소리가 없어서 인간이 안되고 결국 허무하게 여기서 거품으로 끝난다는건 어디서 많이본 

동화같습니다.(아이씨- 언더더씨 네요.)





그럼 소으니가 말했던 스마트 미러가 맥은 되고 리눅스에서는 목소리가 안나오는 이유는 뭘까요?  

네. 우리가 쓴 node.js의 electron은 (예전에는 ATOM으로 불렸었죠) chrom"ium"의 분신이고

따라서 보이스 실물 리소스가 존재하지 않습니다. 구글에서 허락없이 땡겨올수 없기 때문이죠.  

하지만, Mac에서 제공하는 네이티브 목소리가 있기 때문에 맥(electron)에서는 잘 되었던거고,

리눅스(electron)에서는 안된겁니다.  여기서 "댕~"하는 상황은 리눅스의 chrome에서는 되니까

더 헛갈린겁니다.  알고나면, 구글의 chrome이니까.  구글 목소리니까 당연한거죠.


즉, 확실한건 chrome != chromium에서 생기는 문제인거요. 


아, 참고로 chromium을 걍 컴파일 해서 쓸까 (electron) 했는데요, 저같은 생각을

하는 골름들이 무지 많나 봅니다. chromium 사이트에 노란색 볼드체 으로 

이렇게 적혀 있네요. ㅎ


https://www.chromium.org/developers/how-tos/api-keys





"Do NOT post to the various Chromium groups/mailing lists for questions about the Speech API."


(헐- 넹. 골름골름)



Chrome에서 사용 가능한 목소리들은 OS별로 살짝 다릅니다. 
========================================

실제 가장 많이들 쓰시는 Windows 10(7,8도 비슷할겁니다)에서 chrome을 사용하면 
운영체제가 제공하는 네이티브목소리 (언어별로 하나씩 있는듯 보입니다!) 한개만 
"Lang"환경에 딱 맞춰서 추가 사용가능하며, 크롬에서는 가지고 있는 목소리
다주세요 라고 하면 구글 목소리 리스트에 딸랑 한개 더 얹어서 나옵니다.  맥의 
경우에는 맥이 제공하는 목소리들 전체를 "Lang"환경을  고려하지 않고 모두 다 선택할수 
있게 주즈륵 보태서 보여줍니다.  
(아, 나름 맥의 목소리 리스트도 구글군같이 아름답습니다) 


그럼 모바일 환경에서는 어떨까요?  일단 안드로이드의 크롬에서는 구글의 많은 언어별 
목소리가 리스트로는 다 사용가능한것 처럼 나옵니다. 이건 근데 나름 함정입니다. 
다른 언어의 목소리를 선택하더라도 같은 목소리 한개의 목소리만 나오는데, 우리나라의 
경우(ko-KR)를 예로 들면, 한국 여성분의 목소리 하나로 통일되어 나옵니다. 
다른 목소리를 듣고 싶으시면, 안드로이드의 OS언어환경을 바꾸시면 그 환경에
맞는 한개의 목소리만 나옵니다.  즉 동시에 두개의 언어의 목소리는 들을수 
없습니다.  이런 접근은 Windows의 접근이랑 비슷합니다.
(네. 착한 구글군이 요즘은 많이 다르네요.  아마도 단일 언어 사용자가 대부분인 OS 
환경을 고려한 배려이겠지만서도, 선택 따위는 니가가라 하와이~네요. OS가 되는 순간, 
약간 거만한 느낌이 듭니다. 쩝.)  

참 여담으로 애플사의 iPad 에서는 chrome이 뭐가 잘못되었는지 소리가 안나더군요.  
그리고 ChromeOS/ChromeBit는 없어서 테스트 못해봤습니다.

Note:  그리고 약간 더 헛갈리는건 다같은 chrome이라도 안드로이드의 목소리 
이름(voice name)이 데탑용 OS에서 와는 다르게 나옵니다.  예를들어, 
원도우,맥,리눅스 OS에서는 구글의 우리나라 목소리는 "Google 한국의"(ko-KR) 인데 
한국어일때는 "대한민국" 한국 으로 나오고, 영어일때는 심지어 
"Korean South Korea"(ko_KR)로 나옵니다.  

범용적 웹어플 만들때 무지 곤란할것 같습니다.


그럼, 크로미엄(chromium)기반 또는 
스마트 미러에서 목소리가 나오게 하려면 어떻게 해야 할까요?
===================================================

힘듭니다. 대신 정품 무료 chrome을 쓰시면 됩니다. 하지만, kiosk같이 원도우 매니저의 기능으로 
웹앱을 만드시려면, 또는 저희같이 node.js electron.js 를 쓰려면 얄짜없이 OS에서 
제공하는 목소리를  fallback됩니다. 

근데 이렇게 대충 하다보면 개발비 백만원짜리 거울아거울아 탄생도 가능합니다.  두둥. 

이건 여러모로 봅잡하죠. 그래도 꼭 하시고 싶으시면 OS를 구분으로 제가 생각할수 있는 몇가지 
옵션을 생각해 볼수 있습니다.  일단 제 개인적인 생각이니 참고만 하시면 좋겠네요.  
(가정: 모든 OS에서 node.js electron은 돕니다.)    

1) 원도우로 한다.   
   일단 제일 싸고 입맛에 맞는 저렴한 Intel Stick PC (아톰 기반) 나 패드를 약 10만원에 구입합니다.
   원도우8 깔려있으니 걍 쓰거나 7월전에 빨리 10으로 공짜 업그레이드 합니다.  작고 이쁘고 나쁘지 
   않은 옵션인듯 보입니다. (RPi2관련 약 2배 정도 가격으로 생각하시면 되지만서도)

2) 맥으로한다.  
  미친척하고 1)에 해킨토시를 설치한다. 근데요, 아톰은 설치가 안된다는 이야기가 있던데요. 
  이런 도전은 정신건강에 해로울수 있습니다.

3) 리눅스로 한다. 
    아, 그런데 RPi/odroid가 안되네요. 으..   Intel Stick PC도 안되네요.  (위설명 참조) 으...
   3)이 안된다는것  심히 골름골름합니다. 그래서 RPi는 구글님이 chrome을 안주니 
     (chromium만 존재) 포기 하더라도,  인텔에서 안되는건 진짜 못참겠습니다.  

(아, RPi qemu로 x86 emul 하면 어떨지는 모르겠네요. OS2개 크롬(미엄) 2개? ㅎ)
     

 포기하기는 좀 그렇고, 뭔가 하면 될것도 같은데요?




Note:  참, 여기 한번 가보세요. http://labs.naver.com/ 
      이번 스마트 미러 프로젝트에 필요한 모든 기술을 다 똬악 모아서 하고 있네요. ㅎ
      나름 열심히 잘하는것 같기는 합니다.  음성인식/음성합성/기계번역등은 앞으로 IT의 발전에
      중요한 공공재와 같다고  생각합니다.  그런 취지에서 보면 정말 칭찬해주고 싶습니다.  
      어째튼, 막써야 되는 공공재를 약간 조심스럽고 고급스럽게 접근하는게 제 취향은 아닌듯 보입니다.


그럼 내 데스크탑 Chrome을 서버로 써서, 
"Chrome이 대신 말하게" 하면 어떨까요?=============================




이렇게 하면, 위의 인텔PC 기반에서 리눅스(마이프레셔스!)에서 돌릴수 있습니다.
그리고 여차하면, RPi를 그냥 쓰고 말하기를 딴데로 보낼수도 있습니다. 
(물론 생각해 보면  다시 택배 받을수도 있을겁니다. WebRTC? ㅋ 가난하게 살다보면 뭐..)



어째튼, Chrome을 서버로 쓰는걸 만들기로 해봅니다, 골름골름~



그래서 Chrome을 웹 보이스 서버로 세워봤습니다.
==================================

준비물:

0) 스피커 달린 Intel PC + 마이프레셔스  (뭐 개발용 아무거나)
1) 웹서버 (node.js, express 씁시다. npm install 좋던데요?)
2) 대신 말해줄 google chrome (네 여기 까지는 구글군이 꽁짜로 줍니다)

여기서 문제는 1)과 2)의 연결 문제인데요, 제가 동굴에서 물고기를 쌩으로 자바(script) 먹을 때랑은
다른 새로운 세상이 열렸더군요. socket.io라는 그물(socket)으로 편하게 잡을수 있더군요.

그래서 그걸로 1)과 2)를 연결하면 되겠더군요.

... 그리고  결과물이 여기 있습니다.  코드는 이것저것 빌려왔는데, 
만들다 보니 살짝 재미있는 장난감이 나왔습니다.


쓸데없는 소리 이제 그만!  Show Me! Please talk to me!

======================================





1)  기본테스트:   


너그러운 마음에서 데모 한번 봐주시고,  


http://speech.embian.com/



2)  확장테스트:


재미로 준비한 추가 데모 꼭 해보시고, 한번 쭉 소리나는거 들으시고, 

*setting: 의 en-GB 를 ko-KR로 바꿔 들어 보세요 ㅎ

(강추! 우리집 꼬마가 좋아합니다.)

중국어/영어/일어/스페인어등 언어 공부하시는 분들 무료로 활용법을 찾으시면

만든 골름은 무지 감사할것 같습니다. 


http://speech.embian.com/rap



3)  혹시 수정이나 설치 필요하신 분 계시면 github에서 오픈소스로 제공합니다.

https://github.com/embian-inc/chrome-speech-synthesis



아, 외로운 친구의 PC/폰에 크롬띄워놓고 이성의 목소리로 "밥 먹으로 가요"를 

날려볼수 있습니다.  퍽이나 재미집니다.  골름골름~




맺음말

=====


동굴에 들어간지 오래 되어 소스가 날것이라 전혀 이쁘지는 않습니다. 

지나가던 저희 개발자 호빗 무리들이 무지 비웃었습니다. 


하지만, 골름은 사랑받기 위해서 

태어난 한때 호빗이였던 아이입니다.              이뻐해 주시면 좋겠네요. (최종스코어:  3:2!)


그럼 전 가족부양하러 물고기 잡으러 다시 동굴로 돌아갑니다.긴글 읽어 주셔서 감사합니다. 


마이프레셔스, 골름골름~

  


ps 결국 구글님이 무료로 열어줘서 편하게 쓰지 않을까 생각합니다. 언젠가는 ^^ 

아님 네이버님, 왓쓴님 이라도.  아니면 누군가는 문익점 되서 디지탈씨앗 몇개 날라야죠, 뭐. 






References:


Standard for Web Speech Synthesis

* https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#examples-synthesis


Standard for SSML

* http://stackoverflow.com/questions/21952736/the-right-way-to-use-ssml-with-web-speech-api

* https://www.w3.org/TR/speech-synthesis11/#edef_emphasis


Main Code of Speech Synthesis API Example

* http://blog.teamtreehouse.com/getting-started-speech-synthesis-api



Posted by 알 수 없는 사용자
,

12월 중순 쯤 회사내에 흥미로운 동영상이 공유 되었는데 바로 smart-mirror 라는 프로젝트였습니다. 아래 동영상을 보시면 smart-mirror에서 사용자의 음성으로 지도나 philips hue 전등을 컨트롤 하는 모습을 보실 수 있을 것입니다. 되게 fancy해 보이지 않나요? smart-mirror에서 사용한 언어는 javascript이며  speech recognition library로는 annyang 을 사용하고 있었습니다.


[  smart-mirror[링크]


회사 내에서도 우리도 해보자라는 의견이 나오기도 했고 마침 이전 프로젝트도 끝나고 시간이 남아 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원에 판매 되고 있습니다. ]


 evancohen의 smart-mirror

 embian의 smart-mirror

 라즈베리파이 2, USB microphone, 모니터 

  사용한지 오래된 노트북이나 태블릿 

  one-way mirror 

 아크릴 + 미러필름 or 유리 + 미러필름 or 유리 액자 + 미러 필름 


미러필름을 붙이는데 상당히 애를 먹었습니다. 특히 아크릴에 경우 반나절 정도 지나자 기포가 올라오는 단점이 있어서 유리에 미러필름을 붙였습니다. 





[one-way mirror 제작 과정]



[절연테이프를 붙인 one-way mirror 뒷면]

[one-way mirror 앞면]


2주 동안 작업한 이 프로젝트의 최종 결과물은 다음과 같습니다.


[스마트 미러] 


코드는 다음 링크에서 확인하실 수 있습니다. Github : https://github.com/embian-inc/smart-mirror-ko.git

시연동영상은 다음과 같습니다.



현재 smart-mirror는 mac,window,ubuntu 환경에서 모두 사용 가능하며 android의 경우 다음링크를 참고하세요. 

'Smart-Mirror' 카테고리의 다른 글

텔레그램 봇으로 음성채팅 하기  (2) 2016.04.10
chrome speech synthesis service 개발기  (2) 2016.02.23
Posted by 알 수 없는 사용자
,