시작하며
안녕하세요. 카카오엔터프라이즈 음성처리팀의 카를로스와 덴젤입니다. 헤이카카오나 카카오미니 스피커를 사용하고 있는 분들이라면 하루에도 몇 번씩 '헤이 카카오'라는 호출 명령어를 부르고 계시죠? 카카오미니는 2017년 출시 이후 사용자가 "헤이카카오~"라고 발화 시 서비스를 이용할 수 있도록 설계되었습니다.
하지만 카카오미니의 출시 이후 끊임없이 들어오는 요구사항이 하나 있었습니다. 바로 호출 명령어인 ‘헤이카카오’를 다르게 부르고 싶다는 것이었는데요. 구체적인 요구사항을 공유해 드리자면 “저는 ’헤이카카오’ 말고 ‘자비스’(영화 아이언맨에 나오는 인공지능 비서의 이름)라고 부르고 싶어요”, “혹시 해리포터에 나오는 마법주문으로 부르는 방법은 없나요?” 등이었죠. 요구사항들은 조금씩 달랐지만 포인트는 ‘내 마음대로 호출 명령어를 부르고 싶다’는 것이었는데요. 이런 요구사항이 제품 리뷰나 댓글, 그리고 고객센터까지 문의가 심심치 않게 들어오게 되면서 내부적으로 이 사안에 대해 점차 진지하게 받아들이게 되었습니다.
그래서 탄생하게 된 '내 호출 명령어' 서비스에 대한 고민의 흔적과 결과를 이번 포스팅에서 간단히 소개해드리겠습니다.
# 호출 명령어란?
‘헤이카카오'와 같이 스마트 스피커를 부르는 단어를 호출 명령어(wake-up word) 또는 호출어라고 하는데요.
보통 인공지능 스피커의 호출 명령어는 기업 브랜드를 활용하여 작명하는 경우들이 많습니다. 그러다 보니 호출 명령어를 다르게 사용하고 싶다는 개개인의 요구사항을 다 맞추기는 사실상 어려웠는데요. 상당히 고민해서 선정한 호출 명령어 하나를 기기가 잘 알아듣도록 하는데도 많은 시간과 노력이 필요한데, 사용자가 정한 다양한 호출 명령어들을 잘 인식하게 하는 건 기술적으로 쉽지 않은 일이었습니다.
이는 국내 뿐만 아니라 해외에서도 마찬가지입니다. Amazon의 알렉사도 아직까지 사용자가 호출 명령어를 마음대로 선택할 수 없고, 미리 정의된 4개의 호출 명령어('Alexa', 'Amazon', 'Echo', 'Computer') 중에서 하나를 설정할 수 있을 뿐입니다. 최근 Amazon에서 Custom Assistant라는 개념으로써 3rd Party용으로 제공하는 서비스를 발표하긴했지만, 이는 특정 기업에 대해서 정해진 호출 명령어가 더 추가되는 정도일 뿐 사용자 마음대로 호출 명령어를 자유롭게 바꿀 수 있는 개념은 아닙니다. 국내 타사들의 경우에도 복수의 호출 명령어 중에 하나를 선정하는 동일한 인터페이스를 제공하고 있는 게 현실입니다.
# '내 호출 명령어', 어렵지만…
국, 내외 사례에서 보듯이 사용자 마음대로 호출 명령어를 변경할 수 있도록 하는 것은 기술적으로도 쉽지 않은 일입니다. 하지만 카카오엔터프라이즈에서는 지속해서 유입되는 사용자들의 요구 사항을 묵인할 수 없었기 때문에 2020년부터 내 마음대로 호출 명령어를 변경할 수 있는 기능을 개발했고, 2021년 7월에 릴리즈했습니다. 내 호출 명령어를 구현하기까지 저희가 직면했던 기술적 난제와 고려사항을 살펴보겠습니다.
▪ 기술적 난제
과연 사용자가 아무 말이나 등록해서 부르면 다 인식이 잘될까? 사실 이 점이 가장 어려운 문제였습니다. 인식이 잘되는 호출 명령어가 있고, 안 되는 호출 명령어가 존재하듯이 사용자가 자유롭게 호출 명령어 등록 시에 인식이 얼마나 잘 될지, 그리고 오동작이 얼마나 적을지 예측하는 단계가 필요했습니다. 예를 들어 “어이" 라는 단어가 호출 명령어로 등록되었다면, 일상 생활에서 그냥 “어~” 이런 소리만 들려도 오작동이 일어날 확률이 큽니다.
따라서 글자의 발음이 적거나 반복되는 경우(아아아아, 아이스 등), 자음이 적어서 인식이 어려운 경우(워아이니, 오하이오 등)은 호출 명령어로 사용할 수 없도록 했는데요. 이러한 과정은 한국어의 음운학 및 언어학적인 특성을 반영하여 적용하였습니다.
또한, 간혹 욕설이나 선정적인 표현 등의 비속어를 등록하는 경우가 있을 수도 있습니다. 아무래도 인공지능 스피커는 가족들이 함께 쓰는 경우가 많기 때문에 이런 비속어 차단이 필수였습니다. 따라서 카카오의 비속어 검출 API를 사용하여 비속어를 호출 명령어로 등록할 수 없도록 조치하였습니다.
▪ 고려사항
어떤 기술이든 단점은 존재하듯이 내 호출 명령어 기능을 구현할 때, 이 기능에서 발생될 문제점 또한 고려해야 했습니다. 내가 설정한 호출 명령어를 잊어버렸거나 또는 아이들이 호출 명령어를 이리저리 바꿔 스피커를 깨우지 못하는경우인데요. “헤이라이언~, 헤이어피치~ … 뭐였더라.”라며 기억나는 호출 명령어를 무한 반복하게 되는 불상사가 생길 수 있습니다.
이런 경우에 대비하여 해당 호출 명령어를 등록한 사용자의 헤이카카오 애플리케이션에서 자신이 설정한 호출 명령어를 확인할 수 있도록 기능을 구현했습니다. 하지만 만약 동생이 호출 명령어를 갑자기 바꿔버린 경우, 동생의 헤이카카오 애플리케이션에서 호출 명령어를 확인해야 하는 번거로움이 발생할 수 있습니다. 물론 스피커를 재부팅하여 호출 명령어를 초기화 할 수는 있지만, 저희는 이런 기억력으로 인한 문제를 해결할 수 있는 방안도 고민 중에 있는데요. 현재 카카오미니의 버튼을 누르고 "내 호출 명령어 알려줘" 라고 말하면 "철수야 라고 불러주세요" 라고 답변하는 기능을 검토 중입니다.
# 이제는 가능해진 '내 호출 명령어'
저희 팀에서는 2020년부터 사용자 호출 명령어 개발을 시작했고, 2021년 7월에 해당 기능을 릴리즈했는데요. 카카오미니 스피커가 기본적으로 제공하는 4개의 호출 명령어(헤이카카오, 카카오, 카카오야, 카카오미니) 외에 사용자가 호출 명령어를 마음대로 입력해서 선택하는 방식입니다.
▪ 동작 방식
이제 헤이카카오 애플리케이션의 설정 메뉴에서 “철수야"와 같은 자신이 원하는 호출 명령어를 등록하면 기기에서 사용자 호출 명령어를 사용할 수 있는데요. 실제로 내 호출명령어 기능이 어떻게 동작하는지 살펴보겠습니다. 전체 동작은 [그림 3]과 같이 등록 과정과 인식 과정으로 나뉘어지게 됩니다. 먼저 등록 과정을 살펴보겠습니다. 예를 들어 설정 메뉴에서 “철수야”라고 입력하면 해당 단어의 발음열을 분석해서 “ㅊ-ㅓ-ㄹ-ㅅ-ㅜ-ㅑ”로 조합되는 키워드 모델을 생성하고, 백그라운드 모델과 합쳐서 음성인식 모델을 구성합니다. 그리고 인식 과정에서는 사용자의 음성인식 모델을 이용하여 음성인식기가 “철수야”라는 발화를 검출하게 됩니다.
[그림 4]는 최종적으로 생성된 음성인식 모델을 표현한 것입니다. 사용자 키워드 모델은 등록된 호출 명령어에 해당되는 발음열로 이루어진 여러 개의 State들이 연결된 네트워크입니다. 그리고 다양한 발음들로 이루어진 State들을 조합하여 백그라운드 모델을 구성합니다. 만약 호출 명령어가 아닌 아무 발화가 입력되면 백그라운드 모델과 백루프 경로에서 발생한 스코어가 높게 나타나고, 호출 명령어를 발화한 경우에는 키워드 모델의 경로에서 발생한 스코어가 높게 나타나게 됩니다. 이러한 내용은 카카오 i 기술 동영상을 보시면 쉽게 이해할 수 있습니다.
▪ 설정 Tip
모든 호출 명령어에 대해서 만족스러운 인식 성능을 제공하기란 사실 쉽지 않습니다. 인식 성능은 설정한 단어나 사용자의 발화 방식에 따라서도 차이가 크게 나타나는데요. 미니스피커가 나만의 호출 명령어를 잘 인식할 수 있도록 설정 팁을 알려드리자면, 단어 앞에 “헤이”라는 단어를 붙이는 것입니다. 예를 들어, 호출 명령어를 “어피치”로 설정했을 때 인식이 잘 안된다면, 이번에는 “헤이~어피치”로 설정해서 써보는 걸 추천합니다. 성능 평가 결과, 단어 앞에 “헤이"를 붙은 경우 인식율은 많이 향상되면서 오동작 비율도 낮음을 확인했습니다.
▪ 적용 제품
현재 내 호출 명령어 기능은 카카오미니, 미니헥사, 헤이카카오 애플리케이션에서 사용 가능하고, 헤이카카오 앱의 ‘내 호출 명령어’ 메뉴를 통해 마음대로 설정할 수 있습니다. 카카오미니 스피커에서 내 호출 명령어를 “헤이죠르디”라고 설정하면, 스피커에서 “이제 헤이죠르디” 라고 불러주세요”라고 답변을 하게 됩니다.
비록 현재 카카오미니, 미니헥사, 헤이카카오 애플리케이션에 탑재었지만, 내 호출 명령어는 향후 카카오내비나 카카오맵, 자동차, 가정 내 월패드 등에도 확대 적용이 예상됩니다. 또한 자체 호출 명령어가 필요한 외부 업체에서도 내 호출 명령어를 이용하여 사용성 평가를 할 수 있을 것입니다.
마치며
이제 '헤이 카카오'가 아닌 '자비스'든 '해리포터'든 사용자가 원하는 호출 명령어로 카카오미니를 깨우는 것이 가능해졌습니다. 지속적인 사용자들의 요구사항이었던 기능을 실제 구현하고 보니 감회가 새롭습니다. 카카오엔터프라이즈의 음성인식 기술이 사용자들과 상호 소통하여 우리의 일상을 더 좋은 방식으로 바꿔나갈 수 있도록 기원하며 글을 마치도록 하겠습니다. 감사합니다.
참고 문헌
[1] 카카오엔터프라이즈 기술 블로그, “헤이 카카오! 를 불러야 하는 이유”
[2] 아마존 포럼, ”Custom Wake Words”
[3] 아마존 개발자 블로그, ”Amazon Announces Alexa Custom Assistant”
댓글