음성인식/NLU (Natural Language Understanding)

NLU (Natural Language Understanding)에 대한 간단 소개 #1

프하하 2022. 4. 25. 13:47

자연어 이해는 정말 많이 사용되는 기술입니다.

 

 

텍스트분석에서도 이뤄지구요. 물론 음성인식에서도 음성인식 과정 중에 한 과정으로서 처리되는 기술입니다.

 

음성인식에서는 자연어 처리를 NLU라고 명칭합니다. Natural Language Understanding 입니다. NLU 없이는 뉴스, 소셜미디어, 음악검색, 일정예약 등의 음성명령을 내려도 이해를 못하니 아무 응답을 할 수 없을 것입니다.

 

보통 음성인식이라하면 하나의 단일기술이라고 이해하실 분들이 많을 것 같은데요. 그렇지 않습니다.

음성인식은 여러분야의 기술들이 음성인식이라는 것을 구현하기 위해 모여진 집합기술입니다.

 

우선 음성을 텍스트로 변환시켜야하겠구요. (ASR) 변환된 텍스트를 기계가 이해할 수 있도록 처리하는 기술도 필요하겠지요. (NLU) 그리고 기계와 사람 간의 대화가 필요하니 대화를 어떻게 처리해야할 지 또한 구현되어야하구요. (Dictation & Dialog) 기계가 이해한 내용을 다시 문장으로 변환하여 사람이 이해할 수 있도록 하는 과정도 필요할 것입니다. (NLG)  생성된 문장을 다시 사람 음성으로 변환하여 전달하는 과정도 있을 것입니다. (TTS) 이것만 필요할까요?

 

아니요 그렇지 않습니다.

 

사람의 목소리를 인식하고 처리하는 것이기 때문에 주변이 시끄럽거나 소란스러우면 기계가 목소리를 제대로 인식할 수 없을 것입니다. 따라서 주변 잡음의 영향을 최소화시키기 위해서 별도의 오디오처리기술이 또한 필요할 것입니다.

이러한 과정들을 각각 아래와 같이 부르고 있습니다.

 

ASR (Automatic Speech Recognition)

NLU (Natural Language Understanding)

Dialog & Dictation

NLG (Natural Language Generation)

TTS (Text to Speech)

SSE (Speech Signal Enhancement)

 

앞으로 하나하나씩 설명할 수 있는 포스팅을 올려보도록 하겠습니다.

 

그렇다면 음성인식의 장점으로는 무엇이 있을까요?

 

시각정보를 활용한 명령, 예를 들어서 터치패드를 통해 기능, 명령을 선택할 경우 한 번에 한 가지 작업명령만 내릴 수 있습니다.

 

반명 음성의 경우, 음성 특성 상 한 번에 여러가지 명령을 내릴 수 있습니다. 또한 기계와 상호작용을 함에 있어서 좀 더 쉽습니다.

 

예를 들어서 키오스크의 경우, 노인분들께서는 작동방법을 숙지하기 어려워 사용하기 어렵습니다. 하지만 음성명령의 경우에는 상대적으로 쉽게 조작 가능합니다. 또한 상호작용을 조금 더 용이하게 하기 위해서 음성대화처리를 사전에 심도있게 설계한다면 조금 더 자연스럽고, 사용하기 쉬운 음성인식이 구현될 수도 있습니다.

 

NLU 관련하여 예를 들어보도록 하겠습니다.

 

집에 전화걸고싶어”, “집 전화로 전화를 걸어줘“, “우리 집에 전화를 걸어봐와 같은 발화는 다른 문장들이지만 공통적으로 집에 전화를 걸어달라고 명령하는 내용입니다.

 

NLU에서는 이러한 문장에서 핵심적인 전화라는 핵심적인 주제를 확인한 다음 이라는 목적지를 이해하여 처리하는 과정을 가지고 있습니다.

 

이를 통해서 여러 문장이어도 한 가지 명령으로 인식할 수 있게 됩니다.

 

따라서 음성인식엔진 내에서 NLU 구현이 잘 되어있다면 기계는 여러 문장을 처리함에 있어 오류없이 정확한 응답을 할 수 있을 것입니다.

 

 

조금 더 기술적인 부분을 확인해보도록 하겠습니다.

 

음성인식을 위해서 음성은 가장 먼저 Text 로 변환되어야 합니다.

 

예를 들어, 어떤 사람이 “I want to make a phone call”이라는 말을 마이크에 대고 말을 했다고 가정해보겠습니다.

마이크를 통해 입력된 사람의 음성은 어떤 인식모델을 통해서 텍스트로 변환이 될 것입니다. 물론 사람이 말한 그대로 “I want to make a phone call”로 인식되면 좋겠지만 항상 이렇게 처리되지는 않습니다.

 

비슷한 발음인 Dryrun two lake a phone call to Rob”과 같이 변환될 수도 있구요. “Ivanhoe funk hall to bop”과 같이 변환될 수도 있습니다.  인식모델에서는 여러개의 문장을 나열하게되구요, 문장마다 각각의 확률을 부여하게 됩니다. 그리고 그 중에서 가장 높은 확률을 가지고 있는 문장을 출력으로 처리하게 되는 것입니다.

 

현재까지의 과정이 ASR입니다.

 

그리고 다음과정부터 NLU가 시작됩니다. 이렇게 전달된 문장들을 분석하는 과정입니다. 첫 번째 문장에서는 ‘Phone call’ 이라는 주제와 ‘Bob’이라는 대상으로 파악을 하게되구요. 두 번째 문장에서는 마찬가지로 ‘Phone call’‘Rob’이라는 대상을 파악했습니다. 마지막 세 번째 문장에서는 ‘Ivanhoe funk hall’이라는 목적지로 인식했기에, ‘Navigation’ 주제와 ‘Bob’이라는 목적지로 파악을 하게 되었습니다. 마찬가지로 여기서도 가장 높은 확률을 가지고 있는 결과값을 출력하여 Dialog engine으로 건네주게 됩니다.

 

그렇다면 NLU가 어떻게 구현되는지, 어떤 기술들이 적용되는지에 대해서는 다음 포스팅에서 설명드리도록 하겠습니다.