Language Recognition (언어 인식)

입력된 음성 data의 언어를 판별하는 연구분야이다. 쉽게 말해서 어떤 사람이 떠드는 것을 듣고는 이게 무슨 언어인지 맞히는 기술. 쉽지 않아보인다. 일단 세상에 언어(특히 음성 언어)가 몇개인데… 사람의 경우에도 해당 언어(지금 듣고 있는 언어)가 익숙하다면 쉽지만 그렇지 않으면 어렵다. 예를 들어, 한국 사람의 경우 중국어와 일본어는 대충 구별할 수 있지만, 아랍어랑 히브리어 들려주고 구별하세요 하면 구별하지 못한다.

용도

언어 인식 기술은 보통 음성 인식 기술의 앞쪽에 쓰인다. 랜덤한 "말"이 들어왔을 때, 이것이 무슨 언어인지 알아내어서 해당 언어의 음성 인식 기계에서 데이터를 패싱해주는데 사용된다.

알고리즘

언어 인식에는 크게 Acoustic과 PRLM의 두가지의 방법이 존재한다.

Acoustic

Spectrogram_-iua-.png
Spectogram은 시간의 흐름에 따른 각 주파수에서의 음파의 세기를 보여준다. 위 사진에 가로축은 시간 세로축은 주파수이고, 색이 진한 부분이 에너지가 몰려 있는 부분이다. 위 사진에는 세 모음 /i/, /u/, /a/의 예시가 있는데, 각 모음별로 에너지가 뭉쳐있는 주파수대가 다르다는 것을 볼 수 있다. 이것을 이용하여 사람 음성에서의 각 모음과 자음들을 판단해낸다. 왜 이렇게 에너지가 뭉치는지를 알려면 음성학, 발성학 및 공명현상을 공부하고, 정확하게 어떤 방법으로 발음을 인식하는지를 알려면 speech recognition (음성 인식)을 공부하자.

Acoustic 방식은 음성 데이타의 분포를 사용하여 언어를 판별한다. 쉽게 말해서, /sh/, /f/ 발음이 많이 나오면 영어, /x/ 발음이 많이 나오면 독일어 하는 식. 10ms 단위로 발음을 조각조각내어서 판단을 하는데, 무식하게 단순하지만 잘 된다. 그만큼 각 언어별로 발음이 많이 다르다는 이야기. 각 언어별로 특징적인 발음이 없어도1 발음의 분포는 나름 독특한 특징을 갖으므로, 각각의 언어를 구분할 수 있게 된다.2 이 방식의 문제점은 음성 정보를 너무나 회치듯 잘게잘게 쪼갠다는 것. 즉 발음과 발음 사이의 관계나 언어별 많이 사용하는 단어 같은 긴 시간의 음성 정보를 들어야 알 수 있는 언어의 고차원적(?) 특징은 전혀 사용하지 않는다. 또한, 이미 상당히 발전되어있는 기술을 사용하는 관계로 더 이상 발전시킬 방법이 애매하다.

좀 더 테크니컬한 쪽으로 설명하자면, Acoustic 방식은 음성 데이터를 10ms 정도로 잘게 쪼갠 후에, 각 조각마다 Mel Frequency Cepstral Coefficient (MFCC)를 구한다. 하나의 MFCC는 하나의 vector로 표현할 수 있으므로, 해당 언어의 data들은 이러한 vector들의 집합으로 표현할 수 있게 된다. MFCC는 10ms 정도의 시간밖에 볼 수 없으므로 좀 더 긴 시간의 특징을 보기 위하여 이들을 미분한 값을 vector에 추가시키기도 한다. 이후 각 언어를 해당 언어의 data vector들을 이용하여 Gaussian Mixture Model(GMM)으로 모델링한다. 모델링하는 방식에 따라 Language Independent GMM과 Language Specific GMM이 있다. Language Independent GMM의 경우 전체 data로 training을 한 후, 해당 언어의 data로 adaptation을 하여 Language Specific GMM을 만들며, adaptation 방식에 따라 또 세부사항이 갈리게 된다. Language Independent GMM을 언어마다 adaptation을 하는 대신에 각 문장(segment)마다 adaptation을 시켜서 GMM들의 평균값들을 이용하여 SVM을 만들기도 한다.

PRLM (Phone Recognizer Language Model)

