ํ๊ตญ์ด ์คํธ๋ฆฌ๋ฐ ํค์๋ ๊ฒ์ถ ๋ชจ๋ธ (Zipformer tiny)
๋ธ๋ผ์ฐ์ ๋ ๋ชจ๋ฐ์ผ์์ ๋๋ฆด ์ ์๋ ์์ ํ๊ตญ์ด ํค์๋ ๊ฒ์ถ(KWS) ๋ชจ๋ธ์
๋๋ค.
์คํธ๋ฆฌ๋ฐ Zipformer + RNN-T ๊ตฌ์กฐ์ด๊ณ , sherpa-onnx์ KeywordSpotter๋ก ์คํํฉ๋๋ค.
ํค์๋๋ ๋ค์ ํ์ตํ์ง ์๊ณ ํ
์คํธ๋ก ๋ฐ๊ฟ ๋ฃ์ ์ ์์ต๋๋ค.
- ํ์ต ์ฝ๋: https://github.com/kairess/ko-kws-zipformer
- int8 ONNX ์ ์ฒด 9.3 MB, ์คํธ๋ฆฌ๋ฐ ์ฒญํฌ 320 ms
๋น ๋ฅธ ์์
pip install sherpa-onnx sentencepiece soundfile numpy
python kws_demo.py --keywords ๋๋ถ๋ถ,๋ํต๋ น,์ฌ๋ฆผํฝ,์ด์ ์ test_wavs/0.wav test_wavs/1.wav
test_wavs/0.wav: ๋๋ถ๋ถ (~4.4s)
test_wavs/1.wav: ์ด์ ์ (~2.8s)
ํค์๋ ํ์ผ์ sherpa-onnx ํ์์
๋๋ค. ํ ์ค์ ํค์๋ ํ๋๋ฅผ BPE ํ ํฐ, ๊ฐ์ฐ์ , ๋ฌธํฑ๊ฐ, ์ด๋ฆ ์์ผ๋ก ์ ์ต๋๋ค.
kws_demo.py๊ฐ bpe.model๋ก ํ ํฐ์ ๋ง๋ค์ด ์ค๋๋ค.
โ๋ ๋ถ ๋ถ :1.0 #0.35 @๋๋ถ๋ถ
ํ์ผ
| ํ์ผ | ๋ด์ฉ |
|---|---|
encoder.int8.onnx, decoder.int8.onnx, joiner.int8.onnx |
๋ฐฐํฌ์ฉ int8 ๋ชจ๋ธ (8.5 + 0.4 + 0.4 MB) |
encoder.onnx, decoder.onnx, joiner.onnx |
fp32 ๋ชจ๋ธ |
tokens.txt, bpe.model |
์์ ๊ธฐ๋ฐ unigram BPE 2,000 |
pretrained.pt |
icefall ์ฒดํฌํฌ์ธํธ (๋ฏธ์ธ์กฐ์ ์ฉ) |
kws_demo.py |
sherpa-onnx ์์ |
test_wavs/ |
FLEURS ko_kr test ์์ฑ 2๊ฐ (CC BY 4.0) |
ONNX๋ ์ฒญํฌ 16 ํ๋ ์(320 ms), ์ผ์ชฝ ๋ฌธ๋งฅ 128 ํ๋ ์์ผ๋ก ๋ด๋ณด๋์ต๋๋ค.
์ฑ๋ฅ
| ํ๊ฐ์ | CER | FRR@ฯ0.35 | FA/h@ฯ0.35 | FRR@1FA/h | FRR@0.1FA/h |
|---|---|---|---|---|---|
| KsponSpeech eval_clean | 13.8% | 25.6% | 0.81 | 23.1% | 31.4% |
| KsponSpeech eval_other | 14.7% | 15.9% | 2.00 | 35.2% | 100% |
| FLEURS ko test | 14.6% | 5.9% | 0.00 | 4.9% | 4.9% |
| AI Hub ๋ช ๋ น์ด | 4.7% | 6.5% | 9.51 | 37.7% | 61.3% |
| AI Hub ์์ ๋ช ๋ น์ด | 7.7% | 8.7% | 32.48 | 83.0% | 92.6% |
- CER: ์คํธ๋ฆฌ๋ฐ ๊ทธ๋ฆฌ๋ ๋์ฝ๋ฉ, ์์ ๋จ์, ๊ณต๋ฐฑ ๋ฌด์.
- KWS: ํ๊ฐ์
๋ง๋ค ์์ฃผ ๋์ค๋ 3์์ ์ด์ ๋ช
์ฌ 20๊ฐ๋ฅผ ํค์๋๋ก ์ผ์ต๋๋ค(icefall ๋ฐฉ์).
- FRR์ ๋์น ์์ฑ ๋น์จ, FA/h๋ ํค์๋๊ฐ ์๋ ์์ฑ 1์๊ฐ๋น ์คํ ์์ ๋๋ค.
- FRR@1FA/h๋ ์คํ์ด ์๊ฐ๋น 1ํ ์ดํ๊ฐ ๋๋ ๊ฐ์ฅ ๋ฎ์ ๋ฌธํฑ๊ฐ์์์ FRR์ ๋๋ค.
- AI Hub ํ๊ฐ์
: ๋ ์ธํธ ๋ชจ๋ ๊ฒ์ฆ ์ธํธ์์ 3,000๊ฐ ๋ฐํ๋ฅผ ๋ฝ์์ต๋๋ค.
- ๋ช ๋ น์ด ํ๊ฐ์ ์ ํ์ต๊ณผ ๊ฒน์น์ง ์๋ ํ์๋ง ์ผ์ต๋๋ค.
- ํ๊ฐ ๋ฌธ์ฅ๊ณผ ๊ฐ์ ๋ฌธ์ฅ์ ๋ฐํ๋ ํ์ต ๋ฐ์ดํฐ์์ ๋ชจ๋ ๋บ์ต๋๋ค.
- ์คํ ํ๊ฐ ์์ฑ์ด 1~3.5์๊ฐ๋ฟ์ด๋ผ FRR@1FA/h์ FRR@0.1FA/h๋ ์คํ ํ๋ ๊ฑด์ ํฌ๊ฒ ํ๋ค๋ฆฝ๋๋ค. ฯ0.35 ์์น๋ฅผ ํจ๊ป ๋ณด์ธ์.
ํ๊ณ
- ์์ ํ๊ฒฝ์ ์คํ์ด ๋ง์ต๋๋ค. ฯ0.35์์ ์๊ฐ๋น 32ํ์ ๋๋ค. ์ค์ ์๋น์ค์์๋ ๋ฌธํฑ๊ฐ์ ์ฌ๋ฆฌ๊ฑฐ๋ 2๋จ๊ณ ๊ฒ์ฆ์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ํ์ต ๋ฐ์ดํฐ์ ์ด๋ฆ ํํ์ ๋๋ฆฝ๋๋ค. ๋ช ๋ น์ด ๋๋ณธ์ ์์ ์ด๋ฆ์ผ๋ก ์์ฃผ ๋์ค๋ "ํ๊ธธ๋"์ด ๋ฌด๊ดํ ๋ฐํ์์ ๊ฒ์ถ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
- ๋ฐ์์ด ๋น์ทํ ๋จ์ด๋ฅผ ํท๊ฐ๋ฆฝ๋๋ค. "๋์ ๋ฐ๋ฉ"์ "๋์๊ด"์ผ๋ก, "์งํ ์ผ ์ธต"์ "์งํ์ฒ "๋ก ์ก๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
- ํ๊ธฐ๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํค์๋๋ก ๋ด ๋๋ค. "ํฐ๋น"์ "ํฐ๋ธ์ด"๋ ๋ฐ๋ก ๋ฑ๋กํด์ผ ํฉ๋๋ค.
- ์ซ์์ ์๋ฌธ์ ํ์ต ์ ์ฌ์์ ๋บ์ต๋๋ค. ์ซ์๋ "์ผ ์ธต"์ฒ๋ผ ํ๊ธ๋ก ์ ์ ํค์๋๋ฅผ ์ฐ์ธ์.
ํ์ต
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ๊ตฌ์กฐ | ์ธ์ฝ๋ 6์คํ ร 2์ธต, dim 128, feedforward 192 / ๋์ฝ๋ยท์กฐ์ด๋ 192 |
| ํ๋ผ๋ฏธํฐ | 6.61M (ํ์ต ์ ์ฉ ์ธต ํฌํจ) |
| ๋ฐ์ดํฐ | 5,559์๊ฐ, 4,189,980๊ฐ ๋ฐํ |
| ์ฆ๊ฐ | MUSAN CutMix(p=0.5, SNR 10~20 dB), SpecAugment |
| ํ์ต | 12 epoch, fp16, RTX 5090 1์ฅ, epoch๋น ์ฝ 1์๊ฐ 45๋ถ |
| ๋ชจ๋ธ ์ ํ | KsponSpeech dev CER๋ก epoch 12(ํ๊ท 1) ์ ํ |
| ๋ฐ์ดํฐ | ์๊ฐ |
|---|---|
| AI Hub ์์ ๋ํ(์ผ๋ฐ๋จ์ฌ) | 3,201 h |
| KsponSpeech | 929 h |
| AI Hub ๋ช ๋ น์ด ์ธ์์ฉ ์์ ํ๊ฒฝ (๋ฌธ์ฅ๋น ์ต๋ 20ํ) | 696 h |
| AI Hub ๋ฌธํ์ํ ๋ญ์กยท๋ญ๋ | 370 h |
| AI Hub ๋ช ๋ น์ด(์ผ๋ฐ๋จ์ฌ) (๋ฌธ์ฅ๋น ์ต๋ 20ํ) | 184 h |
| Zeroth-Korean (์๋ ๋ณํ ํฌํจ) | 156 h |
| FLEURS ko_kr (์๋ ๋ณํ ํฌํจ) | 22 h |
์์ธํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฌํ ๋ฐฉ๋ฒ์ ํ์ต ์ฝ๋ ์ ์ฅ์์ README์ ์์ต๋๋ค.
๋ผ์ด์ ์ค์ ์ถ์ฒ
- ๋ชจ๋ธ๊ณผ ์์ ์ฝ๋๋ Apache License 2.0์ผ๋ก ๋ฐฐํฌํฉ๋๋ค.
- ํ์ต ๋ฐ์ดํฐ๋ ํฌํจํ์ง ์์ต๋๋ค. ํ์ต์๋ AI Hub ๋ฐ์ดํฐ(KsponSpeech ํฌํจ), Zeroth-Korean, FLEURS๋ฅผ ์ผ์ต๋๋ค.
- ํ์ต ์ฝ๋๋ icefall(Apache 2.0) ๋ ์ํผ๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค.
test_wavs/์ ์์ฑ์ FLEURS(CC BY 4.0) ko_kr test ์ธํธ์์ ๊ฐ์ ธ์์ต๋๋ค.
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐ Ask for provider support