[STT/Kaldi] λ°œμŒμ‚¬μ „(Lexicon), μ–Έμ–΄λͺ¨λΈ(LM)μ΄λž€?

2025. 6. 11. 13:49Β·πŸ€– AI
728x90
728x90

STT λͺ¨λΈμ„ κ΅¬μ„±ν•˜κΈ° μœ„ν•œ μš”μ†ŒμΈ μ–Έμ–΄λͺ¨λΈκ³Ό λ°œμŒμ‚¬μ „μ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.

 

ν•œκ΅­μ–΄λŠ” μ˜μ–΄μ™€ μŒμ†Œ 체계, μ–΄μ ˆ ꡬ성 등이 달라 λͺ¨λΈ μ μš©λ²•λ„ λ‹€λ₯΄λ―€λ‘œ 쑰금 더 λ³΅μž‘ν•œ κ²½ν–₯이 μžˆλ‹€.

 

 

λ°œμŒμ‚¬μ „(Lexicon)

단어(Word)λ₯Ό μŒμ†Œ(Phoneme)둜 λ§€ν•‘ν•˜λŠ” ν‘œ(Table) μ—­ν• λ‘œ, 단어 μ‚¬μ „μ΄μž 발음 κ·œμΉ™μ„ μ •μ˜ν•œλ‹€.

Kaldiμ—μ„œ 음ν–₯λͺ¨λΈμ€ μŒμ†Œ λ ˆλ²¨κΉŒμ§€ ν•™μŠ΅ 및 좜λ ₯ν•˜κΈ° λ•Œλ¬Έμ— 단어 λ³€ν™˜μ— λ°€μ ‘ν•œ 관계가 μžˆλ‹€.

 

같은 단어라도 μ—¬λŸ¬ 발음이 μ‘΄μž¬ν•  수 μžˆμœΌλ―€λ‘œ, ν•œ 단어에 μ—¬λŸ¬ λ°œμŒμ„ 등둝할 μˆ˜λ„ μžˆλ‹€. (= multi-pronunciation)

 

ꡬ성 μš”μ†Œ

  • μŒμ†Œ μ§‘ν•© (phones.txt) : λ°œμŒμ— μ‚¬μš©ν•  전체 μŒμ†Œ 리슀트
    • κΈ°λ³Έ 단어 외에 <sil> (silence, 무음), <unk> (unknown, μ•Œ 수 μ—†μŒ) λ“± 특수 토큰이 ν•„μˆ˜μ΄λ‹€.
    • ν•œκ΅­μ–΄λŠ” μŒμ†Œ(자음, λͺ¨μŒ) λ‹¨μœ„λ‘œλ„ κ°€λŠ₯ν•˜κ³ , 음절(μ΄ˆμ„±+쀑성+μ’…μ„±) λ‹¨μœ„λ‘œλ„ κ°€λŠ₯ν•˜λ‹€. μΌλ°˜μ μœΌλ‘œλŠ” 음절 λ‹¨μœ„λ‘œ κ΅¬μ„±ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€. (μ²˜λ¦¬κ°€ λ‹¨μˆœν•˜κΈ° λ•Œλ¬Έ)
# 음절 λ‹¨μœ„ μ˜ˆμ‹œ

μ•ˆλ…•ν•˜μ„Έμš”    μ•ˆ λ…• ν•˜ μ„Έ μš”
λ°˜κ°‘μŠ΅λ‹ˆλ‹€    반 κ°‘ 슡 λ‹ˆ λ‹€
κ³ λ§™μŠ΅λ‹ˆλ‹€    κ³  λ§™ 슡 λ‹ˆ λ‹€
μ‚¬λž‘ν•΄μš”      사 λž‘ ν•΄ μš”

# μŒμ†Œ λ‹¨μœ„ μ˜ˆμ‹œ

μ•ˆλ…•ν•˜μ„Έμš”    Κ” a n n j ʌ Ε‹ h a s e j o
λ°˜κ°‘μŠ΅λ‹ˆλ‹€    p a n k a p s Ι― p n i d a

 

ꡬ좕 방법

