음성인식 기술 들여다보기

체스와 퀴즈쇼에 이어 바둑판까지 점령한 인공지능이 우리 곁으로 다가왔습니다. 국내 통신사들은 가정에서 사용하는 인공지능 스피커와 셋톱박스를 앞다퉈 출시했고 삼성전자는 새로 출시된 스마트폰에 음성인식에 특화된 인공지능을 탑재했습니다. 이제 인공지능은 집 안이나 내 손 안에서 자신의 똑똑함을 뽐낼 채비를 하고 있습니다. 그 시작은 음성인식입니다. 기계는 어떻게 우리 말을 찰떡같이 알아듣는 걸까요?

터치도 귀찮다, 이제 목소리다

너의 목소리가 들려

인공지능 제품과 서비스에서 빠질 수 없는 것이 음성인식입니다. 알파고처럼 입력된 정보를 영리하게 분석해 처리하는 것도 인공지능의 역할이지만 사람이 아무렇게나 내뱉는 말을 정확히 알아듣고 그 의도를 이해하는 것 또한 인공지능이 자신 있어 하는 영역입니다. 최근 음성인식을 지원하는 전자제품이 늘고 있는데요. 인공지능의 도움으로 인식률이 나아지고 있어 적용 범위는 앞으로 더욱 확대될 것으로 보입니다.

음성인식 기술이 다시 주목을 받는 이유는 뭘까요? 우리는 그동안 손으로 도구를 조작해 컴퓨터나 스마트폰, 가전제품 등에 명령을 내렸습니다. 가스레인지의 점화 손잡이를 잡고 돌리거나 리모컨의 버튼을 누르고 스마트폰 화면을 터치했죠. 기계가 작동하는 방식에 우리 인간이 적응할 필요가 있었습니다. 반면에 사람의 목소리는 사용자와 기기를 연결하는 가장 친숙하고 쉬운 접점이 될 수 있습니다. 다른 방식에 비해 학습곡선(Learning Curve)이 짧기 때문인데요. 일상생활에서 말하기와 듣기로 의사소통을 해왔기 때문에 따로 배우거나 익숙해지려고 노력하지 않아도 됩니다. 하던 일을 멈추고 시선을 고정하거나 신체를 기울여 집중할 필요 없이 언제 어디서든 자유롭게 사용할 수 있다는 장점도 있습니다. 자려고 누웠는데 불이 켜져 있을 때 “불 꺼” 라고 외치고 싶은 생각, 다들 해보셨겠죠.

말 한마디에 천 냥 빚 든다

음성인식을 지원하는 스마트 제품들은 어떤 원리로 사람 말을 알아듣고 반응하는 걸까요? 크게 보면 [음성인식 - 자연어처리 - 반응]의 과정을 거칩니다. 우리가 아이폰 시리에 비트박스를 시키고 곤란할 질문을 던져 당황시킬 때 생각보다 복잡한 일들이 무대 뒤에서 벌어지고 있었습니다.

음성인식 - 듣는 귀를 만들자

사람이 하는 말소리를 텍스트로 바꾸는 기술을 음성인식이라고 합니다. ASR(Automatic Speech Recognition)로 불리기도 하고 넓은 의미에서 STT(Speech To Text)라고도 합니다. 초등학교에 다니던 시절, 피해갈 수 없는 시험이 받아쓰기였습니다. 음성 언어를 구문 언어로 표현하는 과정은 받아쓰기와 비슷합니다. 선생님은 답안지에 적힌 문장 하나를 소리 나는 대로 읽습니다. 학생들은 귀에 들어온 소리를 자신이 아는 어휘와 맞춤법과 연관지어 종이 위에 옮겨 적습니다. 학생이 적은 문장과 선생님 손에 들린 정답지의 문장이 일치하면 백 점짜리 받아쓰기입니다. 들리는 대로만 적으면 당혹스러운 점수를 받게 되겠죠.

음성인식도 마찬가지입니다. 마이크를 통해 들어온 음성 신호는 우선 주변 소음이나 잡음을 제거하는 처리를 거칩니다. 이어서 한국어의 경우 초성, 중성, 종성으로 쪼개져 특정 음소와의 유사한 정도를 계산합니다. 음소는 단어의 의미를 구별 짓는 소리의 가장 작은 단위입니다. 다시 말해 ’ㅅ’‘ㅅ’ 으로 ‘ㅁ’‘ㅁ’ 으로 인식하는 작업입니다.

