개발자 Life

Q보이스 개발경험

dextto™ 2020. 3. 19. 21:40


이 글은 2013년 5월 29일에 작성한 것입니다. 작성 당시 그리고 지금까지도 회사 뒷담화까지 섞여 있는 글을 블로그에 자신있게 공개하기가 꺼려졌기 때문입니다. LG전자 구성원들이 좀더 열린 마음과 다양성을 가지게 되기를 바랍니다.




  개발자로 살아오면서 개인적으로 사용자들과 주위 조직의 사람들로 부터 가장 관심을 많이 받은 제품인 Q보이스를 개발한 이야기를 해 보려 한다. Q보이스는 LG전자에서 처음으로 서버를 다운시킨 사고(?)가 일어나기도 했으니 그동안 가장 성공한 앱이라고 할 수 있다.



팀 구성


  Siri가 세상에 나왔다. 역시 애플에서 만든 앱답게 획기적이다. 사람들의 입에 오르내리며 왜 우리는 이런 걸 진작 만들 생각을 못할까라는 자조적인 말이 나온다. 경쟁사에서는 유사 앱을 준비한다는 소문이 들려온다. 그 때 선행연구소의 한 부서에서 제안을 한다. "우리도 충분히 만들 수 있습니다." 아니? 정말? 우리 회사 자체 기술로 벌써 음성인식이 가능한 수준이라고? 그렇게 해서 기술검토가 이루어지고, 음성인식 앱의 프로토타입이 나온다. 이를 이어받을 팀원이 모집되고, UX시나리오 팀원이 가세하여 잉태한 생명에 양분을 공급한다.


나는 팀이 만들어지고 나서 3개월 뒤에 합류했다. Q보이스 팀원의 구성은 급하게 짜깁기한 느낌이 있었다. 조직개편이 일어나던 시기에 원래 팀에서 적응하지 못하던 멤버들이 모여 있었다. 나 역시 팀에 조인하기 전 6개월 동안 코딩은 하지 못하고 문서작업만 하고 있던 터라 이직을 심각하게 고민하고 있을 때였다. 개발자의 성격은 보통 내성적인 경우가 많은데, 하루 종일 문서작업하고 타부서와 회의만 하는 업무가 얼마나 고통스러운지 당신이 개발자라면 공감할 것이다. 그래서 새로운 앱 개발에 동참하겠냐는 파트장의 제안에 콜을 외쳤다.



주인님 제 이름 좀 (빨리) 지어 주세요.


  'Q보이스'라는 이름을 얻기 위해 우리는 3개월을 기다렸다. 이해가 되지 않을 것이다. 지금도 이해가 안 된다. 작명은 상품기획팀에서  진행한다. 고객에게 임팩트가 있을 만한 것들을 후보로 고르고 상표권 등 법률 검토를 거쳐 결정한다. 지금은 이름이 'Q보이스'가 되었지만 초창기 이름은 Personal Assistant였다. 아직도 그 이름의 흔적이 패키지명(com.lge.pa)에 남아있다. 한글로 번역된 이름은 없었는데 굳이 한글 이름을 붙였다면 '개인비서'가 되었을까? 뭐 이것도 나쁘지 않다는 사람도 있었다.


  여하튼 드디어 1.0버전이 출시됐다. 이름은 '퀵보이스(Quick Voice)'. 음... 뭔가 사용자의 질문에 빨리 대답해줘야 할것만 같다. 퀵서비스를 본따 만든 것 같기도 하고. 그래도 왠지 입에 착착 감긴다. '퀵'을 발음할 때 힘이 불끈 들어간다. 하지만 치명적인 문제가 있었다. SKT에서 이미 서비스하고 있는 음성사서함 서비스와 동명이었다. UX실 연구원이 문제를 제기했다. 하지만 상품기획팀은 그대로 GO를 했고, 예상했던 문제가 불거져 결국 현재의 'Q보이스(QVoice)'가 됐다. Q와 Voice는 붙여쓰는 것이니 주의바람. :)


  SW개발을 하다 보면 이렇게 불필요하게 중복해서 하는 일이 허다하다. 아무리 개발문화가 애자일하게 진행되고 반복개발을 한다고 해도 한 이터레이션 내에서는 어느 정도 폭포수로 진행되는 일이 있기 마련이다. 위의 예의 경우, 앱 이름이 결정되고 나면 다음 할 일이 기다리고 있다.

