Phonetic Dictionary

음성인식기를 만들기 위해서는 Phonetic Dictionary가 필요하지요. Phonetic Dictionary란 해당 문자가 어떻게 발음되어야 하는지를 묘사하는 사전을 의미합니다. 일반적인 phonetic dictionary의 내용은 보통 아래 Table 1과 같습니다.

이상적인 Phonetic Dictionary

[Table 1] 이상적인 Phonetic dictionary 예제
맛있다 ma-sit-tta ma-dit-tta
집 jib
짚 jib
핵융합 haeng-nyung-hap hae-gyung-hap

Table 1에서 왼쪽 첫번째 단어는 문서(document 혹은 corpus) 에 나오는 문자입니다.
시스템이 utf8인식을 한다면, Table 1에서처럼 그냥 한글을(또는 언어에 따라서 아랍어나 힌두어 등등) 쓰면 되구요, 인식을 못한다면 transliteration을 해줘야겠지요?

두번째부터 이후 영어들은 해당 단어의 가능한 발음들을 나열합니다.
"-"는 음절(phone) 분리 문자이구요.
"haeng", "nyung", "hap"은 음절(phone)입니다.

Table 1을 좀 더 자세히 보자면…

"집"과 "짚"의 경우, 두 단어의 발음이 사실은 같고 따라서 둘다 "jib"으로 발음된다고 표시를 해 놓았지요.

"핵융합"의 경우 [행늉합] [해귱합] 의 두가지 발음이 가능하다는 것을 적어놓은 거에요.
"핵융합"의 문법적으로 올바른 발음이 [행늉합]인지 [해귱합]인지는 중요하지 않습니다. 자신이 실제로 갖고 있는 음성 data에서 사람들이 어떻게 발음하는지가 중요합니다.

Phonetic dictionary에서 음절을 더 잘게 자를 수도 있습니다. "haeng-nyung-hap"을 "hae-ng-nyu-ng-ha-p" 처럼요. 어느게 더 좋을지는 실제 test data로 test를 해보기 전에는 모르지요.

현실적인 Phonetic Dictionary

Table 1을 보면 실제 한국어 발음과 비슷하게 phonetic dictionary를 만들었는데요, 실제 이렇게 만들 수 있으면 좋겠지만 현실은 그렇지 못하지요. 인력과 노력이 너무 많이 들어가니까요. 그래서 보통은 아래 Table 2에서와 같이 자동으로 phonetic dictionary를 만듭니다.
[Table 2] 실제 Phonetic dictionary 예제
맛있다 ma-siss-da
집 jib
짚 jip
핵융합 haeg-yung-hap

Table 2를 보면, 한글을 그대로 transliteration해서 phonetic dictionary를 만든 것을 볼 수 있습니다. "집"과 "짚"은 같은 발음이 나는 단어인데도 "jib"과 "jip"이라는 서로 다른 발음인 것처럼 되어버렸지요. "핵융합"도 실제 발음과는 많이 다른 발음이 되어버렸구요. 하지만 대부분의 경우, Table 2 정도의 phonetic dictionary만으로도 충분히 좋은 성능의 음성인식기가 만들어집니다. 수많은 양의 data가 phonetic dictionary의 부족한 점을 매워주지요.

성능 (Performance)

물론, 연구자의 한글에 대산 사전 지식을 이용하여 Table 2를 Table 1처럼 만들 수 있습니다. 하지만, 성능 향상은 미미한 경우가 많고, 그에 비해서는 너무 많은 인력 노력이 들어갑니다. 그 시간에 data를 더 많이 얻는게 더 좋습니다. "집", "짚" 같이, 어느 정도 규칙성이 있고 자동으로 일반화할 수 있는 경우라면 phonetic dictionary를 개선해보는 것도 좋지 않을까 싶습니다.

음성 data가 없을 경우

음성 data가 없을 경우, 이미 만들어진 영어(또는 기타 외국어) acoustic model을 사용해야 합니다. 이럴 경우, 우선 train이 된 acoustic model이 어떤 phonetic dictionary를 사용했는지 확인한 후, 한국어 phonetic dictionary와 phonetic script를 최대한 이 phonetic dictionary에 맞춰서 만들어준 후 음성인식을 해야됩니다. 영어 phonetic dictionary에 존재하지 않는 phone은 의미가 없으니 한국어 단어를 모두 영어 script에 맞춰주는 phonetic dictionary를 만들어 줘야합니다.

이 작업도 수동으로 하면 좋지만 그렇게 하면 손이 많이 들어가고, 어느 정도 적당히 자동으로 만들어 준 뒤 model을 train/calibrate해보고, 결과가 좋지 않으면 phonetic dictionary를 개선하는 쪽으로 작업하는 쪽이 좋을 것 같습니다.

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