μ†Œκ·œλͺ¨μΈ 경우 μ‚¬λžŒμ΄ 직접 μž‘μ„±ν•˜λŠ” μˆ˜μž‘μ—…μœΌλ‘œλ„ ꡬ성이 κ°€λŠ₯ν•˜λ‚˜, μ•„λž˜μ™€ 같은 λ°©λ²•μœΌλ‘œ μžλ™ μž‘μ„±λ„ κ°€λŠ₯ν•˜λ‹€.

  • G2P λͺ¨λΈ (Grapheme-to-Phoneme) 이용
    • ex) Phonetisaurus, Sequitur G2P λ“±
  • κΈ°μ‘΄ 곡개 사전 ν™œμš©
    • ex) CMU Pronouncing Dictionary λ“± μ‚¬μš© ν›„ 가곡

 

주의 사항

  • λ°œμŒμ‚¬μ „(Lexicon)에 μ—†λŠ” λ‹¨μ–΄λŠ” OOV(Out-Of-Vocabulary)κ°€ λ°œμƒ(ν•΄λ‹Ή 단어λ₯Ό μ°Ύμ§€ λͺ»ν•΄ 미인식)ν•  수 μžˆλ‹€.
  • Training, Text Corpus에 λ“±μž₯ν•˜λŠ” λͺ¨λ“  λ‹¨μ–΄λŠ” λ°œμŒμ‚¬μ „(Lexicon)에 λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€.
  • 특수 단어(숫자, 기호 λ“±)λŠ” λ”°λ‘œ λ°œμŒμ„ μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.

 

 

μ–Έμ–΄λͺ¨λΈ(LM)

ν™•λ₯ μ„ 기반으둜 단어 μ‹œν€€μŠ€μ˜ μžμ—°μŠ€λŸ¬μ›€μ„ νŒλ‹¨ν•˜μ—¬, 동일 λ°œμŒμ—μ„œ λ¬Έλ§₯에 더 μ ν•©ν•œ 단어 μ‹œν€€μŠ€λ₯Ό μ„ νƒν•œλ‹€.

음ν–₯λͺ¨λΈμ€ μŒμ†Œλ₯Ό μ œκ³΅ν•˜κ³ , Lexiconκ³Ό LM을 톡해 단어와 λ¬Έμž₯을 μ‘°ν•©ν•œ μ΅œμ’… 단어 μ‹œν€€μŠ€λ₯Ό μƒμ„±ν•œλ‹€.

  • ex) "I scream"κ³Ό "Ice cream"μ΄λΌλŠ” 발음이 μœ μ‚¬ν•œ λ¬Έμž₯이 μžˆλ‹€λ©΄, λ¬Έλ§₯에 따라 μ •ν™•ν•˜κ²Œ 해석을 μœ λ„ν•œλ‹€.

 

ν•™μŠ΅ 방법

일반적으둜 N-gram 기반의 ν™•λ₯  μ–Έμ–΄λͺ¨λΈμ„ μ‚¬μš©ν•˜λ©°, 보톡 ARPA 포맷(lm.arpa), FST둜 λ³€ν™˜ν•˜μ—¬ μ‚¬μš©(G.fst)ν•œλ‹€.

ν•™μŠ΅ λ°μ΄ν„°μ˜ ν…μŠ€νŠΈ μ½”νΌμŠ€(λ¬Έμž₯ λͺ¨μŒ)둜 ν•™μŠ΅λœλ‹€.

  • λŒ€μš©λŸ‰ ν…μŠ€νŠΈ μ½”νΌμŠ€ μ€€λΉ„ → N-gram λͺ¨λΈ ν•™μŠ΅ (3, 4 많이 μ‚¬μš©) → ARPA 포맷으둜 μ €μž₯ → Kaldiμ—μ„œ arpa2fst 툴둜 FST둜 λ³€ν™˜ ν›„ μ‚¬μš©
# ν…μŠ€νŠΈ μ½”νΌμŠ€ μ˜ˆμ‹œ

μ•ˆλ…•ν•˜μ„Έμš” λ°˜κ°‘μŠ΅λ‹ˆλ‹€
였늘 날씨가 μ’‹λ„€μš”
컀피 ν•œ μž” μ£Όμ„Έμš”
ν•œκ΅­μ–΄ μŒμ„± 인식을 ν•™μŠ΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€

 

