Spoken Language Processing

음성인식(Speech recognition) 이란?

햇농nongnong 2022. 3. 4. 16:22

음성인식이란?

- 음성인식이란 기계로 하여금 인간의 말소리를 인식하고 그 결과를 문자로 출력해주는 시스템

 

 

ex) "나 지금 학교에 왔어" 라고 인간이 말했을 때 기계는 이 음성을 분석하여 인식 과정을 거친 뒤 최종적으로 "나 지금 학교에 왔어" 라는 음성인식 결과를 문자 형태로 적어줌

- 음성인식 기술 --> 대표적으로 애플의 시리, 삼성의 빅스비 - 인간의 말소리를 이해하기 위해 사용됨

 

음성인식 구현

* 인간이 언어를 배우고 인식하는 과정 먼저 이해해보기

- 영어를 이제껏 한 번도 들어본 적 없고 써본 적 없다고 가정했을 때, 영어 문장을 들려줬을 때 그것이 무슨 문장이었는지를 글로 써서 제출해야 하는 과제 - 영어를 전혀 못하는데 영어를 듣고 문장으로 받아쓰기 막막

 

--> 먼저 영어라는 음성에 대해 익숙해지기

- 한국어에 대해 이미 잘 훈련이 되어 한국어 소리에 익숙한 우리가 어떤 한국어 문장을 들었을 때, 서울말 표준어, 사투리 구분 및 판단을 할 수 있는 것처럼 영어 문장도 자주 들음으로써 영어가 맞고 아닌 것을 구분할 수 있게 되는 것영어라는 음성에 대해 익숙해졌다는 것 의미. 

- 이처럼 영어 음성에 대해 자주 듣고 훈련하면서 영어 음성에 대해 익숙해지는 과정 : 음향 모델(acoustic model) 훈련

 

- 음향모델을 훈련하는 것은 특정언어에 존재하는 모든 음소를 배우는 과정 담고 있음

- 음소 : 모음 'a' 와 자음 't'와 같이 가장 작게 쪼개진 소리 단위 - 다양한 문장을 들어봄으로써 음소 학습

--> 이 때 중요한 것은 단순히 독립적인 음소만 듣고 배우는 것이 아니라 음소들의 변이형까지 학습

ex) 모음 'a' : 영어에서 'a' 라는 모음은 보통 '아' 라고 발음. but 쓰이는 위치에 따라서 그 발음은 다양하게 변함

- apple 에서는 p 옆에서 쓰여 '애' 라고 발음하고, again 에서는 g 옆에서 쓰여 '어' 라고 발음

- 이처럼 한 음소의 발음 변형은 그 음소 주변에 어떤 음소가 존재하는가에 따라 다르게 나타남

- 영어의 음소들을 배우다 보면 한국어와 겹치는 음소(a/아) 도 존재하지만, 영어에만 존재하는 음소(r/th)도 훈련해야함

--> 이를 통해 영어스러운 발음이나 억양을 학습 - 그럼 어디선가 들려오는 영어 문장을 들었을 때 "어 저건 영어다" 하고 자연스럽게 인식 가능

 

위 과정을 거쳐 음향 모델을 잘 학습하여 영어소리에 대해 익숙해졌다면,

--> 이제 그동안 배웠던 소리, 즉 단어들을 자연스럽게 나열하는 규칙을 배우기

- 단어의 자연스러운 나열 : 특정 단어 다음에 나타나는 단어의미상으로나 문법상으로 어색하지 않은 상태 의미

 

ex) '나는 학교를 o o' 라는 문장이 있을 때, o o 안에 들어갈 자연스러운 단어는?

- '간다', '갔어', '안 가', '못 가' 등 의 단어 : 어떤 한국인이 봐도 자연스러운 문장

- '팔아', '찼어' 등은 문법상으로는 목적어 다음에 동사가 왔기 때문에 틀린 문장이라고 할 수 없지만 의미상으로는 어색

- '학교'라는 단어는 '간다' 라는 단어와 잘 어울리는 것처럼

--> 이러한 단어의 자연스러운 결합을 듣고 배우는 과정 = 언어모델(language model) 훈련

--> 이러한 과정을 통해 특정 언어에 존재하는 단어 결합 규칙을 습득

 

- 이러한 규칙 습득같은 한국어를 듣는 환경이라고 하더라도 다르게 훈련될 수 있음