- 소스코드에서 App 명칭, 사용예제, 도움말에 들어간 언어 변경

- 특정 시나리오에 대한 Q보이스 엔진 수정. 예를 들면 이런 것이다. 사용자가 "너 이름이 뭐야"라고 대답했을 때 "제 이름은 Q보이스입니다. 멋지죠  헤헤" 이런 식으로 대답할 수 있도록 변경해야 한다.

- 사용자가 앱이름을 발화했을 때 인식할 수 있도록 특정단어(앱이름) 학습. (시간이 오래 걸린다.)


  물론 상품기획팀에서도 후처리 공정이 있다는 사실을 알고 있다. 하지만 지금까지의 경험으로는 뒤의 일이 어떻게 되든 별로 개의치 않고 일을 진행한다는 느낌을 받았다. 이게 대기업에서의 문제다. 조직이 커지면 한 팀으로 움직이기가 힘들다. 업무에 따라 여러 조직으로 나누게 되는데 문제가 생기면 자기 조직에게 피해가 가지 않도록 방어적이 된다. 고위직과 가깝게 일을 하게 되는 조직에 힘이 실리고 이런 일은 비일비재하게 일어난다. 다른 프로젝트들도 마찬가지겠지만 휴대폰 제조업체의 특성상 망 사업자에게 납품하기로 한 목표 일정을 정해 두고 개발일정을 역산해 나간다. 하지만 프로젝트 전반부에 기술검토와 팀을 꾸리고 셋업하는 단계에서 위와 같은 일들로 인해 시간을 잡아먹게 되면, 실제 개발일정은 점점 줄어들게 된다. 시간에 쫓기면 품질은 떨어지게 마련. 일정 지연에 대한 책임은 개발부서로 전가하기 일쑤다. 



사람들의 입에 퀵보이스가 오르내리다.


  드디어 옵티머스 뷰 밸류팩에 퀵보이스가 탑재됐다. 사람들의 반응이 좋다. 인식률이 경쟁사 S-Voice보다 낫다는 블로그 포스트가 여기저기 올라온다. 밸류팩 동영상도 인기를 끌었다. 성우 목소리가 좋아서 한몫 한 것 같다.




  특히 채팅 기능이 인기를 끌었다. 여러 가지 질문에 대한 답변을 미리 많이 만들어 놓았기 때문에 가능했다. '100만 알바 양병설'이 인테넷상에 나돌기도 했다. 사실 이게 전부 틀린 말은 아니다. 당시 엔진 개발팀의 임원분께서 채팅 기능이 '심심이'로써 중요한 역할을 할 것이라 예상을 했고 인턴사원 10여명을 동원해서 1주일동안 빡세게 질문/답변 DB를 만들었다. Q보이스를 사람에 비유한다면 그녀의 나이가 젊다고 느껴지는 것도 DB를 만든 20대 인턴들의 몫이 크다. 당시 Siri나 S-Voice는 "이해하지 못한다"는 답변이 되돌아오는 질문이 너무 많았다. 당연히 사용자들은 인식률이 떨어진다고 생각했다. 지금은 채팅 DB가 서버단에 있어 쉽게 업데이트 가능하지만 당시 퀵보이스는 앱 내에 들어 있는 DB를 업데이트하려면 앱 자체를 다시 다운로드 해야했다. S-Voice는 당시에서 서버 방식이었다. 채팅 답변 추가는 쉽게 할 수 있었음에도 이런 하찮은(?) 채팅이 인기를 끌 것이라고는 생각을 못했던 것 같다.



