<h4 style="text-align: center;">드라마 스타트업 따라잡기 2: 한지평의 AI스피커</h4> <p style="text-align: center;"><a href="https://www.wishket.com/news-center/detail/624/">1탄 먼저 읽어보셔도 좋습니다.</a></p> <br/> <p style="text-align: center;">한지평: 영실아 나 왜 잠이 안올까?</p><p style="text-align: center;">영실이: 신경쓰이는 문제가 있나보네요.</p><p style="text-align: center;">한지평: 어 있어! 어떻게 해결하지?</p><p style="text-align: center;">영실이: 잠을 푹 자보세요. 푹 자고 내일이 오면 문제를 해결할 새로운 아이디어가 떠오를 거에요.</p> <br/><br/> 영실이는 드라마 스타트업의 AI스피커입니다. 그리고 늘 그렇듯 오늘도 한지평씨의 고민을 해결해줬죠. 한지평씨의 전문 심리상담사를 자처하는 영실이는 "못 알아듣기"와 "헛소리”를 무기로 수지를 제치고 한지평씨의 마음을 사로잡는데 성공합니다. <a href="https://www.youtube.com/watch?v=yZht7Ek1NUs&t=4s"><img class="size-full wp-image-20170 aligncenter" src="https://www.wishket.com/media/newscenter/655/본문_유튜브_이미지.png" alt="" width="550" height="413" /></a> <br/> 첫번째 에피소드, 그것도 약 2분 30초 스타트업은 영실이의 헛소리를 신호탄으로 출발합니다. "영실아 오늘 날씨 어때?"라는 한지평씨의 질문에 영실이는 운세를 읊어대죠. 애타게 다시 날씨를 물어보는 한지평씨의 마음을 아는지 모르는지 영실이는 끝까지 운세를 낭독합니다. <img class="size-full wp-image-20172 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림1_영실이.png" alt="" width="100" height="180" />네 오늘은 이겁니다. 오늘 제가 만들어볼 것은 <strong>운세와 날씨를 헷갈려하는 음성비서죠.</strong> 영실이가 사람의 말을 듣고 대답을 하는 프로세스는 다음과 같은데요. <img class="size-full wp-image-20173 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림2_대답프로세스.jpg" alt="" width="640" height="177" /><p style="text-align: center;">영실의 대답 프로세스</p> 간단히 요약하자면 1. 우선 사람의 목소리를 인식해서 텍스트로 바꾸고 2. 텍스트에 맞는 정보를 분석해서 3. 해당 정보를 읽어주는 겁니다. <br/> 어휴 이번엔 정말.. 상상만해도 험난한 미래가 보이는데요. 사실 저는 이런 거 직접만들 능력도 없거니와.. 의지도.. 없습니다. <img class="size-full wp-image-20174 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림3_아유하기싫어.png" alt="" width="478" height="271" /> 오늘 영실이는 아무것도 안 할랍니다. 그냥 다른 똑똑이들한테 다 부탁해버리죠 뭐. 다른 누구한테 부탁할거냐구요? 음 … 음성인식은 국내 최고의 IT기업인 카카오한테 기상데이터는 한국 일기예보의 중심 기상청한테 음성합성은 세계 최고의 IT기업 구글한테 부탁할 겁니다. <img class="size-full wp-image-20175 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림4_프로세스.jpg" alt="" width="640" height="222" /><p style="text-align: center;">버스는 내가 탈 건데 운전은 누가 할래?</p> 이런 말도 안되는 부탁이 가능한 이유는 구글, 네이버 카카오 등 많은 기업들이 자신이 가지고 있는 기술을 외부의 개인이나 다른 서비스가 사용할 수 있도록 공개해두기 때문입니다. 우리는 이러한 것들을 API라고 부르는데요. 오늘 영실이가 음성비서 일을 하는데 필요한 음성<->텍스트 변환, 기상정보 검색 등도 모두 이 API로 가능한 기능들입니다. API를 사용하는 법은 간단합니다. 해당 기업들에게 편지를 쓰는건데요. “얘 카카오야 나 영실인데 이 소리 좀 텍스트로 바꿔줘.”라고 말이죠. 아 물론 이걸 컴퓨터가 알아듣게 하기위해 약간 바꿔줄 겁니다. 그래서 오늘의 목표는 영실이의 헛소리 기능을 이 API만으로 구현하고자 합니다. <br/> 혹시 API의 개념을 좀더 알고 싶은 분이 계신다면 아래 글을 읽어보세요. <a href="http://brunch.co.kr/@businessinsight/65"><img class="size-full wp-image-20176 aligncenter" src="https://www.wishket.com/media/newscenter/655/브런치.png" alt="" width="566" height="149" /></a> <br/><br/> <h3>01 Voice Recognition (Speech to Text)</h3>목표 : <strong>마이크로 녹음한 목소리를 텍스트로 변환하기</strong> 사용 API: kakaoAPI 영실이는 “소리”를 이해할 수 없습니다. 따라서 첫번째로 할 일은 목소리 파일을 영실이가 이해할 수 있게 텍스트로 바꾸는 거죠. <img class="size-full wp-image-20177 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림5_카카오API.jpg" alt="" width="640" height="199" /><p style="text-align: center;">카카오 API를 활용한 STT</p> 앞서 말했듯이 API를 사용하기 위해서 영실이는. “카카오야 나 영실인데 소리 좀 텍스트로 바꿔줘” 라는 내용의 편지를 보내야합니다. 물론 컴퓨터가 한글을 이해할 리 없으니, 편지의 실제 내용은 이렇게 변형되어야 할 겁니다. <img class="size-full wp-image-20178 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림6_카카오편지.jpg" alt="" width="640" height="416" /><p style="text-align: center;">영실이가 카카오에게</p> 즉, API형식에 맞춘 방식은 <strong>requests.post(kakao_url, header=’service=dictation’ api_key=영실, data=audio)</strong> 처럼 바뀌게 되는 것이죠. 우선 간단한 코드로 "시리야"라는 물음에 "네 지평님"이라는 말을 프린트하는 듣는 코드를 짜봤는데요. <br/> 테스트를 해보니 <a href="https://serviceapi.nmv.naver.com/flash/convertIframeTag.nhn?vid=668285E5992C23055419D8452DB4850B77B1&outKey=V1225031d216a753658dd994d9e29bba102c3882f991552055e18994d9e29bba102c3&width=544&height=306">음성인식 테스트 동영상</a> 이처럼 정상적으로 소리를 읽는 것을 확인할 수 있습니다. <br/> 자 이제 이렇게 만들어진 텍스트를 [운세]질문인지 [날씨]질문인지 구분해 “다음 똑똑이”인 기상청에게 물어보러 갈 겁니다. <br/> * 본 과정의 진행순서 1. 카카오 개발자사이트에 애플리케이션 등록하여 API키 발급 2. speech recognition 라이브러리를 사용해서 마이크 소리 담기 3. API에서 받은 response의 value를 텍스트로 받기 <br/><br/> <h3>02 기상청에서 날씨정보 가져오기</h3>목표 : <strong>위치와 날짜에 맞는 기상정보 가져오기</strong> 사용 API: 기상청 동네예보 API 전 장을 통해서 한지평씨의 요청을 이해하게 된 영실이는 질문에 맞는 기상정보들을 가져와야 합니다.. <img class="size-full wp-image-20180 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림7_기상청API.jpg" alt="" width="640" height="222" /><p style="text-align: center;">기상청 API를 활용 데이터 가져오기</p> 이를 위해 이번에는 기상청에 편지를 쓰는데요. <img class="size-full wp-image-20181 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림8_기상청편지.jpg" alt="" width="640" height="416" /><p style="text-align: center;">영실이가 기상청에게</p> 이번에도 역시 실제로는 <strong>requests.get(weather_url, header=’getVilageFcst, today, (66, 101)’ api_key=영실)</strong> 와 같이 API에 맞는 메시지를 보내게 됩니다. 간단히 목소리 파일만 줬던 카카오와는 달리 내가 어디 있는지(좌표 = 66,101)나 어느 날짜를 물어봤는지 (date = today)등의 정보를 포함해서 물어본 것이 눈에 띄네요. 이를 받은 기상청은 강수량, 구름상태, 기온, 습도 등의 정보를 담은 답장을 주는데요. 저는 이렇게 받은 수많은 정보 중 [기온, 풍속, 강수형태, 구름상태] 4가지의 정보를 ”바람 한 점 없이 흐린 하루가 예상됩니다. 기온은 2도이며 비나 눈 소식은 없습니다.” 와 같은 문장으로 변형시키는 코드를 추가했습니다. <br/><br/> 이번 과정을 통해 우리는 한지평씨의 질문이 “오늘 운세가 뭐야?”라는 질문에 위와 같이 날씨를 설명해주는 텍스트를 만들 수 있게 되었습니다. 아, 반대로 한지평씨가 “날씨”를 물어보면 그냥 "운명의 신이 당신의 잔잔한 일상에 미풍을 불어오는 날입니다."만 말하게 했습니다. (운세 API는 못 찾겠더라구요) <br/> * 본 과정의 진행순서 1. 기상청 open API 신청하여 동네예보 API key 발급 2. 질문 날짜(오늘 / 내일)와 질문자의 지역 좌표를 변환 3. API에서 받은 날씨정보를 문장으로 변환 <br/><br/> <h3>03 Voice synthesize (Text to Speech)</h3>목표 : <strong>만든 텍스트를 음성으로 변환하기</strong> 사용 API: Google text to speech API 최근 "AI 프로젝트 다시 한번" 보셨나요? 12년전 돌아가신 터틀맨님의 목소리를 AI로 복구하는데 성공해 엄청난 반향을 일으켰죠. <a href="https://www.youtube.com/watch?v=Jm0s0CEEd3Q"><img class="size-full wp-image-20182 aligncenter" src="https://www.wishket.com/media/newscenter/655/본문_유튜브_이미지_2.jpg" alt="" width="480" height="360" /></a> 여기서 쓰인 기술이 바로 음성 합성인데요. 이처럼 시리, 빅스비와 같은 음성비서 뿐만 아니라 키오스크, 로봇, 전자책 읽기 등 다양한 용도에서 사용되고 있죠. 이번 장에서는 기상청에게 부탁해서 만들어낸 "운명의 신이 당신의 잔잔한 일상에 미풍을 불어오는 날입니다."를 한지평씨에게 읽어줄 겁니다. <img class="size-full wp-image-20183 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림9_구글API.jpg" alt="" width="640" height="222" /><p style="text-align: center;">구글 API를 활용 텍스트 읽기</p> 역시나 구글에게 편지를 쓸 건데요. 내용과 형태도 앞선 편지들과 크게 다르지 않습니다. 일반적으로는 “나 영실인데”를 증명하기 위해 API키를 썼다면 구글의 경우 환경변수 설정이라는 방법을 쓴다는 것만 다르네요. <img class="size-full wp-image-20184 aligncenter" src="https://www.wishket.com/media/newscenter/655/그림10_구글편지.jpg" alt="" width="640" height="338" /><p style="text-align: center;">영실이가 구글에게</p> * 본 과정의 진행순서 1. 구글 클라우드 플랫폼의 API 신청하여 환경변수 설정 2. 질문에 대한 대답문장을 구글 API를 활용하여mp3파일로 변환 3. playsound 라이브러리를 활용하여 mp3파일 재생 마침내 만들어진 텍스트를 읽어주는 기능까지 완성했습니다.<br/> 실제로 만들어진 영실이를 켜보면..! <br/><br/> <a href="https://serviceapi.nmv.naver.com/flash/convertIframeTag.nhn?vid=BD00E2EB279A20FBD669DEE11D67F75BD088&outKey=V1210183e1477b866c1d0e300a9b7110b6dd1524398ae9a2e4c99e300a9b7110b6dd1&width=544&height=306">최종 영실이 동영상</a> 정상적으로(?) 운세질문에는 날씨를, 날씨 질문에 운세를 답해주는 친절한 영실이를 만날 수 있습니다.<br/><br/> 오늘은 이렇게 다양한 API를 활용한 음성비서를 만들어봤는데요. 물론 운세나 날씨질문이 아닐 경우 “무슨 말씀이신지 모르겠어요” 만 뱉는 바보 음성비서라 아직 많이 부족하긴 합니다. <br/><br/> 오늘은 드라마 스타트업 따라잡기의 두번째로 음성비서 영실이 따라하기를 해봤는데요. 스타트업의 후반부에 등장하는 “눈길” 서비스의 경우에도 1편에서 만들었던 물체인식 모델과 이번 편에서 만든 음성비서의 조합으로 만들어진 앱입니다. 향후 이 영실이에 기능들을 하나씩 추가하다 보면 정말로 “눈길”을 만들 수 있을지도 모르겠네요. 일단 당장 김원해씨의 얼굴을 보여주며 “이게 누구야?”라고 질문하면 “변기입니다!”라는 답은 들을 수 있을 테니 말이죠.