ν•œκ΅­μ–΄λŠ” μ–΄μ ˆ(띄어쓰기 κΈ°μ€€) 기반 LM이 λ§Žμ€λ°, ν˜•νƒœμ†Œ 기반 LM μ‚¬μš© μ‹œ 더 μ„Έλ°€ν•œ λ¬Έλ§₯을 λ°˜μ˜ν•  수 μžˆλ‹€. (mecab-ko, khaiii λ“±μœΌλ‘œ 뢄석 ν›„ ν˜•νƒœμ†Œ λ‹¨μœ„ LM을 κ΅¬μ„±ν•˜λŠ” 것)

 

  • N-gram : λ¬Έμžμ—΄(Text) λ‚΄μ—μ„œ μ—°μ†λœ N개의 ν•­λͺ©(Token)의 μ‹œν€€μŠ€. (= 보톡 단어, 음절, μŒμ†Œ λ“±)
    • 즉, N개의 μ—°μ†λœ 토큰이 λ“±μž₯ν•  ν™•λ₯ μ„ ν•™μŠ΅ν•˜μ—¬ λ¬Έμž₯ λ‚΄μ—μ„œ μ–΄λ–€ 토큰이 μ˜¬μ§€ μ˜ˆμΈ‘ν•˜λŠ” 방법이닀.
# μ•„λž˜ μ˜ˆμ‹œ λ¬Έμž₯이 듀어왔을 λ•Œ,
μ•ˆλ…•ν•˜μ„Έμš” λ°˜κ°‘μŠ΅λ‹ˆλ‹€

# 1-gram (unigram) 이라면 '단일 단어 ν™•λ₯ '만
P(μ•ˆλ…•ν•˜μ„Έμš”), P(λ°˜κ°‘μŠ΅λ‹ˆλ‹€)

# 2-gram (bigram) 이라면 'λ‹¨μ–΄μŒ ν™•λ₯ '을
P(λ°˜κ°‘μŠ΅λ‹ˆλ‹€ | μ•ˆλ…•ν•˜μ„Έμš”)

# 3-gram (trigram) 이라면 '3단어 μ‹œν€€μŠ€ ν™•λ₯ '
# <s>λŠ” λ¬Έμž₯ μ‹œμž‘ κΈ°ν˜Έμž„
P(λ°˜κ°‘μŠ΅λ‹ˆλ‹€ | μ•ˆλ…•ν•˜μ„Έμš” <s>)

# 즉 '이전 N-1개의 단어가 μ£Όμ–΄μ‘Œμ„ λ•Œ ν˜„μž¬ 단어가 λ“±μž₯ν•  ν™•λ₯ '
P(w_n | w_{n-1}, w_{n-2}, ..., w_{n-N+1})

 

ν•œκ΅­μ–΄μ—μ„œμ˜ N-gram은 μ˜μ–΄λ³΄λ‹€ 쑰금 더 νŠΉλ³„ν•œ νŠΉμ§•μ΄ μžˆλŠ”λ°,

  • 단어 λ³€ν™”κ°€ 맀우 λ‹€μ–‘(쑰사, μ–΄λ―Έμ˜ 변화에 따라)ν•˜μ—¬ ν¬μ†Œμ„±μ΄ μ¦κ°€ν•˜κ³ 
  • ν˜•νƒœμ†Œ 뢄석 기반 LM이 일반적으둜 μ„±λŠ₯이 μš°μˆ˜ν•˜λ‹€.
    • "ν•©λ‹ˆλ‹€", "ν•˜μ˜€λ‹€", "ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€"λ₯Ό λ™μΌν•œ κΈ°λ³Έν˜• "ν•˜λ‹€"둜 톡일할 수 있기 λ•Œλ¬Έ
# μ–΄μ ˆ 기반 N-gram
μ•ˆλ…•ν•˜μ„Έμš” λ°˜κ°‘μŠ΅λ‹ˆλ‹€

## 1-gram:
P(μ•ˆλ…•ν•˜μ„Έμš”), P(λ°˜κ°‘μŠ΅λ‹ˆλ‹€)

## 2-gram:
P(λ°˜κ°‘μŠ΅λ‹ˆλ‹€ | μ•ˆλ…•ν•˜μ„Έμš”)


# ν˜•νƒœμ†Œ 기반 N-gram
μ•ˆλ…•/NNG ν•˜/XSV μ•„μš”/EF λ°˜κ°‘/VA μŠ΅λ‹ˆλ‹€/EF