ex1) '다쿠아즈 케이크 먹자' 라고 했을 때 - '다쿠아즈' 단어를 모르는 사람'다 구워진 케이크?' 라고 잘못 인식 가능

- 다쿠아즈 케이크를 들어본 적이 없기에 '다쿠아즈'와 '케이크'의 단어 연결이 자연스럽지 않게 느껴짐

- 이를 대신해서 '다쿠아즈' 라는 단어의 소리와 최대한 비슷한 '다 구워진' 이라는 새로운 조합으로 말을 인식하게 됨

 

ex2) 제빵사화가가 있을 때, 각기 자신의 전공에서 사용하는 언어를 구사하면서 그들만의 언어모델을 훈련한 상황

- 제빵사제빵과 관련된 언어모델, 화가그림과 관련된 언어모델 훈련

- 이 때 이 둘에게 '크림 줘봐' 라는 문장을 들려준다면, 제빵사빵에 사용하는 크림이라 인식하고 '크림' 을 주고, 화가는 크림보다는 그림이라는 단어 사용에 익숙하기 때문에 '크림'을 그와 비슷한 소리인 '그림'으로 인식하고 그림을 줌.

- 이처럼 언어 모델언어에 노출된 환경에서 자연스럽다고 생각하는 단어의 결합을 배워나가면서 형성되기 때문에 사람마다 조금씩 다르게 생성될 수 있음. 하지만 기본적인 큰 틀은 누구에게나 동일하게 형성됨.

- 서울 사람과 부산 사람이 서로 이야기 할 때 가끔 상대가 사용하는 단어 조합이 어색하다고 느낄 수는 있지만 한국어로 의사소통 하는데는 큰 문제가 없는 것과 같음

 

기계의 음성인식

* 음성인식을 위해서 필요한 것은 음향 모델언어 모델을 학습하는 것이라고 할 수 있음

- 주어진 영어를 듣고 문장으로 적어내기 task 는 이 둘을 올바르게 훈련했다면 해결 가능

 

* 이 task 를 기계에게 적용 시킨다면?  베이즈 정리를 통해 음향 모델과 언어 모델을 학습시켜야 함

 

 

- 기계에게 음성인식을 훈련시키려면 어떤 음성이 주어졌을 때 그것은 어떤 문장이라는 조건부 확률을 구해야 함

- 이 때 기계에게 주어지는 음성 오디오 파형임 --> 이 파형을 보고 무슨 문장인지 맞추는 건 불가능

 

 

- 그래서 문제 해결을 위해 각 문장에 등장하는 음소들을 특정 조건으로 주고 그 음소들의 파형을 보여주면서 음향 모델을 학습 - 베이즈 정리에서 likelihood 부분

 

 

ex) '아' 라는 모음을 보여주고 이 음성의 파형은 다음과 같이 생겼다는 것을 보여주는 것

      + 그리고 이를 모든 음성에 대해 훈련시키면 ('아', '에', '이', ... ) ==> 음향 모델 완성

 

 

 

- 언어 모델의 경우, 뉴스나 소설 같은 자료를 통해 각 단어가 등장하는 횟수를 학습해 나감

- 이 때 하나의 단어 확률만 보면 언어모델에서 추구하는 자연스러운 결합을 학습하기 어렵기 때문에 보통은 2개 혹은 3개 단어의 연쇄를 두고 그 단어 연쇄의 등장 횟수를 학습하며, 이는 베이즈 정리에서 prior 부분이 됨

- 그리고 이 부분을 우리가 준비한 학습데이터를 이용해 학습시키면 언어모델 

 

 

- 이렇게 각각 음향모델과 언어모델을 학습하게 되면 최종적으로 posterior 라고 부르는, 즉 우리가 목표한 음성인식 태스크를 할 수 있는 음성인식 모델 완성

 

 

 

 

종합

- 물론 음성인식에 사용되는 음향모델과 언어모델을 제대로 학습하기 위해서는 더 복잡하고 다양한 수학적 기법을 이해하고 사용할 줄 알아야 하지만 처음 시작할 때는 그런 것들 알 필요 없음

- 먼저 음성인식이 인간이 언어를 학습해나가는 과정과 비슷하게 훈련해 나간단 사실을 직관적으로 이해하고 흥미를 가지는 것이 음성인식을 구현하기 위해 가장 중요한 첫걸음

 

 

 Reference