다음으로 해체한 텍스트 기반의 초성, 중성, 종성을 다시 하나로 합치면서 원래 단어를 찾아가는 음성합성을 진행합니다. 우리 국어의 자음동화나 두음법칙 등을 고려해, 소리 나는 대로 들어온 음소를 본래 형태에 맞게 바로바로 수정해갑니다. 이렇게 해서 ‘궁물’‘국물’ 이 됩니다.

최근 이 단계에 딥러닝이라는 인공지능 기계학습법을 적용해 인식률이 크게 좋아졌습니다. 알파고가 프로기사들의 바둑 기보를 스스로 학습한 것과 같이, 수백 시간에 달하는 인간의 발화 데이터를 학습해 모델을 만듭니다. 사용자가 많아질수록 학습 데이터가 풍부해 더욱 정확해지죠.

음소를 구별하는 음향 모델을 보완하는 장치로 언어 모델발음 사전이 있습니다. 언어 모델은 단어가 연속해서 이어질 확률을 그래프로 표현한 것입니다. 나란히 사용하는 단어 짝의 빈도를 분석해 다음에 이어질 말을 빠르고 정확하게 찾아냅니다. ‘이번 주말 날씨’‘이번 주말 낙지’ 보다 높은 확률을 갖겠죠. 발음 사전은 하나의 단어를 다르게 발음하더라도 같은 단어로 변환되도록 유사 발음에 대한 발성 정보를 갖고 있습니다. 사람에 따라 ‘신님’ 으로 읽든 ‘실림’ 으로 읽든 모두 ‘신림’ 으로 인식하게 돕습니다.

띄어쓰기 같은 후처리를 끝으로 변환을 마친 구문 언어는 이제 자연어처리 단계로 넘어갑니다.

자연어처리 - 말뜻을 이해하자

자연어처리(NLP, Natural Language Processing)는 사람이 내뱉은 비정형적인 언어 데이터를 기계가 이해할 수 있는 정형적인 언어 데이터로 바꾸는 기술입니다. 자연어처리 기술은 최근 화두가 되는 챗봇(Chat Bot)이나 자동통번역에도 중요한 역할을 하고 있죠. 자연어는 우리가 일상적으로 사용하는 언어를 말합니다. 기술의 혜택을 누리는 사용자 입장에서는 자연어가 이 세상의 전부입니다. 말을 하지 못하는 애완동물에게도 우리는 자연어로 이야기합니다. 기계는 다릅니다. 기계는 0과 1이라는 두 개의 숫자만으로 세계를 이해합니다. 따라서 개발자들은 기계가 사람의 명령을 알아듣고 이해하는 것처럼 보이도록 별도의 작업을 해주어야 합니다.

자연어는 단어의 의미와 문장 전체의 맥락 그리고 발화 의도를 파악하기 어려운 대표적인 비정형 데이터입니다. 계량할 수 있는 정확한 값으로 치환되는 정형데이터와 구분됩니다. 아나운서나 변호사가 하는 논리적인 말도 컴퓨터에겐 복잡하고 불분명합니다. 자연어처리의 목표는 문장의 형태가 자유로우며 모호성을 띠는 자연어를 정제되고 명확하게 구별 가능한 의미 구조로 바꾸는 일입니다. 이 과정에서 문장의 의미를 이해하고 말한 사람의 의도를 정확히 파악할 수 있게 됩니다. 정형 데이터로 쌓아둔 기존의 언어 데이터베이스와 활발히 상호작용할 수 있기 때문입니다.

자연어를 이해한다는 의미로 NLU(Natural Language Understanding)로 불리는 과정은 형태소 분석과 구문분석 그리고 의미이해 분석 등으로 이어집니다.

형태소는 뜻을 가진 가장 작은 말의 단위로서 자연어를 분석하는 일차적인 기준이 됩니다. 형태소 분석으로 중의적인 의미가 있는 단어를 분류합니다. “하늘/을/ 나/는/ 새/를/ 보/아/라” 라는 문장을 생각해 볼까요? 중간 부분에 ‘나/는’ 은 형태소 분석에 따라 ‘하늘을 나는’, ‘콩이 나는’ 혹은 1인칭 주어 ‘나는’ 이 될 수 있겠죠.

