Erythrocyte3803
Add application file
e90f765

GPT-SoVITS-WebUI

์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋กœ ์Œ์„ฑ ๋ณ€ํ™˜ ๋ฐ ์Œ์„ฑ ํ•ฉ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ WebUI.

madewithlove


Open In Colab License Huggingface Discord

English | ไธญๆ–‡็ฎ€ไฝ“ | ๆ—ฅๆœฌ่ชž | ํ•œ๊ตญ์–ด | Tรผrkรงe


๊ธฐ๋Šฅ:

  1. ์ œ๋กœ์ƒท ํ…์ŠคํŠธ ์Œ์„ฑ ๋ณ€ํ™˜ (TTS): 5์ดˆ์˜ ์Œ์„ฑ ์ƒ˜ํ”Œ์„ ์ž…๋ ฅํ•˜๋ฉด ์ฆ‰์‹œ ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ TTS: 1๋ถ„์˜ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ ๋ชจ๋ธ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜์—ฌ ์Œ์„ฑ ์œ ์‚ฌ๋„์™€ ์‹ค์ œ๊ฐ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋‹ค๊ตญ์–ด ์ง€์›: ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์…‹๊ณผ ๋‹ค๋ฅธ ์–ธ์–ด์˜ ์ถ”๋ก ์„ ์ง€์›ํ•˜๋ฉฐ, ํ˜„์žฌ ์˜์–ด, ์ผ๋ณธ์–ด, ์ค‘๊ตญ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  4. WebUI ๋„๊ตฌ: ์Œ์„ฑ ๋ฐ˜์ฃผ ๋ถ„๋ฆฌ, ์ž๋™ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์…‹ ๋ถ„ํ• , ์ค‘๊ตญ์–ด ์ž๋™ ์Œ์„ฑ ์ธ์‹(ASR) ๋ฐ ํ…์ŠคํŠธ ์ฃผ์„ ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์ดˆ๋ณด์ž๊ฐ€ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์…‹๊ณผ GPT/SoVITS ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

๋ฐ๋ชจ ๋น„๋””์˜ค๋ฅผ ํ™•์ธํ•˜์„ธ์š”! demo video

๋ณด์ง€ ๋ชปํ•œ ๋ฐœํ™”์ž์˜ ํ“จ์ƒท(few-shot) ํŒŒ์ธํŠœ๋‹ ๋ฐ๋ชจ:

https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb

์‚ฌ์šฉ์ž ์„ค๋ช…์„œ: ็ฎ€ไฝ“ไธญๆ–‡ | English

์„ค์น˜

ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ํ™˜๊ฒฝ

  • Python 3.9, PyTorch 2.0.1, CUDA 11
  • Python 3.10.13, PyTorch 2.1.2, CUDA 12.3
  • Python 3.9, Pytorch 2.2.2, macOS 14.4.1 (Apple Slilicon)
  • Python 3.9, PyTorch 2.2.2, CPU ์žฅ์น˜

์ฐธ๊ณ : numba==0.56.4 ๋Š” python<3.11 ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Windows

Windows ์‚ฌ์šฉ์ž๋ผ๋ฉด (win>=10์—์„œ ํ…Œ์ŠคํŠธ๋จ), ํ†ตํ•ฉ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ ํ›„ ์••์ถ•์„ ํ’€๊ณ  go-webui.bat ํŒŒ์ผ์„ ๋”๋ธ” ํด๋ฆญํ•˜๋ฉด GPT-SoVITS-WebUI๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux

conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
bash install.sh

macOS

์ฃผ์˜: Mac์—์„œ GPU๋กœ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์€ ๋‹ค๋ฅธ OS์—์„œ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์— ๋น„ํ•ด ํ’ˆ์งˆ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „๊นŒ์ง€ MacOS์—์„  CPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ›ˆ๋ จ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. xcode-select --install์„ ์‹คํ–‰ํ•˜์—ฌ Xcode ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”.
  2. brew install ffmpeg ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ FFmpeg๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์œ„์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•œ ํ›„, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”.
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits

pip install -r requirements.txt

์ˆ˜๋™ ์„ค์น˜

์˜์กด์„ฑ ์„ค์น˜

pip install -r requirements.txt

