Silero ์Œ์„ฑ ํ•ฉ์„ฑ ์‹œ์Šคํ…œ์˜ ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค

Silero Text-to-Speech ์‹ ๊ฒฝ๋ง ์Œ์„ฑ ํ•ฉ์„ฑ ์‹œ์Šคํ…œ์˜ ์ƒˆ๋กœ์šด ๊ณต๊ฐœ ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๊ธฐ์—…์˜ ์ƒ์šฉ ์†”๋ฃจ์…˜๋ณด๋‹ค ์—ด๋“ฑํ•˜์ง€ ์•Š๊ณ  ๊ฐ’๋น„์‹ผ ์„œ๋ฒ„ ์žฅ๋น„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„๋Œ€์ ์ธ ๊ณ ํ’ˆ์งˆ ์Œ์„ฑ ํ•ฉ์„ฑ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ธ์€ GNU AGPL ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ํšŒ์‚ฌ๋Š” ๋ชจ๋ธ ๊ต์œก ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ํ•˜๋ ค๋ฉด PyTorch์™€ ONNX ํ˜•์‹์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Silero์˜ ์Œ์„ฑ ํ•ฉ์„ฑ์€ ์‹ฌ์ธต์ ์œผ๋กœ ์ˆ˜์ •๋œ ์ตœ์‹  ์‹ ๊ฒฝ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋””์ง€ํ„ธ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์˜ ์‚ฌ์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์Œ์„ฑ ํ•ฉ์„ฑ์„ ์œ„ํ•œ ์ตœ์‹  ์‹ ๊ฒฝ๋ง ์†”๋ฃจ์…˜์˜ ์ฃผ์š” ๋ฌธ์ œ์ ์€ ์œ ๋ฃŒ ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ ๊ณต์šฉ ์ œํ’ˆ์€ ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋†’๊ฑฐ๋‚˜ ํ’ˆ์งˆ์ด ๋‚ฎ๊ฑฐ๋‚˜ ์™„์ „ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œํ’ˆ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ƒˆ๋กœ์šด ์—”๋“œํˆฌ์—”๋“œ ํ•ฉ์„ฑ ์•„ํ‚คํ…์ฒ˜ ์ค‘ ํ•˜๋‚˜์ธ VITS๋ฅผ ํ•ฉ์„ฑ ๋ชจ๋“œ(์ฆ‰, ๋ชจ๋ธ ํŠธ๋ ˆ์ด๋‹์šฉ์ด ์•„๋‹˜)์—์„œ ์›ํ™œํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด 16GB ์ด์ƒ์˜ VRAM์„ ๊ฐ–์ถ˜ ๋น„๋””์˜ค ์นด๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ถ”์„ธ์™€๋Š” ๋‹ฌ๋ฆฌ Silero ์†”๋ฃจ์…˜์€ AVX1 ์ง€์นจ์ด ์žˆ๋Š” Intel ํ”„๋กœ์„ธ์„œ์˜ 86 x2 ์Šค๋ ˆ๋“œ์—์„œ๋„ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. 4๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ ์Šค๋ ˆ๋“œ์—์„œ ํ•ฉ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด 30kHz ํ•ฉ์„ฑ ๋ชจ๋“œ์—์„œ๋Š” ์ดˆ๋‹น 60~8์ดˆ, 24kHz ๋ชจ๋“œ์—์„œ๋Š” 15~20์ดˆ, 48kHz ๋ชจ๋“œ์—์„œ๋Š” ์•ฝ 10์ดˆ ๋™์•ˆ ํ•ฉ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด Silero ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  • ๋ชจ๋ธ ํฌ๊ธฐ๊ฐ€ 2MB๋กœ 50๋ฐฐ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ์€ ์ผ์‹œ ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 4๊ฐœ์˜ ๊ณ ํ’ˆ์งˆ ๋Ÿฌ์‹œ์•„์–ด ์Œ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐ ๋ฌดํ•œํ•œ ์ˆ˜์˜ ์ž„์˜ ์Œ์„ฑ). ๋ฐœ์Œ ์˜ˆ;
  • ๋ชจ๋ธ์€ 10๋ฐฐ ๋” ๋นจ๋ผ์กŒ์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด 24kHz ๋ชจ๋“œ์—์„œ๋Š” 20๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ ์Šค๋ ˆ๋“œ์—์„œ ์ดˆ๋‹น ์ตœ๋Œ€ 4์ดˆ์˜ ์˜ค๋””์˜ค๋ฅผ ํ•ฉ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ์–ธ์–ด์— ๋Œ€ํ•œ ๋ชจ๋“  ์Œ์„ฑ ์˜ต์…˜์ด ํ•˜๋‚˜์˜ ๋ชจ๋ธ์— ํŒจํ‚ค์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ์€ ํ…์ŠคํŠธ์˜ ์ „์ฒด ๋‹จ๋ฝ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ SSML ํƒœ๊ทธ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • ํ•ฉ์„ฑ์€ 8, 24, 48kHz ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ์ƒ˜ํ”Œ๋ง ์ฃผํŒŒ์ˆ˜์—์„œ ๋™์‹œ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • โ€œ์•„์ด๋“ค์˜ ๋ฌธ์ œโ€๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ์•ˆ์ •์„ฑ๊ณผ ๋‹จ์–ด ๋ˆ„๋ฝ;
  • ์•…์„ผํŠธ ์ž๋™ ๋ฐฐ์น˜ ๋ฐ ๋ฌธ์ž "ะต" ๋ฐฐ์น˜๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ตœ์‹  ๋ฒ„์ „์˜ ํ•ฉ์„ฑ์—๋Š” ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋œ 4๊ฐœ์˜ ์Œ์„ฑ์ด ๊ณต๊ฐœ๋˜์–ด ์žˆ์ง€๋งŒ ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ๋‹ค์Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ๋‹ค์Œ ๋ฒ„์ „์ด ๊ฒŒ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

  • ํ•ฉ์„ฑ ์†๋„๋Š” 2-4๋ฐฐ ๋” ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • CIS ์–ธ์–ด์— ๋Œ€ํ•œ ํ•ฉ์„ฑ ๋ชจ๋ธ์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค: ์นผ๋ฏธํฌ์–ด, ํƒ€ํƒ€๋ฅด์–ด, ์šฐ์ฆˆ๋ฒ ํฌ์–ด ๋ฐ ์šฐํฌ๋ผ์ด๋‚˜์–ด;
  • ์œ ๋Ÿฝ โ€‹โ€‹์–ธ์–ด์šฉ ๋ชจ๋ธ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • ์ธ๋„์–ด ๋ชจ๋ธ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • ์˜์–ด ๋ชจ๋ธ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

