2019년 7월 14일 일요일

음성인식 메모(kaldi) 21 - 음소 모델

「原作者へ」

連絡先を存じ上げませんでしたので、不本意ながら無断で翻訳しました。 
正式に翻訳を許可されたいです。 
gogyzzz@gmail.comでご連絡ください。

아래 포스트의 번역입니다.

http://work-in-progress.hatenablog.com/entry/2018/07/22/124409


인식 대상을 고립단어에서 발전시켜, 좀 더 실용적으로 예제를 테스트해보자.

일단 학습 대상의 발화를 음소로 분해한다.

원문

オススメの料理は何ですか (오스스메노료-리와난데스까: 추천 요리는 무엇입니까)

문장을 단어로 분해(나눠쓰기, 「MeCab」을 사용)

オススメ の 料理 は 何 です か (오스스메 노 료-리 와 난 데스 까)

단어를 음소열로 분해(「Julius」 내의 「yomi2voca.pl」를 사용)

オススメ o s u s u m e
の n o
料理 ry o u r i
は w a
何 n a N
です d e s u
か k a

음소에 대해서는, 무음(sp、sil)을 빼면 「40」종류.

음소 표

(인용처)

http://winnie.kuis.kyoto-u.ac.jp/dictation/doc/phone_m.pdf

이 안에, 「dy」(「ぢゃ」、「ぢゅ」、「ぢょ」)에 대해서는 제외하고,

「39」종류의 음소 전부를 사용한 20종류의 문장을 만들어, 각각 3회 발화한 음성 데이터 60개를 준비했다.

발화문장(20종류)

オススメ の 料理 は 何 です か (오스스메 노 료-리 와 난 데스 까: 추천 요리는 무엇입니까)

o s u s u m e   n o   ry o u r i   w a   n a N   d e s u   k a  

百 十 番 テーブル へ どうぞ (햐꾸 쥬 방 테-브루 에 도오조: 10번 테이블에 모시겠습니다)

hy a k u   j u u   b a N   t e: b u r u   e   d o u z o  

ラーメン と 餃子 の セット を 1つ お願い し ます (라-멘 토 교-자 노 셋또 오 히토츠 오네가이 시 마스: 라멘과 교자 세트를 하나 주세요)

r a: m e N   t o   gy o u z a   n o   s e q t o   o   h i t o ts u   o n e g a i   sh i   m a s u  

メニュー お願い し ます (메뉴- 오네가이 시 마스: 메뉴판 부탁합니다)

m e ny u:   o n e g a i   sh i   m a s u  

禁煙 席 お願い し ます (킨넨 세키 오네가이 시 마스: 금연석 부탁합니다)

k i N e N   s e k i   o n e g a i   sh i   m a s u  

お 水 4つ お願い し ます (오 미스 욧쯔 오네가이 시 마스: 물 4잔 부탁합니다)

o   m i z u   y o q ts u   o n e g a i   sh i   m a s u  

フォーク 2つ お願い し ます (호-크 후타츠 오네가이 시 마스: 포크 2개 주세요)

f o: k u   f u t a ts u   o n e g a i   sh i   m a s u  

コーヒー は 食後 に お願い し ます (코-히- 와 쇼쿠고 니 오네가이 시 마스: 커피는 식후에 부탁합니다)

k o: h i:   w a   sh o k u g o   n i   o n e g a i   sh i   m a s u  

ソフトドリンク は あり ます か (소후토도링쿠 와 아리 마스 까: 청량음료 있나요?)

s o f u t o d o r i N k u   w a   a r i   m a s u   k a  

持ち帰り に でき ます か (모찌카에리 니 데키 마스 까: 포장 되나요?)

m o ch i k a e r i   n i   d e k i   m a s u   k a  

別々 に でき ます か (베쯔베쯔 니 데키 마스 까: 따로따로 되나요?)

b e ts u b e ts u   n i   d e k i   m a s u  k a

ごちそうさま でし た (고치소-사마 데시 타: 잘 먹었습니다)

g o ch i s o u s a m a   d e sh i   t a  

牛肉 に し て ください (규-니꾸 니 시 테 쿠다사이: 소고기로 해주세요)

gy u u n i k u   n i   sh i   t e   k u d a s a i  

キャベツ は お 代わり 自由 です (캬베쯔 와 오 카와리 지유- 데스: 양배추는 무한리필 가능합니다)

ky a b e ts u   w a   o   k a w a r i   j i y u u   d e s u  

サプライズ は でき ます か (사프라이즈 와 데키 마스 까: 깜짝파티(?)는 가능한가요)

s a p u r a i z u   w a   d e k i   m a s u   k a  

シャンパン を ください (샴빵 오 쿠다사이: 샴페인 주세요)

sh a N p a N   o   k u d a s a i  

かんぴょう を ください (캄뾰- 오 쿠다사이: 칸뾰(음식?)를 주세요)

k a N py o u   o  k u d a s a i

食事 は ビュッフェ スタイル です (쇼쿠지 와 븃훼 스타이루 데스: 식사는 뷔페 스타일입니다)

sh o k u j i   w a   by u q f e   s u t a i r u   d e s u  