Q보이스를 널리 알리기 위해...


  개발이 막바지에 이르렀을 때 사용자들의 루팅(Rooting, 안드로이드 내의 OS인 리눅스의 super user권한을 얻는 것)에 어떻게 대비할 것인가에 대해 고민한 적이 있다. 새로운 폰이 출시되면 블로그, 게시판에는 루팅하는 방법에서 부터 폰 안에 있는 앱을 빼내서 설치하는 방법이 상세하게 올라온다. 제조사 입장으로서는 엄청난 비용을 투자해 만든 제품이 공짜로 뿌려지게 되는 셈이니 여간 골치 아픈 게 아니다.


  하지만 Q보이스는 이런 루팅에 대해 방어책을 마련하지 않기로 했다. Q보이스는 후발 주자였다. 사람들이 많이 사용해 보고 우리 제품이 더 좋다는 것을 소비자가 직접 느끼게 하는 게 최고의 마케팅이 될 것이라는 결정이 내려졌다. 그리고 이런 일들이 벌어졌다.


이런 류의 블로그가 넘쳐 난다. 

http://esmartsocial.tistory.com/311




성공 비결


  Q보이스가 성공하는 데에 기여한 것들이 무엇이 있을까 생각해 본다.


1. 개인의 희생과 훌륭한 팀 리더


  Q보이스 팀은 그다지 팀웍이 좋은 팀이 아니다. 뭐 그렇다고 감정이 상해서 서로 쳐다보지도 않는 사이는 아니다. 대개 성공한 프로젝트의 팀원들은 열정을 가지고 비전을 공유하며 손발이 착착 맞아 들어간다고 생각한다. Q보이스를 통해 그런 경우가 아니더라도 얼마든지 성공하는 프로젝트가 있다는 것을 경험했다. 물론 이전 프로젝트에서는 그 반대의 경우라도 실패하는 것도 보았다. 


  Q보이스의 경우는 팀원 개개인의 희생이 컸다고 생각한다. 워낙 주위에서 관심들을 많이 주셨다. 프로토타입이 만들어 지고 얼마 지나지 않은 시기부터 프로젝트 리더는 거의 매주 임원들 보고에 불려 다녔다. 팀원들은 하루가 멀다하고 바뀌는 요구사항과 시도 때도 없이 찾아와서 진행상황을 체크하는 임원에게 시달려야 했다. 아직 기본 기능 개발도 완료되지 않았는데 버그 하나 들고 와서 사람의 진을 빼놓기 일쑤다. 개발자는 참을성이 강한 편이다. 묵묵히 자기의 잘못으로 받아들인다. 그냥 어서 문제를 해결하는 편이 말대꾸해서 아까운 시간을 더 잡아먹게 만드는 것보다 낫기 때문이다.


  정신없이 진행되는 상황에서 팀 리더는 중심을 잘 잡는 것이 매우 중요하다. 이 팀의 리더가 그랬다. 여기저기서 쏟아져 들어오는 쓸데없는 기능들을 쳐 내는 것은 실무자보다는 리더가 결정해 주는 것이 낫다. 팀원들을 다독거리기도 하고 어느 정도 압박도 가하는 것도 필요하다. 관련 팀과의 업무 조율을 하고 팀원이 개발에만 집중할 수 있도록 해야 하는 중요한 역할을 한다. 가끔씩 Android 책을 보고 code snippet도 만들어 주었다. 팀원들의 업무 로딩과 스트레스 지수에 좀 무심한 면이 있긴 했지만, 자기가 개발 실무를 할 때 실력을 인정받은 개발자였고 관리자로서 다년간 경험이 있었기 때문에 팀을 꾸려가기에는 충분했다.