FFmpeg ์„ค์น˜

Conda ์‚ฌ์šฉ์ž
conda install ffmpeg
Ubuntu/Debian ์‚ฌ์šฉ์ž
sudo apt install ffmpeg
sudo apt install libsox-dev
conda install -c conda-forge 'ffmpeg<7'
Windows ์‚ฌ์šฉ์ž

ffmpeg.exe์™€ ffprobe.exe๋ฅผ GPT-SoVITS root ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

Mac ์‚ฌ์šฉ์ž
brew install ffmpeg

Docker์—์„œ ์‚ฌ์šฉ

docker-compose.yaml ์„ค์ •

  1. ์ด๋ฏธ์ง€ ํƒœ๊ทธ: ์ฝ”๋“œ ์ €์žฅ์†Œ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ํŒจํ‚ค์ง€๊ฐ€ ๋Š๋ฆฌ๊ฒŒ ๋นŒ๋“œ๋˜๊ณ  ํ…Œ์ŠคํŠธ๋˜๋ฏ€๋กœ, ํ˜„์žฌ ๋นŒ๋“œ๋œ ์ตœ์‹  ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ Docker Hub์—์„œ ํ™•์ธํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

  • is_half: ๋ฐ˜์ •๋ฐ€/๋ฐฐ์ •๋ฐ€ ์ œ์–ด. "SSL ์ถ”์ถœ" ๋‹จ๊ณ„์—์„œ 4-cnhubert/5-wav32k ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ƒํ™ฉ์— ๋”ฐ๋ผ True ๋˜๋Š” False๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ณผ๋ฅจ ์„ค์ •, ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ /workspace๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ docker-compose.yaml์—๋Š” ์‹ค์ œ ์˜ˆ์ œ๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. shm_size: Windows์˜ Docker Desktop์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ์ž‘์•„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  3. deploy ์„น์…˜์˜ gpu ๊ด€๋ จ ๋‚ด์šฉ์€ ์‹œ์Šคํ…œ ๋ฐ ์‹ค์ œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

docker compose๋กœ ์‹คํ–‰

docker compose -f "docker-compose.yaml" up -d

docker ๋ช…๋ น์œผ๋กœ ์‹คํ–‰

์œ„์™€ ๋™์ผํ•˜๊ฒŒ ์‹ค์ œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•œ ๋‹ค์Œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-DockerTest\output:/workspace/output --volume=G:\GPT-SoVITS-DockerTest\logs:/workspace/logs --volume=G:\GPT-SoVITS-DockerTest\SoVITS_weights:/workspace/SoVITS_weights --workdir=/workspace -p 9880:9880 -p 9871:9871 -p 9872:9872 -p 9873:9873 -p 9874:9874 --shm-size="16G" -d breakstring/gpt-sovits:xxxxx

์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ

GPT-SoVITS Models์—์„œ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  GPT_SoVITS\pretrained_models์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

์ค‘๊ตญ์–ด ์ž๋™ ์Œ์„ฑ ์ธ์‹(ASR), ์Œ์„ฑ ๋ฐ˜์ฃผ ๋ถ„๋ฆฌ ๋ฐ ์Œ์„ฑ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด Damo ASR Model, Damo VAD Model ๋ฐ Damo Punc Model์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  tools/asr/models์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

UVR5(์Œ์„ฑ/๋ฐ˜์ฃผ ๋ถ„๋ฆฌ ๋ฐ ์ž”ํ–ฅ ์ œ๊ฑฐ)๋ฅผ ์œ„ํ•ด UVR5 Weights์—์„œ ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  tools/uvr5/uvr5_weights์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹

ํ…์ŠคํŠธ ์Œ์„ฑ ํ•ฉ์„ฑ(TTS) ์ฃผ์„ .list ํŒŒ์ผ ํ˜•์‹:

vocal_path|speaker_name|language|text

์–ธ์–ด ์‚ฌ์ „:

  • 'zh': ์ค‘๊ตญ์–ด
  • 'ja': ์ผ๋ณธ์–ด
  • 'en': ์˜์–ด

์˜ˆ์‹œ:

D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.

