ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Making automatic speech recognition work on large files with Wav2Vec2 in ๐Ÿค— Transformers
Hugging Face BlogHugging Face Blog
Backend

Hugging Face Transformers๊ฐ€ CTC ๊ตฌ์กฐ์˜ Stride ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•ด Wav2Vec2 ๋ชจ๋ธ์ด ์ž„์˜ ๊ธธ์ด์˜ ์˜ค๋””์˜ค ํŒŒ์ผ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

Making automatic speech recognition work on large files with Wav2Vec2 in ๐Ÿค— Transformers

2022๋…„ 2์›” 1์ผ7๋ถ„intermediate

Context

Wav2Vec2๋Š” ํŠธ๋žœ์Šคํฌ๋จธ ๊ธฐ๋ฐ˜ ์Œ์„ฑ ์ธ์‹ ๋ชจ๋ธ๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ํ•œํ•œ ์‹œํ€€์Šค ๊ธธ์ด๋งŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์–ดํ…์…˜ ๋ณต์žก๋„๊ฐ€ O(nยฒ)์ด๋ฏ€๋กœ 1์‹œ๊ฐ„ ๊ธธ์ด์˜ ์˜ค๋””์˜ค ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด GPU ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ถฉ๋Œํ•œ๋‹ค.

Technical Solution

  • ๊ธฐ์กด ๋‹จ์ˆœ ์ฒญํ‚น(Simple Chunking)์˜ ํ•œ๊ณ„ ๊ทน๋ณต: ์ฒญํ‚น ๊ฒฝ๊ณ„ ๋ถ€๋ถ„์˜ ๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ๋‚ฎ์€ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด Stride ๊ธฐ๋ฒ• ๋„์ž…
  • CTC ๊ตฌ์กฐ ํ™œ์šฉ ํ•œ Stride ๊ธฐ๋ฒ• ๊ตฌํ˜„: ๊ฐ ์˜ค๋””์˜ค ํ”„๋ ˆ์ž„์ด ๋‹จ์ผ ๋ฌธ์ž ์˜ˆ์ธก(logit)์— ๋งคํ•‘๋˜๋Š” CTC ํŠน์„ฑ์„ ์ด์šฉํ•ด ์ค‘๋ณต๋˜๋Š” ์ฒญํฌ์—์„œ ์ถ”๋ก  ์ˆ˜ํ–‰
  • Stride ๊ฒฝ๊ณ„๋ถ€ ๋กœ์ง“ ์ œ๊ฑฐ: ์ค‘๋ณต ๊ตฌ๊ฐ„์˜ ์–‘์ชฝ ๋๋ถ€๋ถ„ ๋กœ์ง“์„ ์ œ๊ฑฐํ•˜๊ณ  ์ค‘์•™๋ถ€์˜ ๋กœ์ง“๋งŒ ์—ฐ๊ฒฐํ•ด ์ „์ฒด ์˜ค๋””์˜ค ์ถ”๋ก  ๊ฒฐ๊ณผ ์žฌ๊ตฌ์„ฑ
  • pipeline ์ธํ„ฐํŽ˜์ด์Šค์— chunk_length_s ๋ฐ stride_length_s ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€: ์‚ฌ์šฉ์ž๊ฐ€ ์ฒญํฌ ๊ธธ์ด(์˜ˆ: 10์ดˆ)์™€ ์ŠคํŠธ๋ผ์ด๋“œ ๊ธธ์ด(์˜ˆ: 4์ดˆ, 2์ดˆ)๋ฅผ ์ง์ ‘ ์„ค์ • ๊ฐ€๋Šฅ
  • LM ์ฆ๊ฐ• ๋ชจ๋ธ ํ˜ธํ™˜์„ฑ ๋ณด์žฅ: ์–ธ์–ด ๋ชจ๋ธ์ด ๋กœ์ง“์— ์ง์ ‘ ์ž‘๋™ํ•˜๋ฏ€๋กœ LM ๋ถ€์ŠคํŠธ๋œ Wav2Vec2 ๋ชจ๋ธ๋„ ๋™์ผํ•œ Stride ๊ธฐ๋ฒ• ์ ์šฉ ๊ฐ€๋Šฅ
  • ๋ผ์ด๋ธŒ ์ถ”๋ก  ๊ตฌํ˜„: CTC ๋ชจ๋ธ์˜ ๋‹จ์ผ ํŒจ์Šค ํŠน์„ฑ์„ ํ™œ์šฉํ•ด ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์˜ค๋””์˜ค์— 1์ดˆ ์ŠคํŠธ๋ผ์ด๋“œ๋กœ 10์ดˆ ์ฒญํฌ ์ฒ˜๋ฆฌ

Key Takeaway

CTC ์•„ํ‚คํ…์ฒ˜๋Š” ํ”„๋ ˆ์ž„ ๋ ˆ๋ฒจ ์˜ˆ์ธก์˜ ๋…๋ฆฝ์„ฑ์œผ๋กœ ์ธํ•ด ์ค‘๋ณต ๊ตฌ๊ฐ„ ๋กœ์ง“ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ์—†์ด ์ž„์˜ ๊ธธ์ด ์˜ค๋””์˜ค์™€ ๋ผ์ด๋ธŒ ์ถ”๋ก ์„ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


Wav2Vec2 ๊ธฐ๋ฐ˜ ์Œ์„ฑ ์ธ์‹ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ๋•Œ transformers ํŒŒ์ดํ”„๋ผ์ธ์— chunk_length_s=10, stride_length_s=(4, 2) ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ฒญํ‚น ๊ฒฝ๊ณ„๋ถ€ ํ’ˆ์งˆ ์ €ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์žฅ์‹œ๊ฐ„ ์˜ค๋””์˜ค ํŒŒ์ผ์„ ์œ ํ•œํ•œ GPU ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์›๋ฌธ ์ฝ๊ธฐ