λ³Έ μ‹œλ¦¬μ¦ˆλŠ” Watson STT의 인식λ₯ μ„ 높이기 μœ„ν•œ νŠΈλ ˆμ΄λ‹ 방법을 μ„€λͺ…ν•˜λŠ” μ‹œλ¦¬μ¦ˆλ‘œ μ•„λž˜μ™€ 같이 κ΅¬μ„±λ©λ‹ˆλ‹€.

각 μ‹œλ¦¬μ¦ˆμ˜ μ†ŒμŠ€λŠ” https://github.com/blbird/STT μ—μ„œ ν™•μΈν•˜μ‹€μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

Watson STT ν…μŠ€νŠΈ 데이터 νŠΈλ ˆμ΄λ‹

μ΄λ²ˆμ—λŠ” μ‹œλ¦¬μ¦ˆμ˜ λ‘λ²ˆμ§Έλ‘œ Watson STT의 ν…μŠ€νŠΈ λ°μ΄ν„°μ˜ νŠΈλ ˆμ΄λ‹μ— λŒ€ν•΄ μ•Œμ•„ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. Watson sttλŠ” ν…μŠ€νŠΈμ— λŒ€ν•œ νŠΈλ ˆμ΄λ‹μœΌλ‘œ λ¬Έμž₯κ³Ό 단어λ₯Ό νŠΈλ ˆμ΄λ‹ ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

1. λ¬Έμž₯ νŠΈλ ˆμ΄λ‹ (corpus.js)
  • λ¬Έμž₯에 λŒ€ν•œ νŠΈλ ˆμ΄λ‹μ€ Watson STT의 addCorpus()ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. addCorpus() ν•¨μˆ˜λŠ” μ•„λž˜μ™€ 같은 μ˜΅μ…˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
    • customization_id : νŠΈλ ˆμ΄λ‹μ„ μœ„ν•œ customization model id
    • corpus_name: corpusλ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•œ corpus 이름
    • corpus_file : string, buffer, readable stream ν˜•νƒœλ‘œ 제곡 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • allow_overwrite: 같은 이름을 가진 corpusκ°€ 이미 μžˆμ„ λ•Œ, overwrite 할지 μ§€μ •ν•˜λŠ” μ˜΅μ…˜
  • addCorpus에 λŒ€ν•΄ 쒀더 μžμ„Έν•œ λ‚΄μš©μ€https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/?node#add_corpus λ₯Ό μ°Έκ³  ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.
  • addCorpusν›„ μ‹€μ œ training을 μœ„ν•΄ trainSTT() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€. μ΄λ•Œ ν˜„μž¬ ν•΄λ‹Ή customization의 μƒνƒœκ°€ νŠΈλ ˆμ΄λ‹μ΄ κ°€λŠ₯ν•œ μƒνƒœκ°€ μ•„λ‹ˆλΌλ©΄ μ—λŸ¬κ°€ λ°œμƒν•˜λ―€λ‘œ, μ•„λž˜ μ½”λ“œμ™€ 같이 whenCustomizationReady()λ₯Ό μ΄μš©ν•˜μ—¬ νŠΈλ ˆμ΄λ‹μ΄ κ°€λŠ₯ν•œ μƒνƒœλ₯Ό μ²΄ν¬ν•˜μ—¬ νŠΈλ ˆμ΄λ‹μ΄ κ°€λŠ₯ν•œ μƒνƒœκ°€ 되면 trainSTT() ν•¨μˆ˜ λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

    const checkAndTrainSTT = (sttCustomModelId) => {
    const params = {
    customization_id: sttCustomModelId,
    interval: 10000
    };
    speechToText.whenCustomizationReady(params, (error, customization) => {
    if (error) {
    console.log(‘whenCustomizationReady Error: ‘, error);
    } else {
    console.log(‘start training’);
    trainSTT(sttCustomModelId);
    }
    });
    };
  • λ¬Έμž₯을 νŠΈλ ˆμ΄λ‹ ν•˜κΈ° μœ„ν•΄μ„œλŠ” 예제 파일(corpus.txt)κ³Ό 같은 λ¬Έμž₯이 λ‚˜μ—΄λœ νŒŒμΌμ„ μ€€λΉ„ν•©λ‹ˆλ‹€. corpus νŒŒμΌμ€ ν•˜λ‚˜μ˜ λ¬Έμž₯을 ν•œ 쀄에 μ μœΌμ‹œλ©΄ 되고, ν•œ 쀄에 μ—¬λŸ¬ λ¬Έμž₯을 μž…λ ₯ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‚˜ 이 경우 정확도가 λ–¨μ–΄μ§ˆ 수 μžˆμœΌλ‹ˆ, ν•œ 쀄에 ν•œ λ¬Έμž₯을 μ μœΌμ‹œλŠ” κ±Έ μΆ”μ²œ λ“œλ¦½λ‹ˆλ‹€. ascii μ΄μ™Έμ˜ 문자λ₯Ό μ €μž₯ν•˜μ‹€ λ•Œμ—λŠ” utf-8 ν˜•νƒœλ‘œ μ €μž₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
  • μ‹œλ¦¬μ¦ˆμ˜ μ²«λ²ˆμ§Έμ—μ„œ μˆ˜μ •ν•œ config.jsμ—μ„œ λͺ…μ‹œν•œ STT_CUSTOM_MODEL_NAME, STT_BASE_MODEL_NAME 을 μ‚¬μš©ν•˜μ—¬ νŠΈλ ˆμ΄λ‹μ„ ν•©λ‹ˆλ‹€. STT_BASE_MODEL_NAME은 Watson STT의 베이슀 λͺ¨λΈμ„ μ˜λ―Έν•˜κ³ , STT_CUSTOM_MODEL_NAME은 νŠΈλ ˆμ΄λ‹μ„ μœ„ν•œ customization name μž…λ‹ˆλ‹€. 이 이름을 μ΄μš©ν•˜μ—¬ μ—¬λŸ¬κ°œμ˜ customization model을 생성할 수 있고, STT μΈμ‹ν• λ•Œ μ‚¬μš©ν•˜μ‹€μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
  • μ•„λž˜μ™€ 같이 μ‹€ν–‰ μ‹œν‚€λ©΄ νŠΈλ ˆμ΄λ‹μ„ μ‹œν‚€μ‹€ 수 있으며, νŠΈλ ˆμ΄λ‹λœ corpus μ΄λ¦„μ˜ 리슀트λ₯Ό ν™•μΈν•˜μ‹€μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
    • npm install
    • node corpus add [corpus name] [corpus 파일] : corpus 파일의 λ‚΄μš©μ„ corpus name을 가지고 νŠΈλ ˆμ΄λ‹ ν•©λ‹ˆλ‹€.
    • node corpus lit : μΆ”κ°€λœ corpus name의 리슀트λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.