2. 커뮤니케이션 - 한 자리에 모이기


  Q보이스를 구동하기 위해서는 3개의 앱이 필요하다. Q보이스 앱외에 Q보이스 엔진, Q보이스 음성 팩이 있다. Q보이스 엔진은 사용자의 음성을 텍스트로 변환한 결과를 자연어 처리하는 역할을 한다. '베르니케'[각주:1]라고 명명된 엔진이 포함된 것으로 핵심 기능이다. Q보이스 음성 팩은 그 반대로 주어진 텍스트를 음성으로 출력한다. 말 그대로 TTS(Text to Speech)다.


  그런데 Q보이스 엔진, Q보이스 음성 팩은 Q보이스 앱을 만드는 휴대폰 사업부가 아닌 다른 조직에서 개발을 했다. 이럴 경우 조직이 다르기 때문에 서로 커뮤니케이션이 원활하지 못하고 영역을 나누어 일하기 쉽다. 업무에 선을 긋는 것이다. 하지만 우리는 한 곳에 모여서 일하기로 결정했다. 이전의 프로젝트를 보면 엔진 개발 부서는 개발된 신규 엔진을 탑재하기 위해 펀딩을 받아야 하는 입장이기 때문에 엔진 개발자가 휴대폰 사업부의 사업장으로 옮겨와서 일하는 경우가 대부분이었다. 하지만 엔진 개발자의 수가 월등히 많았기 때문에 약 1년여간 앱 개발자들이 출근에 1시간 반이 걸리는 사업장으로 이동해서 함께 일했다. 정말 한 팀인 것 처럼 회식자리도 자주 가지고, 커뮤니케이션도 활발히 가졌다.


3. 다년간 준비해온 자연어 처리 엔진과 탁월한 선택


  Q보이스는 후발 주자였다. Siri가 미국에서 인기를 얻고 있었고 국내에서도  iPhone을 iOS6로 업데이트 하면 한국어판 베타 버전을 사용할 수 있었다. S보이스도 출시됐고 팬택에서도 '스마트 보이스'라는 이름으로 음성인식 앱이 탑재된 폰을 시장에 내놓았다. 당연히 사용자들에게 첫인상을 깊게 심어 주지 못하면 성공하지 못하는 상황이었다. 하지만 다행이랄까. 경쟁사의 음성인식 수준은 그다지 높지 못했다. Siri는 적어도 한국어 음성인식에서는 말 그대로 베타 수준에 머물고 있었고, VLingo 음성인식 엔진을 이용한 S보이스와 스마트 보이스는 인식률이 너무 나빴다. 반면 퀵보이스는 Android에서 제공하는 Google Voice Search를 사용했는데, 구글의 음성인식기는 전세계 사람들이 사용하다 보니 성능이 결코 뒤쳐지지 않았고 시간이 갈수록 더 나아졌다. 아마 구글에서 음성데이터가 쌓일수록 튜닝을 계속 해서 그럴 것이다. 더군다나 공짜가 아닌가!! 처음에 VLingo, Nuance, Google 이렇게 3개를 놓고 검토를 했을 때 VLinigo를 선택하지 않은 게 옳은 판단이었다. 


  위 내용은 사용자의 음성을 텍스트로 변환하는 기술에 대한 것이다. 음성인식을 위해서는 이렇게 텍스트로 변환된 문장의 의미를 파악하는 기술이 필요하다. Q보이스 팀은 한국어를 위주로 다년간 준비해 온 자체 기술이 있었기 때문에 이슈에 대한 대응이 민첩했다. 경쟁사들은 타사의 기술을 가져다 썼기 때문에 기존 로직과 정해진 규약을 원하는 자사 시나리오 데로 변경하는 데에 많은 제약이 있었을 것이다. 또 구글 인식기는 전화번호부에 저장된 사람 이름에 대한 인식률이 낮았다. 예를 들면 "홍길동에게 전화해줘"라고 했는데 인식 결과가 "홍원동에 전화해줘"라고 인식되는 경우다. Q보이스 엔진 내에는 자체 음성인식가 있어 구글 인식기와 하이브리드로 동작하여 인식률을 높였다.