음운(phone)을 인식한 후 그 음운들 간의 관계를 이용하여 언어를 파악하는 방식. 쉽게 말해서, change ([tʃe]-[ɪn]-[dƷ])라는 3음절 발음을 들었을 경우, 이게 무슨 단어인지 뜻은 모르겠지만 어쨌든 영어 단어들에서 많이 들을 수 있는 발음의 연속이므로 이 발음은 영어발음일거야라고 판단하는 방식. Acoustic 방식과는 다른 이 방식의 특징은 일단 '음운 판단'을 하고 그 음운들의 '연결성'을 생각한다는 점.

"미국 사람"이라는 단어에 대한 한국 사람의 발음과 미쿸 살암의 발음은 다르다.3 위의 Acoustic 방식의 경우 이게 '미국 사람'이라는 한국어 단어의 발음인지는 관심이 없다. 그냥 이 사람이 말하는 언어에는 이런 /m/, /i/, /k/, /u/, /k/, /s/, /a/, /r/, /a/, /m/ 등의 '발성법'이 존재한다… 정도로만 파악하게 된다.4 그래서 미국 사람이 한국말을 할 경우, 최악의 경우, 이 사람의 발성법 자체가 영어와 비슷해 져서 이 사람이 말하는 언어를 영어로 판별할 수도 있다. 반면, PRLM은 /미쿸사r암/을 먼저 음운으로 치환하고 (/미/, /쿸/, /사r/,/암/), 이 음운의 연속과 비슷한 단어가 한국어에 존재한다는 것을 알아내어서 이 단어를 한국어로 판단하게 된다.

이렇게 보면 PRLM이 Acoustic 방법보다 강력한 것 같지만 꼭 그렇지도 않다. 영어 'S'와 한국어 '시옷' 발음의 경우 음성학적으로는 둘 다 /s/이지만 사실 미묘한 발음 차이가 존재한다. 영어의 경우 /ss/에 좀 더 가깝고 한국어의 경우 약하게 발음되는 편. Acoustic 방식은 언어 마다의 이러한 미묘한 발음 차이를 구분할 수 있다. 하지만, PRLM의 경우 이들의 발음이 둘 다 /s/로 '인식'되고 나면, 두 발음의 차이는 없어지고, PRLM은 영어와 한국어를 구별할 수 있는 좋은 자료 중 하나를 놓치는 셈. 위에 PRLM을 설명하는 부분에서 말한 '음운 판단'을 한다는 것이 바로 이런 점을 말하는 것이다. 2000년대 초반까지만 하더라도 Acoustic 방식이 PRLM 방식에 비해 훨씬 높은 정확도를 보였지만, 최근(2010, 2011년) 들어서는 두 방식이 어느 정도 비슷한 정도의 정확도를 보여주고 있다. 하지만, 여전히 대세는 간단하고 결과 잘 나오는 Acoustic Method 쪽이다.

PRLM의 테크니컬 한 면으로 들어가자면, Phone Recognizer의 경우 Speech Recognition과 비슷한 Phone Recognizer가 사용된다. Phone Recognizer는 weighted lattice를 결과물로 내놓게 된다. Language Model(LM)의 경우는 일반적으로 사용되는 N-gram LM이 사용되는데, Phone Recognizer의 결과물이 lattice인 관계로 3-gram LM이 사용된다. 이외에 Decision Tree LM, SVM 등도 LM에 사용된다.

Fusion

Acoustic 방식과 PRLM 방식의 장단점이 뚜렷하기에, 대부분의 언어 인식기는 이 두가지 방식을 모두 사용한 후, 결과물을 합치는 방법을 사용한다. 결과물을 합치는 방식은 주로 결과 확률을 linear interpolate 하는 방식이다.

평가 방법

언어 인식 알고리즘을 평가하는 방법은 크게 두가지가 있다. 하나는 N개의 언어중 지금 말한 언어가 무슨 언어인지 맞히는 것, 즉 N지선다. 두번째는, 사람이 말하는 것을 들려주고 "지금 들려드린 언어는 L입니다"라는 명제가 참인지 거짓인지 맞추는 OX 퀴즈 스타일. NIST LRE(Language Recognition Evaluation)에서는 전통적으로 후자의 방식을 취하고 있다.

대회

미국 NIST에서 주관하는 LRE(Language Recognition Evaluation) 대회가 유명하다. 보통 격년으로 개최된다.

연구기관

tags

language recognition, language identification, nist lre, phonotactic language model

관련 분야

외부 고리

알고리즘

데이타

Bengali [bn/ben/ben]

nlp
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License