2. 단어 νŠΈλ ˆμ΄λ‹ (words.js)
  • 단어에 λŒ€ν•œ νŠΈλ ˆμ΄λ‹μ€ Watson STT의 addWords() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. addWords() ν•¨μˆ˜λŠ” λ‹€μŒμ˜ 두 μž…λ ₯값이 ν•„μš”ν•©λ‹ˆλ‹€.
    • customization_id: 단어 νŠΈλ ˆμ΄λ‹μ„ μœ„ν•œ customization model id
    • words : νŠΈλ ˆμ΄λ‹μ„ μœ„ν•œ 단어 리슀트(단어 자체λ₯Ό λ‚˜νƒ€λ‚΄λŠ” word, λ°œμŒλ˜λŠ” 방식을 λ‚˜νƒ€λ‚΄λŠ” sounds_like, 좜λ ₯을 μœ„ν•΄ μ‚¬μš©λ˜λŠ” display_as 둜 ꡬ성됨)
    • addWords()ν•¨μˆ˜μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/?node#add_words λ₯Ό μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.
  • 단어에 λŒ€ν•œ νŠΈλ ˆμ΄λ‹λ„ λ¬Έμž₯κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ trainSTT() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€. 호좜 방법은 μœ„λΆ€λΆ„μ— λͺ…μ‹œλœ λ¬Έμž₯ νŠΈλ ˆμ΄λ‹ 방법과 동일 ν•©λ‹ˆλ‹€.
  • 단어에 λŒ€ν•œ νŠΈλ ˆμ΄λ‹μ„ μœ„ν•œ νŒŒμΌμ„ μ€€λΉ„ν•©λ‹ˆλ‹€. 이 νŒŒμΌμ€ ν…μŠ€νŠΈ ν˜•νƒœμ˜ json 파일이며 words object의 리슀트λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€. words object의 ν˜•νƒœλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.
    • word : νŠΈλ ˆμ΄λ‹μ„ μœ„ν•œ 단어
    • sounds_like: wordλ₯Ό λ°œμŒν•˜λŠ” 방법에 λŒ€ν•œ 리슀트
    • display_as : wordκ°€ λ‚˜νƒ€λ‚¬μ„λ•Œ μ‹€μ œλ‘œ transcriptμ—μ„œ λ³΄μ—¬μ§€λŠ” 슀트링

    μžμ„Έν•œ μ˜ˆμ œλŠ” μƒ˜ν”Œ 파일(words.txt) 을 μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

  • μ•„λž˜μ™€ 같이 μ‹€ν–‰ μ‹œν‚€λ©΄ 단어 리슀트λ₯Ό νŠΈλ ˆμ΄λ‹ μ‹œν‚€μ‹€ 수 있으며, νŠΈλ ˆμ΄λ‹λœ wordsλ₯Ό ν™•μΈν•˜μ‹€μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
    • npm install
    • node words add [words 파일] : words 파일의 λ‚΄μš©μ„ νŠΈλ ˆμ΄λ‹ ν•©λ‹ˆλ‹€.
    • node words lit : μΆ”κ°€λœ words의 리슀트λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

ν† λ‘  μ°Έκ°€

이메일은 κ³΅κ°œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ μž…λ ₯창은 * 둜 ν‘œμ‹œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.