## 1-gram:
P(μ•ˆλ…•), P(ν•˜), P(μ•„μš”), P(λ°˜κ°‘), P(μŠ΅λ‹ˆλ‹€)

## 2-gram:
P(ν•˜ | μ•ˆλ…•), P(μ•„μš” | ν•˜), P(λ°˜κ°‘ | μ•„μš”), P(μŠ΅λ‹ˆλ‹€ | λ°˜κ°‘)

 

μ€‘μš”μ„± (μ—­ν• )

λ™μΌν•œ μŒμ„± 결과에 λŒ€ν•΄ κ°€μž₯ κ°€λŠ₯μ„± 높은 단어열을 μ„ νƒν•˜κ³ , 음ν–₯λͺ¨λΈμ˜ 였λ₯˜λ₯Ό 보완(발음이 λΉ„μŠ·ν•œ 단어λ₯Ό κ΅¬λΆ„ν•œλ‹€κ±°λ‚˜)ν•˜λŠ” λ“± λ¬Έλ§₯ 이해λ₯Ό 톡해 인식 정확도 ν–₯상에 도움이 되기 λ•Œλ¬Έμ— μ–Έμ–΄λͺ¨λΈμ€ μ€‘μš”ν•˜λ‹€.

 

 


 

 

발음 사전은 음절 λ‹¨μœ„,

μ–Έμ–΄ λͺ¨λΈμ€ N-gram(μ–΄μ ˆ λ‹¨μœ„)둜 κ΅¬μ„±ν•˜λŠ” 게 κ°€μž₯ κ°„νŽΈν•˜κ³  ꡬ좕이 μš©μ΄ν•œ λ°©λ²•μ΄λ‚˜

 

μŒμ†Œ 기반의 발음 사전 + ν˜•νƒœμ†Œ 기반의 μ–Έμ–΄ λͺ¨λΈμ„ μ‚¬μš©ν•˜λŠ” 게 ν’ˆμ§ˆ λ©΄μ—μ„œ μœ λ¦¬ν•˜λ‹€. (λ‚œμ΄λ„λŠ” λ†’μŒ)

728x90
320x100
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ€– AI' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ASR] Kaldiλž€?  (0) 2025.03.17
A Survey of Embodied AI: From Simulators to Research Tasks λ…Όλ¬Έ 정리 - (2)  (0) 2022.07.13
A Survey of Embodied AI: From Simulators to Research Tasks λ…Όλ¬Έ 정리 - (1)  (0) 2022.07.12
'πŸ€– AI' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ASR] Kaldiλž€?
  • A Survey of Embodied AI: From Simulators to Research Tasks λ…Όλ¬Έ 정리 - (2)
  • A Survey of Embodied AI: From Simulators to Research Tasks λ…Όλ¬Έ 정리 - (1)
mxnxeonx
mxnxeonx
"μ•„, 이거 λ­μ˜€λ”λΌ"λ₯Ό ν•˜μ§€ μ•ŠκΈ°μœ„ν•œ 일기μž₯.
  • mxnxeonx
    MJ's Development Diary
    mxnxeonx
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (154)
      • πŸ’» Language (43)
        • Java : μžλ°” (18)
        • Python : 파이썬 (9)
        • ROS : λ‘œλ΄‡μ‹œμŠ€ν…œ (9)
        • Android : μ•ˆλ“œλ‘œμ΄λ“œ (4)
        • JavaScript : μžλ°”μŠ€ν¬λ¦½νŠΈ (2)
      • 🌐 Environment (19)
        • IDE : ν†΅ν•©κ°œλ°œν™˜κ²½ (9)
        • Virtual : κ°€μƒν™˜κ²½ (10)
      • βš™ Framework (12)
        • Vue-λ·° (3)
        • Spring-μŠ€ν”„λ§ (7)
      • πŸ’Ύ DataBase (18)
      • 🌌 OS (36)
        • Linux-λ¦¬λˆ…μŠ€ (36)
      • πŸ’¬ CI · CD (7)
        • Git : κΉƒ (7)
      • πŸ“ƒ ETC (3)
      • πŸ€– AI (4)
  • 링크

    • GitHub
  • 인기 κΈ€

  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
mxnxeonx
[STT/Kaldi] λ°œμŒμ‚¬μ „(Lexicon), μ–Έμ–΄λͺ¨λΈ(LM)μ΄λž€?
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”