4. 잘 짜여진 시나리오가 아닌 만들어 가는 시나리오


  UX팀과 가끔 술자리를 가지면 서로 낯간지러운 소리를 할 때가 있다. 지금까지 이렇게 적극적인 개발 팀은 처음이다, 앱의 이해도가 이렇게 높고 훌륭한 시나리오를 쓰는 팀은 처음 만났다, 이런 식이다. 실제로 Q보이스를 개발하면서 UX연구원과 협업했던 방식은 내가 지금까지 만났던 UX실 연구원들과 일했던 그것과는 달랐다. 대개 개발팀은 시나리오를 초기에 fix시키고 바꾸지 않으려는 경향이 있는데, Q보이스 팀은 오히려 시나리오 팀과 함께 일했다고 표현하는 게 더 적확한 표현이다. UX담당 연구원을 시도 때도 없이 개발팀 공간으로 불러 구현사항을 점검하고 시나리오대로 구현되고 있는 지를 확인시키고 현재 이슈를 풀거나 회피할 방법을 모색했다. 30여명이 되는 연구원들이 큰 회의실에 모여 평소 사용해 보고 마음에 안 들거나 바꿨으면 하는 점을 도출하는 시간을 가진 적도 있다. 사실 피곤한 작업이었지만 지금 생각해 보니 그런 과정에 즐겁게 동참했고 신선한 경험으로 남아있다.


5. 타이밍


  프로젝트가 성공하는 데에 적기출시가 중요한가? 품질이 중요한가? LG에 취직하기 전 모 기업 그룹면접에서 이런 질문을 받았다. 당신이라면 어떻게 답을 내놓을 것인가? 정답은 없다. 둘 다 중요하다. 적기출시가 늦어져서 경쟁사에게 시장을 뺏길 게 예상된다면 기능을 쳐내야 한다. 품질이 엉망이라서 사용자로 부터 영원히 외면 받을 수준이라면 출시를 연기하는 편이 낫다. 하지만 변수는 수없이 생겨난다. 뭔가 성공할 조짐이 보이는 프로젝트라면 더욱 그렇다. 뻔히 속이 들여다보이는 데도 다 된 밥에 숟가락만 얻으려는 얄팍한 사람들도 나타난다. 물론 이럴 때마다 일거리는 늘어난다. 자기들은 프로젝트에 기여했다고 생각하겠지만 실제로는 민폐만 끼친다는 것을 자신만 모르고 있다. 


  시장을 장악하지 못한 업체의 비애가 하나 있는데 무얼 하든지 선두 업체와 비교당한다는 것이다. 애플은 Siri를 내 놓기 전에 무엇과 비교했을까? 스티브 잡스는 전격 Z작전에 나오는 'KITT'와 비교하여 개발자들을 쪼아댔을까? (그의 전기를 읽어 보면 그러고도 남을 사람인 것 같긴 한데..)

   

  음성인식기술이 아직 KITT를 따라잡지 못했다. 그러다 보니 false alarm이 많고 인식률 자체도 떨어진다. 그렇다면 어느 정도 선에 사용자가 만족할 것인가를 고민해야 하는데 이게 말이야 쉽지 명확한 근거가 존재하지 않는다. 여기서 복병이 등장한다. 다음 버전을 준비해야 하는 상황에서 검증 부서에서는 인식률을 가지고 발목을 잡는다. 결국 경쟁사의 그것과 비교한 데이터 결과가 유사 또는 나은 수준이라고 판별이 나야 잠잠해진다. S보이스와 Siri한국어 버전의 인식률이 그나마 좋지 않아 다행이다.

  만약 이 산을 제 때 넘지 못했다면 어떻게 됐을까? LG전자 검증부서의 파워는 막강하다. 아무래도 SW업체라기 보다는 제조업체이다 보니 모델 출시의 권한을 검증부서가 쥐고 있다. 사내 수퍼 갑이다. 물론 검증실력은 출중하다. 블랙박스 테스트에서는 아마 세계 최고가 아닐까 한다. 그 험난한 산을 넘지 못해 drop되는 프로젝트를 여럿 보았다. 하지만 과연 그게 정답일지는 모를 일이다.


  Q보이스는 고위 임원의 지원을 등에 업고 기존 검증 부서의 프로세스를 무시하고 진행됐다. 옵티머스 뷰 밸류팩에 탑재하는 것이 목표였는데, 하도 요구사항이 자주 바뀌기는 데다 사용자 발화 케이스에 대한 예외 상황이 계속 생기다 보니 일정이 지연됐다. 기존 휴대폰 모델 팀의 개발 프로세스를 따를 수가 없었다. 다행히 앱 개발실의 자체 검증 프로세스가 있어 이를 이용하여 안정화 작업을 할 수 있었지만, 기존 프로세스를 무시하고 모델 프로세스 막바지에 탑승하는 것은 이례가 드문 일이었다. 그만큼 위험을 감수해야 했다. 하지만 그런 결정을 내리고 밀어 붙인 리더와 임원진의 '촉'을 감탄하지 않을 수 없다. 내가 만약 나중에 그런 상황에 닥치게 된다면 같은 결정을 내릴 수 있을지는 의문이다.