Silero ํ•ฉ์„ฑ์— ๋‚ด์žฌ๋œ ์‹œ์Šคํ…œ ๊ณ ์žฅ ์ค‘ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • RHVoice์™€ ๊ฐ™์€ ๊ธฐ์กด ํ•ฉ์„ฑ ์†”๋ฃจ์…˜๊ณผ ๋‹ฌ๋ฆฌ Silero ํ•ฉ์„ฑ์—๋Š” SAPI ํ†ตํ•ฉ, ์„ค์น˜๊ฐ€ ์‰ฌ์šด ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” Windows ๋ฐ Android์šฉ ํ†ตํ•ฉ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์˜ ์†๋„๋Š” ์œ ๋ก€์—†์ด ๋†’์ง€๋งŒ ๊ณ ํ’ˆ์งˆ์˜ ์•ฝํ•œ ํ”„๋กœ์„ธ์„œ์—์„œ ์ฆ‰์„ ํ•ฉ์„ฑ์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๋™ ์•…์„ผํŠธ ์†”๋ฃจ์…˜์€ ๋™ํ˜•์ด์˜์–ด(์„ฑ ๋ฐ ์„ฑ ๊ฐ™์€ ๋‹จ์–ด)๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์‹ค์ˆ˜๋ฅผ ๋ฒ”ํ•˜์ง€๋งŒ ์ด๋Š” ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜์ •๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • ํ˜„์žฌ ๋ฒ„์ „์˜ ํ•ฉ์„ฑ์€ ๋ชจ๋ธ ๋‚ด๋ถ€ ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์–‘์žํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— AVX2 ๋ช…๋ น์ด ์—†๋Š” ํ”„๋กœ์„ธ์„œ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋˜๋Š” ํŠน๋ณ„ํžˆ PyTorch ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ).
  • ํ˜„์žฌ ๋ฒ„์ „์˜ ํ•ฉ์„ฑ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์ผ PyTorch ์ข…์†์„ฑ์ด ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๋‚ด์šฉ์€ ๋ชจ๋ธ๊ณผ JIT ํŒจํ‚ค์ง€ ๋‚ด์— "ํ•˜๋“œ์™€์ด์–ด"๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๊ฒŒ์‹œ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค๋ฅธ ์–ธ์–ด์šฉ PyTorch ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋„ ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Libtorch๋Š” ONNX ๋Ÿฐํƒ€์ž„๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ถ€ํ”ผ๊ฐ€ ํฌ์ง€๋งŒ ๋ชจ๋ธ์˜ ONNX ๋ฒ„์ „์€ ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€