ํ•  ์ผ ๋ชฉ๋ก

  • ์ตœ์šฐ์„ ์ˆœ์œ„:

    • ์ผ๋ณธ์–ด ๋ฐ ์˜์–ด ์ง€์—ญํ™”.
    • ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ.
    • ์ผ๋ณธ์–ด ๋ฐ ์˜์–ด ๋ฐ์ดํ„ฐ์…‹ ๋ฏธ์„ธ ์กฐ์ • ํ›ˆ๋ จ.
  • ๊ธฐ๋Šฅ:

    • ์ œ๋กœ์ƒท ์Œ์„ฑ ๋ณ€ํ™˜ (5์ดˆ) / ์†Œ๋Ÿ‰์˜ ์Œ์„ฑ ๋ณ€ํ™˜ (1๋ถ„).
    • TTS ์†๋„ ์ œ์–ด.
    • ํ–ฅ์ƒ๋œ TTS ๊ฐ์ • ์ œ์–ด.
    • SoVITS ํ† ํฐ ์ž…๋ ฅ์„ ๋‹จ์–ด ํ™•๋ฅ  ๋ถ„ํฌ๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”.
    • ์˜์–ด ๋ฐ ์ผ๋ณธ์–ด ํ…์ŠคํŠธ ํ”„๋ก ํŠธ ์—”๋“œ ๊ฐœ์„ .
    • ์ž‘์€ ํฌ๊ธฐ์™€ ํฐ ํฌ๊ธฐ์˜ TTS ๋ชจ๋ธ ๊ฐœ๋ฐœ.
    • Colab ์Šคํฌ๋ฆฝํŠธ.
    • ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์…‹ ํ™•์žฅ (2k ์‹œ๊ฐ„์—์„œ 10k ์‹œ๊ฐ„).
    • ๋” ๋‚˜์€ sovits ๊ธฐ๋ณธ ๋ชจ๋ธ (ํ–ฅ์ƒ๋œ ์˜ค๋””์˜ค ํ’ˆ์งˆ).
    • ๋ชจ๋ธ ๋ธ”๋ Œ๋”ฉ.

(์ถ”๊ฐ€์ ์ธ) ๋ช…๋ น์ค„์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ UVR5์šฉ WebUI ์—ด๊ธฐ

python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>

๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ UVR ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์•„๋ž˜ ํ˜•์‹์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. ์ด๋Š” ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด mdxnet์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision 

๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์„ธํŠธ์˜ ์˜ค๋””์˜ค ๋ถ„ํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

python audio_slicer.py \
    --input_path "<path_to_original_audio_file_or_directory>" \
    --output_root "<directory_where_subdivided_audio_clips_will_be_saved>" \
    --threshold <volume_threshold> \
    --min_length <minimum_duration_of_each_subclip> \
    --min_interval <shortest_time_gap_between_adjacent_subclips> 
    --hop_size <step_size_for_computing_volume_curve>

๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์„ธํŠธ ASR ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค(์ค‘๊ตญ์–ด๋งŒ ํ•ด๋‹น).

python tools/asr/funasr_asr.py -i <input> -o <output>

ASR ์ฒ˜๋ฆฌ๋Š” Faster_Whisper(์ค‘๊ตญ์–ด๋ฅผ ์ œ์™ธํ•œ ASR ๋งˆํ‚น)๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

(์ง„ํ–‰๋ฅ  ํ‘œ์‹œ์ค„ ์—†์Œ, GPU ์„ฑ๋Šฅ์œผ๋กœ ์ธํ•ด ์‹œ๊ฐ„ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ)

python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>

์‚ฌ์šฉ์ž ์ •์˜ ๋ชฉ๋ก ์ €์žฅ ๊ฒฝ๋กœ๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ์˜ ๋ง

๋‹ค์Œ ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ์—ฌ์ž๋“ค์—๊ฒŒ ํŠน๋ณ„ํžˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค:

์ด๋ก  ์—ฐ๊ตฌ

์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ

์ถ”๋ก ์šฉ ํ…์ŠคํŠธ ํ”„๋ก ํŠธ์—”๋“œ

WebUI ๋„๊ตฌ

๋ชจ๋“  ๊ธฐ์—ฌ์ž๋“ค์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค ;)