์ถ๋ก
Fish Audio S2 ๋ชจ๋ธ์ ํฐ ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ(VRAM)๊ฐ ํ์ํฉ๋๋ค. ์ถ๋ก ์ ์ํด ์ต์ 24GB ์ด์์ GPU๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๊ฐ์ค์น ๋ค์ด๋ก๋
๋จผ์ ๋ชจ๋ธ ๊ฐ์ค์น๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค:
hf download fishaudio/s2-pro --local-dir checkpoints/s2-pro
๋ช ๋ น์ค ์ถ๋ก
!!! note ๋ชจ๋ธ์ด ์์์ ๋ฌด์์๋ก ์ ํํ๊ฒ ํ๋ ค๋ฉด ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค.
1. ์ฐธ์กฐ ์ค๋์ค์์ VQ ํ ํฐ ๊ฐ์ ธ์ค๊ธฐ
python fish_speech/models/dac/inference.py \
-i "test.wav" \
--checkpoint-path "checkpoints/s2-pro/codec.pth"
fake.npy์ fake.wav ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
2. ํ ์คํธ์์ Semantic ํ ํฐ ์์ฑ:
python fish_speech/models/text2semantic/inference.py \
--text "๋ณํํ๋ ค๋ ํ
์คํธ" \
--prompt-text "์ฐธ์กฐ ํ
์คํธ" \
--prompt-tokens "fake.npy" \
# --compile
์ด ๋ช
๋ น์ ์์
๋๋ ํ ๋ฆฌ์ codes_N ํ์ผ์ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ N์ 0๋ถํฐ ์์ํ๋ ์ ์์
๋๋ค.
!!! note
๋ ๋น ๋ฅธ ์ถ๋ก ์ ์ํด CUDA ์ปค๋์ ๋ณํฉํ๋ --compile์ ์ฌ์ฉํ๊ณ ์ถ์ ์ ์์ง๋ง, ๋น์ฌ์ sglang ์ถ๋ก ๊ฐ์ ์ต์ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ๊ถ์ฅํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์์ ์ฌ์ฉํ ๊ณํ์ด ์๋ค๋ฉด --compile ๋งค๊ฐ๋ณ์๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
!!! info
bf16์ ์ง์ํ์ง ์๋ GPU์ ๊ฒฝ์ฐ --half ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค.
3. ์๋งจํฑ ํ ํฐ์์ ์์ฑ ์์ฑ:
python fish_speech/models/dac/inference.py \
-i "codes_0.npy" \
์ดํ fake.wav ํ์ผ์ ์ป๊ฒ ๋ฉ๋๋ค.
WebUI ์ถ๋ก
1. Gradio WebUI
ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๊ธฐ์กด์ Gradio WebUI๋ฅผ ๋ณด์กดํ๊ณ ์์ต๋๋ค.
python tools/run_webui.py # ๊ฐ์์ด ํ์ํ ๊ฒฝ์ฐ --compile
2. Awesome WebUI
Awesome WebUI๋ TypeScript ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋ ํ๋์ ์ธ ์น ์ธํฐํ์ด์ค๋ก, ๋ ํ๋ถํ ๊ธฐ๋ฅ๊ณผ ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
WebUI ๋น๋:
๋ก์ปฌ ๋๋ ์๋ฒ์ Node.js์ npm์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
awesome_webui๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค:cd awesome_webui- ์์กด์ฑ ์ค์น:
npm install - WebUI ๋น๋:
npm run build
๋ฐฑ์๋ ์๋ฒ ์คํ:
WebUI ๋น๋๊ฐ ์๋ฃ๋๋ฉด ํ๋ก์ ํธ ๋ฃจํธ๋ก ๋์๊ฐ API ์๋ฒ๋ฅผ ์คํํฉ๋๋ค:
python tools/api_server.py --listen 0.0.0.0:8888 --compile
์ ์:
์๋ฒ๊ฐ ์คํ๋ ํ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๋ค์ ์ฃผ์๋ก ์ ์ํ๋ฉด ์ฒดํํ ์ ์์ต๋๋ค:
http://localhost:8888/ui