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

- 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 알 수 없는 사용자
,