mirror of
https://github.com/RVC-Boss/GPT-SoVITS.git
synced 2025-08-30 02:30:23 +08:00
Docker Auto-Build Workflow
This commit is contained in:
parent
13055fa569
commit
4f12b78ecd
201
.dockerignore
201
.dockerignore
@ -1,8 +1,197 @@
|
|||||||
docs
|
GPT_SoVITS/pretrained_models/*
|
||||||
logs
|
tools/asr/models/*
|
||||||
|
tools/uvr5/uvr5_weights/*
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
.vscode
|
||||||
|
*.pyc
|
||||||
|
env
|
||||||
|
runtime
|
||||||
|
.idea
|
||||||
output
|
output
|
||||||
reference
|
logs
|
||||||
SoVITS_weights
|
SoVITS_weights*/
|
||||||
GPT_weights
|
GPT_weights*/
|
||||||
TEMP
|
TEMP
|
||||||
.git
|
weight.json
|
||||||
|
ffmpeg*
|
||||||
|
ffprobe*
|
||||||
|
cfg.json
|
||||||
|
speakers.json
|
||||||
|
ref_audios
|
||||||
|
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
**/__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
Pipfile.lock
|
||||||
|
|
||||||
|
# UV
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
uv.lock
|
||||||
|
|
||||||
|
# poetry
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||||
|
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||||
|
# commonly ignored for libraries.
|
||||||
|
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||||
|
poetry.lock
|
||||||
|
|
||||||
|
# pdm
|
||||||
|
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||||
|
#pdm.lock
|
||||||
|
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||||
|
# in version control.
|
||||||
|
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||||
|
.pdm.toml
|
||||||
|
.pdm-python
|
||||||
|
.pdm-build/
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
|
|
||||||
|
# PyCharm
|
||||||
|
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||||
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Ruff stuff:
|
||||||
|
.ruff_cache/
|
||||||
|
|
||||||
|
# PyPI configuration file
|
||||||
|
.pypirc
|
||||||
|
60
.github/workflows/docker-publish.yml
vendored
Normal file
60
.github/workflows/docker-publish.yml
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
name: Build and Publish Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Generate Tag
|
||||||
|
id: meta
|
||||||
|
run: |
|
||||||
|
DATE=$(date +'%Y%m%d')
|
||||||
|
COMMIT=$(git rev-parse --short=6 HEAD)
|
||||||
|
echo "::set-output name=tag::${DATE}-${COMMIT}"
|
||||||
|
|
||||||
|
- name: Build and Push Lite Docker Image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
USE_FUNASR=true
|
||||||
|
USE_FASTERWHISPER=false
|
||||||
|
CUDA_VERSION=12.4
|
||||||
|
tags: |
|
||||||
|
xxxxrt666/gpt-sovits:lite-cu124-${{ steps.meta.outputs.tag }}
|
||||||
|
xxxxrt666/gpt-sovits:latest-lite
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
- name: Build and Push Docker Image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
build-args: |
|
||||||
|
USE_FUNASR=true
|
||||||
|
USE_FASTERWHISPER=true
|
||||||
|
CUDA_VERSION=12.4
|
||||||
|
tags: |
|
||||||
|
xxxxrt666/gpt-sovits:cu124-${{ steps.meta.outputs.tag }}
|
||||||
|
xxxxrt666/gpt-sovits:latest
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
9
.gitignore
vendored
9
.gitignore
vendored
@ -7,13 +7,8 @@ runtime
|
|||||||
.idea
|
.idea
|
||||||
output
|
output
|
||||||
logs
|
logs
|
||||||
reference
|
SoVITS_weights*/
|
||||||
GPT_weights
|
GPT_weights*/
|
||||||
SoVITS_weights
|
|
||||||
GPT_weights_v2
|
|
||||||
SoVITS_weights_v2
|
|
||||||
GPT_weights_v3
|
|
||||||
SoVITS_weights_v3
|
|
||||||
TEMP
|
TEMP
|
||||||
weight.json
|
weight.json
|
||||||
ffmpeg*
|
ffmpeg*
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
5bba782a5e9196166233b9ab12ba04cadff9ef9212b4ff6153ed9290ff679025 /workspace/tools/damo_asr/models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/model.pb
|
|
||||||
b3be75be477f0780277f3bae0fe489f48718f585f3a6e45d7dd1fbb1a4255fc5 /workspace/tools/damo_asr/models/speech_fsmn_vad_zh-cn-16k-common-pytorch/model.pb
|
|
||||||
a5818bb9d933805a916eebe41eb41648f7f9caad30b4bd59d56f3ca135421916 /workspace/tools/damo_asr/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/model.pb
|
|
@ -1,8 +0,0 @@
|
|||||||
# Download moda ASR related models
|
|
||||||
from modelscope import snapshot_download
|
|
||||||
|
|
||||||
model_dir = snapshot_download(
|
|
||||||
"damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch", revision="v2.0.4"
|
|
||||||
)
|
|
||||||
model_dir = snapshot_download("damo/speech_fsmn_vad_zh-cn-16k-common-pytorch", revision="v2.0.4")
|
|
||||||
model_dir = snapshot_download("damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch", revision="v2.0.4")
|
|
@ -1,11 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -Eeuo pipefail
|
|
||||||
|
|
||||||
echo "Downloading models..."
|
|
||||||
|
|
||||||
aria2c --disable-ipv6 --input-file /workspace/Docker/links.txt --dir /workspace --continue
|
|
||||||
|
|
||||||
echo "Checking SHA256..."
|
|
||||||
|
|
||||||
parallel --will-cite -a /workspace/Docker/links.sha256 "echo -n {} | sha256sum -c"
|
|
@ -1,12 +0,0 @@
|
|||||||
b1c1e17e9c99547a89388f72048cd6e1b41b5a18b170e86a46dfde0324d63eb1 /workspace/GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt
|
|
||||||
fc579c1db3c1e21b721001cf99d7a584214280df19b002e200b630a34fa06eb8 /workspace/GPT_SoVITS/pretrained_models/s2D488k.pth
|
|
||||||
020a014e1e01e550e510f2f61fae5e5f5b6aab40f15c22f1f12f724df507e835 /workspace/GPT_SoVITS/pretrained_models/s2G488k.pth
|
|
||||||
24164f129c66499d1346e2aa55f183250c223161ec2770c0da3d3b08cf432d3c /workspace/GPT_SoVITS/pretrained_models/chinese-hubert-base/pytorch_model.bin
|
|
||||||
e53a693acc59ace251d143d068096ae0d7b79e4b1b503fa84c9dcf576448c1d8 /workspace/GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large/pytorch_model.bin
|
|
||||||
39796caa5db18d7f9382d8ac997ac967bfd85f7761014bb807d2543cc844ef05 /workspace/tools/uvr5/uvr5_weights/HP2_all_vocals.pth
|
|
||||||
45e6b65199e781b4a6542002699be9f19cd3d1cb7d1558bc2bfbcd84674dfe28 /workspace/tools/uvr5/uvr5_weights/HP3_all_vocals.pth
|
|
||||||
5908891829634926119720241e8573d97cbeb8277110a7512bdb0bd7563258ee /workspace/tools/uvr5/uvr5_weights/HP5_only_main_vocal.pth
|
|
||||||
8c8fd1582f9aabc363e47af62ddb88df6cae7e064cae75bbf041a067a5e0aee2 /workspace/tools/uvr5/uvr5_weights/VR-DeEchoAggressive.pth
|
|
||||||
01376dd2a571bf3cb9cced680732726d2d732609d09216a610b0d110f133febe /workspace/tools/uvr5/uvr5_weights/VR-DeEchoDeReverb.pth
|
|
||||||
56aba59db3bcdd14a14464e62f3129698ecdea62eee0f003b9360923eb3ac79e /workspace/tools/uvr5/uvr5_weights/VR-DeEchoNormal.pth
|
|
||||||
233bb5c6aaa365e568659a0a81211746fa881f8f47f82d9e864fce1f7692db80 /workspace/tools/uvr5/uvr5_weights/onnx_dereverb_By_FoxJoy/vocals.onnx
|
|
@ -1,34 +0,0 @@
|
|||||||
# GPT-SoVITS models
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/s1bert25hz-2kh-longer-epoch%3D68e-step%3D50232.ckpt
|
|
||||||
out=GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/s2D488k.pth
|
|
||||||
out=GPT_SoVITS/pretrained_models/s2D488k.pth
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/s2G488k.pth
|
|
||||||
out=GPT_SoVITS/pretrained_models/s2G488k.pth
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/chinese-hubert-base/config.json
|
|
||||||
out=GPT_SoVITS/pretrained_models/chinese-hubert-base/config.json
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/chinese-hubert-base/preprocessor_config.json
|
|
||||||
out=GPT_SoVITS/pretrained_models/chinese-hubert-base/preprocessor_config.json
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/chinese-hubert-base/pytorch_model.bin
|
|
||||||
out=GPT_SoVITS/pretrained_models/chinese-hubert-base/pytorch_model.bin
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/chinese-roberta-wwm-ext-large/config.json
|
|
||||||
out=GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large/config.json
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/chinese-roberta-wwm-ext-large/pytorch_model.bin
|
|
||||||
out=GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large/pytorch_model.bin
|
|
||||||
https://huggingface.co/lj1995/GPT-SoVITS/resolve/main/chinese-roberta-wwm-ext-large/tokenizer.json
|
|
||||||
out=GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large/tokenizer.json
|
|
||||||
# UVR5
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP2_all_vocals.pth
|
|
||||||
out=tools/uvr5/uvr5_weights/HP2_all_vocals.pth
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP3_all_vocals.pth
|
|
||||||
out=tools/uvr5/uvr5_weights/HP3_all_vocals.pth
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP5_only_main_vocal.pth
|
|
||||||
out=tools/uvr5/uvr5_weights/HP5_only_main_vocal.pth
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/VR-DeEchoAggressive.pth
|
|
||||||
out=tools/uvr5/uvr5_weights/VR-DeEchoAggressive.pth
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/VR-DeEchoDeReverb.pth
|
|
||||||
out=tools/uvr5/uvr5_weights/VR-DeEchoDeReverb.pth
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/VR-DeEchoNormal.pth
|
|
||||||
out=tools/uvr5/uvr5_weights/VR-DeEchoNormal.pth
|
|
||||||
https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/onnx_dereverb_By_FoxJoy/vocals.onnx
|
|
||||||
out=tools/uvr5/uvr5_weights/onnx_dereverb_By_FoxJoy/vocals.onnx
|
|
95
Dockerfile
95
Dockerfile
@ -1,42 +1,77 @@
|
|||||||
# Base CUDA image
|
ARG CUDA_VERSION=12.4
|
||||||
FROM cnstark/pytorch:2.0.1-py3.9.17-cuda11.8.0-ubuntu20.04
|
|
||||||
|
|
||||||
LABEL maintainer="breakstring@hotmail.com"
|
FROM nvidia/cuda:${CUDA_VERSION}.1-cudnn-devel-ubuntu22.04
|
||||||
LABEL version="dev-20240209"
|
|
||||||
|
LABEL maintainer="XXXXRT"
|
||||||
|
LABEL version="V4-0429"
|
||||||
LABEL description="Docker image for GPT-SoVITS"
|
LABEL description="Docker image for GPT-SoVITS"
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
build-essential \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
wget \
|
||||||
|
curl \
|
||||||
|
bzip2 \
|
||||||
|
unzip \
|
||||||
|
git \
|
||||||
|
vim \
|
||||||
|
htop \
|
||||||
|
procps \
|
||||||
|
ca-certificates \
|
||||||
|
locales \
|
||||||
|
net-tools \
|
||||||
|
iputils-ping \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install 3rd party apps
|
WORKDIR /workspace/GPT-SoVITS
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
ENV TZ=Etc/UTC
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends tzdata ffmpeg libsox-dev parallel aria2 git git-lfs && \
|
|
||||||
git lfs install && \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Copy only requirements.txt initially to leverage Docker cache
|
COPY . /workspace/GPT-SoVITS
|
||||||
WORKDIR /workspace
|
|
||||||
COPY requirements.txt /workspace/
|
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
|
||||||
|
|
||||||
# Define a build-time argument for image type
|
RUN wget --tries=25 --wait=3 --read-timeout=40 -O anaconda.sh "https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh" && \
|
||||||
ARG IMAGE_TYPE=full
|
bash anaconda.sh -b -p /root/anaconda3 && \
|
||||||
|
rm anaconda.sh
|
||||||
|
|
||||||
# Conditional logic based on the IMAGE_TYPE argument
|
ARG USE_FUNASR=false
|
||||||
# Always copy the Docker directory, but only use it if IMAGE_TYPE is not "elite"
|
ARG USE_FASTERWHISPER=false
|
||||||
COPY ./Docker /workspace/Docker
|
|
||||||
# elite 类型的镜像里面不包含额外的模型
|
|
||||||
RUN if [ "$IMAGE_TYPE" != "elite" ]; then \
|
|
||||||
chmod +x /workspace/Docker/download.sh && \
|
|
||||||
/workspace/Docker/download.sh && \
|
|
||||||
python /workspace/Docker/download.py && \
|
|
||||||
python -m nltk.downloader averaged_perceptron_tagger cmudict; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
RUN if [ "$USE_FUNASR" = "true" ]; then \
|
||||||
|
echo "Downloading funasr..." && \
|
||||||
|
wget --tries=25 --wait=3 --read-timeout=40 "https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/funasr.zip" && \
|
||||||
|
unzip funasr.zip -d tools/asr/models/ && \
|
||||||
|
rm -rf funasr.zip ; \
|
||||||
|
else \
|
||||||
|
echo "Skipping funasr download" ; \
|
||||||
|
fi
|
||||||
|
|
||||||
# Copy the rest of the application
|
RUN if [ "$USE_FASTERWHISPER" = "true" ]; then \
|
||||||
COPY . /workspace
|
echo "Downloading faster-whisper..." && \
|
||||||
|
wget --tries=25 --wait=3 --read-timeout=40 "https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/faster-whisper.zip" && \
|
||||||
|
unzip faster-whisper.zip -d tools/asr/models/ && \
|
||||||
|
rm -rf faster-whisper.zip ; \
|
||||||
|
else \
|
||||||
|
echo "Skipping faster-whisper download" ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
ENV PATH="/root/anaconda3/bin:$PATH"
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
|
||||||
|
RUN conda create -n GPTSoVITS python=3.10 -y
|
||||||
|
|
||||||
|
ENV PATH="/usr/local/cuda/bin:$PATH"
|
||||||
|
ENV CUDA_HOME="/usr/local/cuda"
|
||||||
|
ENV MAKEFLAGS="-j$(nproc)"
|
||||||
|
|
||||||
|
RUN source /root/anaconda3/etc/profile.d/conda.sh && \
|
||||||
|
conda activate GPTSoVITS && \
|
||||||
|
bash /workspace/install.sh --source HF --download-uvr5 && \
|
||||||
|
pip cache purge
|
||||||
|
|
||||||
|
RUN rm -rf /root/anaconda3/pkgs
|
||||||
|
|
||||||
EXPOSE 9871 9872 9873 9874 9880
|
EXPOSE 9871 9872 9873 9874 9880
|
||||||
|
|
||||||
CMD ["python", "webui.py"]
|
WORKDIR /workspace/GPT-SoVITS
|
||||||
|
|
||||||
|
CMD ["/bin/bash", "-c", "source /root/anaconda3/etc/profile.d/conda.sh && conda activate GPTSoVITS && export PYTHONPATH=$(pwd) && exec bash"]
|
@ -1,32 +1,47 @@
|
|||||||
version: '3.8'
|
version: "3.8"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
gpt-sovits:
|
GPT-SoVITS:
|
||||||
image: breakstring/gpt-sovits:latest # please change the image name and tag base your environment. If the tag contains the word 'elite', such as "latest-elite", it indicates that the image does not include the necessary models such as GPT-SoVITS, UVR5, Damo ASR, etc. You will need to download them yourself and map them into the container.
|
image: xxxxrt666/gpt-sovits:latest
|
||||||
container_name: gpt-sovits-container
|
container_name: GPT-SoVITS
|
||||||
environment:
|
|
||||||
- is_half=False
|
|
||||||
- is_share=False
|
|
||||||
volumes:
|
|
||||||
- ./output:/workspace/output
|
|
||||||
- ./logs:/workspace/logs
|
|
||||||
- ./SoVITS_weights:/workspace/SoVITS_weights
|
|
||||||
- ./reference:/workspace/reference
|
|
||||||
working_dir: /workspace
|
|
||||||
ports:
|
ports:
|
||||||
- "9880:9880"
|
|
||||||
- "9871:9871"
|
- "9871:9871"
|
||||||
- "9872:9872"
|
- "9872:9872"
|
||||||
- "9873:9873"
|
- "9873:9873"
|
||||||
- "9874:9874"
|
- "9874:9874"
|
||||||
shm_size: 16G
|
- "9880:9880"
|
||||||
deploy:
|
volumes:
|
||||||
resources:
|
- .:/workspace/GPT-SoVITS
|
||||||
reservations:
|
- /workspace/GPT-SoVITS/pretrained_models
|
||||||
devices:
|
- /workspace/tools/asr/models
|
||||||
- driver: nvidia
|
- /workspace/tools/uvr5/uvr5_weights
|
||||||
count: "all"
|
environment:
|
||||||
capabilities: [gpu]
|
- PYTHONPATH=/workspace/GPT-SoVITS
|
||||||
stdin_open: true
|
- is_half=true
|
||||||
tty: true
|
tty: true
|
||||||
|
stdin_open: true
|
||||||
|
shm_size: "16g"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
runtime: nvidia
|
||||||
|
GPT-SoVITS-Lite:
|
||||||
|
image: xxxxrt666/gpt-sovits:latest-lite
|
||||||
|
container_name: GPT-SoVITS-Lite
|
||||||
|
ports:
|
||||||
|
- "9871:9871"
|
||||||
|
- "9872:9872"
|
||||||
|
- "9873:9873"
|
||||||
|
- "9874:9874"
|
||||||
|
- "9880:9880"
|
||||||
|
volumes:
|
||||||
|
- .:/workspace/GPT-SoVITS
|
||||||
|
- /workspace/GPT-SoVITS/pretrained_models
|
||||||
|
- /workspace/tools/asr/models
|
||||||
|
- /workspace/tools/uvr5/uvr5_weights
|
||||||
|
environment:
|
||||||
|
- PYTHONPATH=/workspace/GPT-SoVITS
|
||||||
|
- is_half=true
|
||||||
|
tty: true
|
||||||
|
stdin_open: true
|
||||||
|
shm_size: "16g"
|
||||||
|
restart: unless-stopped
|
||||||
|
runtime: nvidia
|
82
docker_build.sh
Normal file
82
docker_build.sh
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
|
|
||||||
|
cd "$SCRIPT_DIR" || exit 1
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if ! command -v docker &>/dev/null; then
|
||||||
|
echo "Docker Not Found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
trap 'echo "Error Occured at \"$BASH_COMMAND\" with exit code $?"; exit 1' ERR
|
||||||
|
|
||||||
|
USE_FUNASR=false
|
||||||
|
USE_FASTERWHISPER=false
|
||||||
|
CUDA_VERSION=12.4
|
||||||
|
|
||||||
|
print_help() {
|
||||||
|
echo "Usage: bash docker_build.sh [OPTIONS]"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " --cuda 12.4|12.8 Specify the CUDA VERSION (REQUIRED)"
|
||||||
|
echo " --funasr Build with FunASR Paraformer Model"
|
||||||
|
echo " --faster-whisper Build with Faster-Whisper-Large-V3 Model"
|
||||||
|
echo " -h, --help Show this help message and exit"
|
||||||
|
echo ""
|
||||||
|
echo "Examples:"
|
||||||
|
echo " bash docker_build.sh --cuda 12.4 --funasr --faster-whisper"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Show help if no arguments provided
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
print_help
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--cuda)
|
||||||
|
case "$2" in
|
||||||
|
12.1)
|
||||||
|
CUDA_VERSION=12.1
|
||||||
|
;;
|
||||||
|
12.4)
|
||||||
|
CUDA_VERSION=12.4
|
||||||
|
;;
|
||||||
|
12.8)
|
||||||
|
CUDA_VERSION=12.8
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid CUDA_VERSION: $2"
|
||||||
|
echo "Choose From: [12.1, 12.4, 12.8]"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--funasr)
|
||||||
|
USE_FUNASR=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--faster-whisper)
|
||||||
|
USE_FASTERWHISPER=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown Argument: $1"
|
||||||
|
echo "Use -h or --help to see available options."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--build-arg CUDA_VERSION=$CUDA_VERSION \
|
||||||
|
--build-arg USE_FUNASR=$USE_FUNASR \
|
||||||
|
--build-arg USE_FASTERWHISPER=$USE_FASTERWHISPER \
|
||||||
|
-t "${USER}/gpt-sovits:local" \
|
||||||
|
.
|
@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 获取当前日期,格式为 YYYYMMDD
|
|
||||||
DATE=$(date +%Y%m%d)
|
|
||||||
# 获取最新的 Git commit 哈希值的前 7 位
|
|
||||||
COMMIT_HASH=$(git rev-parse HEAD | cut -c 1-7)
|
|
||||||
|
|
||||||
# 构建 full 版本的镜像
|
|
||||||
docker build --build-arg IMAGE_TYPE=full -t breakstring/gpt-sovits:latest .
|
|
||||||
# 为同一个镜像添加带日期的标签
|
|
||||||
docker tag breakstring/gpt-sovits:latest breakstring/gpt-sovits:dev-$DATE
|
|
||||||
# 为同一个镜像添加带当前代码库Commit哈希值的标签
|
|
||||||
docker tag breakstring/gpt-sovits:latest breakstring/gpt-sovits:dev-$COMMIT_HASH
|
|
||||||
|
|
||||||
|
|
||||||
# 构建 elite 版本的镜像(无模型下载步骤,需手工将模型下载安装进容器)
|
|
||||||
docker build --build-arg IMAGE_TYPE=elite -t breakstring/gpt-sovits:latest-elite .
|
|
||||||
# 为同一个镜像添加带日期的标签
|
|
||||||
docker tag breakstring/gpt-sovits:latest-elite breakstring/gpt-sovits:dev-$DATE-elite
|
|
||||||
# 为同一个镜像添加带当前代码库Commit哈希值的标签
|
|
||||||
docker tag breakstring/gpt-sovits:latest-elite breakstring/gpt-sovits:dev-$COMMIT_HASH-elite
|
|
Loading…
x
Reference in New Issue
Block a user