μΆλ‘
μΆλ‘ μ λͺ λ Ήμ€, HTTP API, κ·Έλ¦¬κ³ μΉ UIμμ μ§μλ©λλ€.
!!! note μ 체 μΆλ‘ κ³Όμ μ λ€μμ μ¬λ¬ λ¨κ³λ‘ ꡬμ±λ©λλ€:
1. VQGANμ μ¬μ©νμ¬ μ½ 10μ΄ λΆλμ μμ±μ μΈμ½λ©ν©λλ€.
2. μΈμ½λ©λ μλ§¨ν± ν ν°κ³Ό ν΄λΉ ν
μ€νΈλ₯Ό μμλ‘ μΈμ΄ λͺ¨λΈμ μ
λ ₯ν©λλ€.
3. μλ‘μ΄ ν
μ€νΈλ₯Ό μ
λ ₯νλ©΄, λͺ¨λΈμ΄ ν΄λΉνλ μλ§¨ν± ν ν°μ μμ±ν©λλ€.
4. μμ±λ μλ§¨ν± ν ν°μ VITS / VQGANμ μ
λ ₯νμ¬ μμ±μ λμ½λ©νκ³ μμ±ν©λλ€.
λͺ¨λΈ λ€μ΄λ‘λ
νμν vqgan
λ° llama
λͺ¨λΈμ Hugging Face 리ν¬μ§ν 리μμ λ€μ΄λ‘λνμΈμ.
huggingface-cli download fishaudio/fish-speech-1.5 --local-dir checkpoints/fish-speech-1.5
λͺ λ Ήμ€ μΆλ‘
1. μμ±μμ ν둬ννΈ μμ±:
!!! note λͺ¨λΈμ΄ μμμ 무μμλ‘ μ ννλλ‘ νλ €λ©΄ μ΄ λ¨κ³λ₯Ό 건λλΈ μ μμ΅λλ€.
!!! warning "ν₯ν λ²μ κ²½κ³ " μλ κ²½λ‘(tools/vqgan/infernce.py)μμ μ κ·Όν μ μλ μΈν°νμ΄μ€λ μ μ§νμ§λ§, μ΄ μΈν°νμ΄μ€λ ν₯ν λͺλͺ λ²μ μμ μμ λ μ μμ΅λλ€. κ°λ₯ν ν 빨리 μ½λλ₯Ό λ³κ²½νμμμ€.
python fish_speech/models/vqgan/inference.py \
-i "paimon.wav" \
--checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
μ΄ λͺ
λ Ήμ μ€ννλ©΄ fake.npy
νμΌμ μ»κ² λ©λλ€.
2. ν μ€νΈμμ μλ§¨ν± ν ν° μμ±:
!!! warning "ν₯ν λ²μ κ²½κ³ " μλ κ²½λ‘(tools/llama/generate.py)μμ μ κ·Όν μ μλ μΈν°νμ΄μ€λ μ μ§νμ§λ§, μ΄ μΈν°νμ΄μ€λ ν₯ν λͺλͺ λ²μ μμ μμ λ μ μμ΅λλ€. κ°λ₯ν ν 빨리 μ½λλ₯Ό λ³κ²½νμμμ€.
python fish_speech/models/text2semantic/inference.py \
--text "λ³νν ν
μ€νΈ" \
--prompt-text "μ°Έκ³ ν ν
μ€νΈ" \
--prompt-tokens "fake.npy" \
--checkpoint-path "checkpoints/fish-speech-1.5" \
--num-samples 2 \
--compile
μ΄ λͺ
λ Ήμ μ€ννλ©΄ μμ
λλ ν 리μ codes_N
νμΌμ΄ μμ±λλ©°, Nμ 0λΆν° μμνλ μ μμ
λλ€.
!!! note
λΉ λ₯Έ μΆλ‘ μ μν΄ --compile
μ΅μ
μ μ¬μ©νμ¬ CUDA 컀λμ κ²°ν©ν μ μμ΅λλ€ (~μ΄λΉ 30 ν ν° -> ~μ΄λΉ 500 ν ν°).
--compile
맀κ°λ³μλ₯Ό μ£Όμ μ²λ¦¬νμ¬ κ°μν μ΅μ
μ μ¬μ©νμ§ μμ μλ μμ΅λλ€.
!!! info
bf16μ μ§μνμ§ μλ GPUμ κ²½μ° --half
맀κ°λ³μλ₯Ό μ¬μ©ν΄μΌ ν μ μμ΅λλ€.
3. μλ§¨ν± ν ν°μμ μμ± μμ±:
VQGAN λμ½λ
!!! warning "ν₯ν λ²μ κ²½κ³ " μλ κ²½λ‘(tools/vqgan/infernce.py)μμ μ κ·Όν μ μλ μΈν°νμ΄μ€λ μ μ§νμ§λ§, μ΄ μΈν°νμ΄μ€λ ν₯ν λͺλͺ λ²μ μμ μμ λ μ μμ΅λλ€. κ°λ₯ν ν 빨리 μ½λλ₯Ό λ³κ²½νμμμ€.
python fish_speech/models/vqgan/inference.py \
-i "codes_0.npy" \
--checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth"
HTTP API μΆλ‘
μΆλ‘ μ μν HTTP APIλ₯Ό μ 곡νκ³ μμ΅λλ€. μλμ λͺ λ Ήμ΄λ‘ μλ²λ₯Ό μμν μ μμ΅λλ€:
python -m tools.api_server \
--listen 0.0.0.0:8080 \
--llama-checkpoint-path "checkpoints/fish-speech-1.5" \
--decoder-checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" \
--decoder-config-name firefly_gan_vq
μΆλ‘ μλλ₯Ό λμ΄κ³ μΆλ€λ©΄ --compile
맀κ°λ³μλ₯Ό μΆκ°ν μ μμ΅λλ€.
μ΄ν, http://127.0.0.1:8080/ μμ APIλ₯Ό νμΈνκ³ ν μ€νΈν μ μμ΅λλ€.
μλλ tools/api_client.py
λ₯Ό μ¬μ©νμ¬ μμ²μ 보λ΄λ μμμ
λλ€.
python -m tools.api_client \
--text "μ
λ ₯ν ν
μ€νΈ" \
--reference_audio "μ°Έκ³ μμ± κ²½λ‘" \
--reference_text "μ°Έκ³ μμ±μ ν
μ€νΈ λ΄μ©" \
--streaming True
μ λͺ λ Ήμ μ°Έκ³ μμ± μ 보λ₯Ό λ°νμΌλ‘ μνλ μμ±μ ν©μ±νκ³ , μ€νΈλ¦¬λ° λ°©μμΌλ‘ λ°νν©λλ€.
λ€μ μμλ μ¬λ¬ κ°μ μ°Έκ³ μμ± κ²½λ‘μ ν μ€νΈλ₯Ό νκΊΌλ²μ μ¬μ©ν μ μμμ 보μ¬μ€λλ€. λͺ λ Ήμμ 곡백μΌλ‘ ꡬλΆνμ¬ μ λ ₯ν©λλ€.
python -m tools.api_client \
--text "μ
λ ₯ν ν
μ€νΈ" \
--reference_audio "μ°Έκ³ μμ± κ²½λ‘1" "μ°Έκ³ μμ± κ²½λ‘2" \
--reference_text "μ°Έκ³ μμ± ν
μ€νΈ1" "μ°Έκ³ μμ± ν
μ€νΈ2"\
--streaming False \
--output "generated" \
--format "mp3"
μ λͺ
λ Ήμ΄λ μ¬λ¬ μ°Έκ³ μμ± μ 보λ₯Ό λ°νμΌλ‘ MP3
νμμ μμ±μ ν©μ±νμ¬, νμ¬ λλ ν 리μ generated.mp3
λ‘ μ μ₯ν©λλ€.
--reference_audio
μ --reference_text
λμ μ --reference_id
(νλλ§ μ¬μ© κ°λ₯)λ₯Ό μ¬μ©ν μ μμ΅λλ€. νλ‘μ νΈ λ£¨νΈ λλ ν 리μ references/<your reference_id>
ν΄λλ₯Ό λ§λ€μ΄ ν΄λΉ μμ±κ³Ό μ£Όμ ν
μ€νΈλ₯Ό λ£μ΄μΌ ν©λλ€. μ°Έκ³ μμ±μ μ΅λ 90μ΄κΉμ§ μ§μλ©λλ€.
!!! info
μ 곡λλ νλΌλ―Έν°λ python -m tools.api_client -h
λ₯Ό μ¬μ©νμ¬ νμΈν μ μμ΅λλ€.
GUI μΆλ‘
WebUI μΆλ‘
λ€μ λͺ λ ΉμΌλ‘ WebUIλ₯Ό μμν μ μμ΅λλ€:
python -m tools.run_webui \
--llama-checkpoint-path "checkpoints/fish-speech-1.5" \
--decoder-checkpoint-path "checkpoints/fish-speech-1.5/firefly-gan-vq-fsq-8x1024-21hz-generator.pth" \
--decoder-config-name firefly_gan_vq
μΆλ‘ μλλ₯Ό λμ΄κ³ μΆλ€λ©΄
--compile
맀κ°λ³μλ₯Ό μΆκ°ν μ μμ΅λλ€.
!!! note
λΌλ²¨ νμΌκ³Ό μ°Έκ³ μμ± νμΌμ 미리 λ©μΈ λλ ν 리μ references
ν΄λμ μ μ₯ν΄ λλ©΄, WebUIμμ λ°λ‘ νΈμΆν μ μμ΅λλ€. (ν΄λΉ ν΄λλ μ§μ μμ±ν΄μΌ ν©λλ€.)
!!! note
WebUIλ₯Ό ꡬμ±νκΈ° μν΄ GRADIO_SHARE
, GRADIO_SERVER_PORT
, GRADIO_SERVER_NAME
κ³Ό κ°μ Gradio νκ²½ λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ¦κΈ°μΈμ!