뒷담화


  개인적으로 Q보이스를 개발하면서 섭섭했던 일이 하나 있다. 최초 버전이 마무리 되어 갈 무렵 내가 Easter Egg를 넣자는 제안을 했고 처음에는 승낙이 떨어졌다. 이스터 에그는 두 종류가 있었다. 하나는 사용자가 "너 누가 만들었니?"와 같은 질문이 들어왔을 때 "제 국어 선생님은 XXX(해당 기능 담당자 이름)입니다."라는 답변 리스트를 여러 개 만들어서 랜덤하게 보여주는 것과, 다른 하나는 게임이나 영화 엔딩에서 만든 이들의 이름이 올라가는 이른바 Enging Credit이었다. 배경에 단체 사진을 넣고, 소속과 이름이 스크롤 되어 위로 올라가도록 하는 것이다. 예를 들면 이런 이미지를 상상했다.


  하지만 결국 리젝되었다. 경쟁사에서 사람을 빼 갈수도 있다는 후문을 들었다. 더 웃긴 건 그 뒤에 벌어졌는데 Q보이스가 회사 임원진 이름을 묻는 질문에 제대로 답변을 못한다고 해서 난리(?)가 난 것이다. 그렇게 영예롭게 이름이 포함된 사람 중에는 S사 임원도 있었다. 부디 이름이 널리 알려지셨길 바란다.


  직원들 사기를 꺾는 방법도 여러 가지다. 입사할 때 가장 마음에 들었던 문구가 "경쟁사가 탐내는 인재를 키우는 회사"였는데, 지금 보니 경쟁사에 인재를 뺏길까봐 전전긍긍하는 회사였나 하는 생각이 들었다.


마무리


  이제 Q보이스는 국내에 출시되는 많은 모델에 탑재되고 있다. 처음에는 사내에서 주목 받는 기능이었지만 이젠 그냥 하나의 앱이 되었다. 사용자들도 예전과 같이 뜨거운 관심을 보이진 않는다. 애니팡이 언제 그렇게 인기가 있었냐는 듯이 관심은 딴 데로 옮겨간다. 그래도 기능은 끊임없이 추가되고, 사용성은 개선되어 간다. 외국어도 배워서 이제 북미 시장에도 진출하고, 곧 전 세계 사용자들을 만나러 갈 준비를 하고 있다. 앞으로 이렇게 주목받을 일을 맡을 수 있을까 싶다. 왜 그 과정을 좀 더 즐기지 못했을까하는 아쉬움이 남는다. 이슈로 받는 스트레스를 배우는 즐거움으로 바꿀 수 있는 방법이 필요하다. 좀 더 웃고 즐기자. 나도 모르게 쓰고 있는 인상은 코드와 씨름할 때로 충분하다. 팀원에게 좀 더 잘해주자. 결국 사람만 남는다.

(세계일보 2012년 8월 30일 13면)

LG전자 스마트폰의 독자 음성인식기술 개발을 전담하는 MC사업본부 ‘Q보이스’ 개발팀 팀원들이 29일 서울 가산동 사무실에서 Q보이스 기능이 적용된 스마트폰을 들어보이고 있다. 

이재문 기자

http://www.segye.com/content/html/2012/08/29/20120829022929.html




  1. 베르니케 영역(Wernicke's area)은 뇌의 좌반구에 위치하는 특정부위로 청각피질과 시각피질로부터 전달된 언어정보의 해석을 담당한다. 이는 독일의 신경정신과의사인 카를 베르니케(Carl Wernicke)가 발견하였다. - 위키피디아 [본문으로]
반응형