다음으로 문장의 구문 구조를 분석합니다. 파싱(Parsing)으로 부르는 이 작업은 형태소 분석을 통해 확정한 문장을 주어와 서술어, 목적어 같은 품사 단위로 분류해 구조화하는 것이 특징입니다. 정확한 의미 분석을 위해 꼭 필요한 절차인데요. 앞의 예시 문장은 ‘하늘을 나는 새’ 라는 명사구‘보아라’ 라는 동사구 로 나눠집니다. ‘하늘을 나는 새’ 는 다시 동사구 ‘하늘을 나는’명사 ‘새’ 로 분리할 수 있겠죠. 이런 분석 방법을 하나의 뿌리에서 나뭇가지가 뻗어 나가는 모양과 닮아 트리(Tree) 구조라고 부릅니다.

마지막으로 기계가 언어를 이해하는데 필요한 의미를 추출하는 의미 분석(Semantic Analysis)이 이뤄집니다. ‘하늘’은 장소, ‘날다’는 이동 방식이며 ‘새’는 동물의 일종으로 ‘하늘을 난다’는 수식 을 받습니다. ‘보아라’는 오감 중 하나를 표현하며 명령문의 형태 를 지닙니다. 이렇게 유의미한 표현을 카테고리로 분류해 이름표를 붙여두면 기계가 이해하기 쉬운 정형 데이터와 가까워집니다.

형태소, 구문, 의미 분석 이후엔 문장에 담긴 정보를 추출해 화자의 의도를 파악하고 그에 맞는 반응을 보여줄 준비를 해야 할 텐데요. 사람 이름이나 도시 이름 같은 고유어를 추출하고 두 개체 사이의 관계를 파악하는 과정입니다.

자연어처리는 그동안 규칙에 기반을 둔 접근이 많았습니다. 언어학적인 규칙을 일일이 기술해두고 입력된 단어끼리 비교하는 방식이었죠. 자연어처리에 딥러닝이 뒤늦게 적용된 이후로 단어 단위가 아닌 문장 전체의 맥락에서 의미를 추론할 수 있게 되었습니다. 덕분에 말한 사람의 의도를 더욱 빠르고 정확하게 분석할 수 있게 되었습니다. 딥러닝 적용을 하기 위해서는 말뭉치(코퍼스, Corpus)라는 학습용 언어 데이터 확보가 필수입니다. 데이터가 풍부한 영어와는 달리 한국어로 된 양질의 말뭉치는 턱없이 부족한 상태입니다. 국립국어원이 150억 원을 들여 구축한 '세종 말뭉치’는 한국어 2억 어절이 담겨 있습니다. 그러나 예산과 인력 부족으로 2007년 이후 개정이 중단되어 국내 작은 기업들은 언어 데이터 확보에 애를 먹고 있습니다.

응답하라 일사천리

많은 일을 한 것 같지만, 사용자는 아직 기기가 자신의 말을 알아들었는지 알 길이 없습니다. 사용자가 음성으로 요청한 내용에 따라 적절한 반응을 보여줘야 합니다. 대구의 현재 날씨를 물었다면 인터넷에 지역 날씨를 검색하고, 엄마한테 30만 원을 부치라고 했으면 사전에 등록된 계좌로 이체해 줄 겁니다. 반려 로봇이라면 모터를 가동해 고개를 끄덕하고, 대답이 필요하다면 고정된 문장 형식에 맞춤형 키워드를 넣어 다시 음성으로 읽어주겠죠. 내가 한 말에 반응을 보이는 모습에 우리는 기계와 의사소통을 한 듯한 착각을 경험합니다. 음성인식과 자연어처리 기술이 더욱 발전하면 착각을 구분하기 어려워질 것입니다.

말귀 2.0

자연어처리를 기반으로 한 음성인식은 말 그대로 인간의 ‘말귀’를 모방하는 기술입니다. 소리를 듣기만 하는 ‘귀’ 역할에 그치는 것이 아니라 들리는 말의 내용을 제대로 이해해서 반응하는 것이 우리가 말하는 ‘말귀’입니다. 음성인식 기술은 여기서 계속 진화하고 있습니다. 말에 담긴 억양이나 톤으로 말하는 사람의 기분을 파악하는 연구가 진행 중입니다. 목소리의 높낮이와 떨림을 분석해 개인을 식별하는 성문 기술(Voice Print)은 금융거래에서 유용한 생체 인증 방식이 될 수 있습니다. 우리는 소통 상대를 쉽게 갖게 된 대신 소통 당사자의 역할을 점차 잃어갈지도 모릅니다. 말귀 잘 알아듣는 기계보다 여러분과 소통해야 할 이유를 고민하는 일은 없었으면 합니다.