Hugging Face Transformers๊ฐ CTC ๊ตฌ์กฐ์ Stride ๊ธฐ๋ฒ์ ๋์ ํด Wav2Vec2 ๋ชจ๋ธ์ด ์์ ๊ธธ์ด์ ์ค๋์ค ํ์ผ ์ฒ๋ฆฌ ๊ฐ๋ฅ
Making automatic speech recognition work on large files with Wav2Vec2 in ๐ค Transformers
AI ์์ฝ
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 ๋ฉ๋ชจ๋ฆฌ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.