みょうが を 添え て ください (묘-가 오 소에 떼 쿠다사이: 묘가(채소?)를 곁들여 주세요)

my o u g a   o   s o e   t e   k u d a s a i  

コーヒー と 紅茶 どちら に し ます か (코-히- 토 코-챠 도찌라 니 시 마스 까: 커피와 홍차 어느 것으로 하시겠습니까?)

k o: h i:   t o   k o u ch a   d o ch i r a   n i   sh i   m a s u   k a  

(참고) data/lang/phones.txt

<eps> 0
sil 1
sil_B 2
sil_E 3
sil_I 4
sil_S 5
spn 6
spn_B 7
spn_E 8
spn_I 9
spn_S 10
N_B 11
N_E 12
N_I 13
N_S 14
a_B 15
a_E 16
a_I 17
a_S 18
<snip>
z_B 163
z_E 164
z_I 165
z_S 166

「禁煙 席 お願い し ます」(킨넨 세키 오네가이 시 마스: 금연석 부탁합니다) 라는 음성 데이터 1개 분을 테스트 데이터,

남은 59개의 음성 데이터를 학습용으로 사용해보니, 각 모델의 디코딩 결과는 아래와 같이 되었다.

Monophone

1-gram

utterance_id_053 禁煙 お願い し ます 킨넨 오네가이 시 마스
LOG (gmm-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -8.01345 over 323 frames.

2-gram

utterance_id_053 禁煙 席 お願い し ます 킨넨 세키 오네가이 시 마스
LOG (gmm-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -7.97456 over 323 frames.

gmm-info 실행 결과

gmm-info exp/mono/final.mdl 
number of phones 166
number of pdfs 127
number of transition-ids 1116
number of transition-states 518
feature dimension 39
number of gaussians 1004

모델의 NUMPDFS(pdf-class 수) : 127 ( 5hmmstate * 2phone + 3hmmstate * 29phone )

Triphone (tri1)

1-gram

utterance_id_053 禁煙 お願い し ます 킨넨 오네가이 시 마스
LOG (gmm-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -7.9652 over 323 frames.

2-gram

utterance_id_053 禁煙 席 お願い し ます 킨넨 세키 오네가이 시 마스
LOG (gmm-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -7.92976 over 323 frames.

gmm-info 실행결과

gmm-info exp/tri1/final.mdl 
number of phones 166
number of pdfs 152
number of transition-ids 1740
number of transition-states 830
feature dimension 39
number of gaussians 977

Triphone (tri2b、LDA+MLLT)

1-gram

utterance_id_053 禁煙 お願い し ます 킨넨 오네가이 시 마스
LOG (gmm-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -4.92207 over 323 frames.

2-gram

utterance_id_053 禁煙 お願い し ます 킨넨 오네가이 시 마스
LOG (gmm-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -4.89113 over 323 frames.

gmm-info 실행결과

gmm-info exp/tri2b/final.mdl 
number of phones 166
number of pdfs 168
number of transition-ids 2246
number of transition-states 1083
feature dimension 40
number of gaussians 970

DNN(nnet4c)

1-gram

utterance_id_053 禁煙 お願い し ます 킨넨 오네가이 시 마스
LOG (nnet-latgen-faster[5.3.106~1389-9e2d8]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:286) Log-like per frame for utterance utterance_id_053 is -0.543315 over 323 frames.

nnet-am-info 실행결과

nnet-am-info exp/nnet4c/final.mdl 
num-components 9
num-updatable-components 3
left-context 4
right-context 4
input-dim 40
output-dim 192
parameter-dim 446703
component 0 : SpliceComponent, input-dim=40, output-dim=360, context=-4 -3 -2 -1 0 1 2 3 4 
component 1 : FixedAffineComponent, input-dim=360, output-dim=360, <snip>
component 2 : AffineComponentPreconditionedOnline, input-dim=360, output-dim=375, <snip>
component 3 : TanhComponent, input-dim=375, output-dim=375
component 4 : AffineComponentPreconditionedOnline, input-dim=375, output-dim=375, <snip>
component 5 : TanhComponent, input-dim=375, output-dim=375
component 6 : AffineComponentPreconditionedOnline, input-dim=375, output-dim=453, <snip>
component 7 : SoftmaxComponent, input-dim=453, output-dim=453
component 8 : SumGroupComponent, input-dim=453, output-dim=192
prior dimension: 192, prior sum: 1, prior min: 1e-20

(킨넨 세키 오네가이 시 마스: 금연석 부탁합니다)

"禁煙(킨넨)"의 뒤에 붙어있는 "席(세키)"가 탈락되어 있는 케이스가 있지만, 학습용 데이터수나 weight 파라미터에 따라 결과는 바뀔 것이라 예상된다.

또한 이번에 예를 들어 「料理(료-리)」라는 단어에 관해서는 「ry o u r i」(료우리)로 했지만, 「ry o: r i」(료-리)라도 인식가능하도록 하면 좋겠다고 생각한다. (일본어의 경우 '오우'를 '오-'로 발음함)

이즈음에 이르러서는 대화체 발화 분야의 깊이를 느끼게 된다.

댓글 없음:

댓글 쓰기