mirror of
https://github.com/RVC-Boss/GPT-SoVITS.git
synced 2025-04-28 12:59:07 +08:00
* Replace the outdated link and pin dependencies * Update Colab * Add Docs * . * Update Install.sh, Support multi download source * . * modified path * Add source * Update URL * fix bugs * fix bug * fix bugs * Fix colab * update colab * Update Docs * update links
214 lines
6.2 KiB
Bash
214 lines
6.2 KiB
Bash
#!/bin/bash
|
|
|
|
# cd into GPT-SoVITS Base Path
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
|
|
|
cd "$SCRIPT_DIR" || exit 1
|
|
|
|
set -e
|
|
|
|
if ! command -v conda &>/dev/null; then
|
|
echo "Conda Not Found"
|
|
exit 1
|
|
fi
|
|
|
|
trap 'echo "Error Occured at \"$BASH_COMMAND\" with exit code $?"; exit 1' ERR
|
|
|
|
is_HF=false
|
|
is_HF_MIRROR=false
|
|
is_MODELSCOPE=false
|
|
DOWNLOAD_UVR5=false
|
|
|
|
print_help() {
|
|
echo "Usage: bash install.sh [OPTIONS]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " --source HF|HF-Mirror|ModelScope Specify the model source (REQUIRED)"
|
|
echo " --download-uvr5 Enable downloading the UVR5 model"
|
|
echo " -h, --help Show this help message and exit"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " bash install.sh --source HF --download-uvr5"
|
|
echo " bash install.sh --source ModelScope"
|
|
}
|
|
|
|
# Show help if no arguments provided
|
|
if [[ $# -eq 0 ]]; then
|
|
print_help
|
|
exit 0
|
|
fi
|
|
|
|
# Parse arguments
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--source)
|
|
case "$2" in
|
|
HF)
|
|
is_HF=true
|
|
;;
|
|
HF-Mirror)
|
|
is_HF_MIRROR=true
|
|
;;
|
|
ModelScope)
|
|
is_MODELSCOPE=true
|
|
;;
|
|
*)
|
|
echo "Error: Invalid Download Source: $2"
|
|
echo "Choose From: [HF, HF-Mirror, ModelScope]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift 2
|
|
;;
|
|
--download-uvr5)
|
|
DOWNLOAD_UVR5=true
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
print_help
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown Argument: $1"
|
|
echo "Use -h or --help to see available options."
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if ! $is_HF && ! $is_HF_MIRROR && ! $is_MODELSCOPE; then
|
|
echo "Error: Download Source is REQUIRED"
|
|
echo ""
|
|
print_help
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$is_HF" = "true" ]; then
|
|
echo "Download Model From HuggingFace"
|
|
PRETRINED_URL="https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/pretrained_models.zip"
|
|
G2PW_URL="https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip"
|
|
UVR5_URL="https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/uvr5_weights.zip"
|
|
elif [ "$is_HF_MIRROR" = "true" ]; then
|
|
echo "Download Model From HuggingFace-Mirror"
|
|
PRETRINED_URL="https://hf-mirror.com/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/pretrained_models.zip"
|
|
G2PW_URL="https://hf-mirror.com/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip"
|
|
UVR5_URL="https://hf-mirror.com/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/uvr5_weights.zip"
|
|
elif [ "$is_MODELSCOPE" = "true" ]; then
|
|
echo "Download Model From ModelScope"
|
|
PRETRINED_URL="https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/pretrained_models.zip"
|
|
G2PW_URL="https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip"
|
|
UVR5_URL="https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/uvr5_weights.zip"
|
|
fi
|
|
|
|
if find "GPT_SoVITS/pretrained_models" -mindepth 1 ! -name '.gitignore' | grep -q .; then
|
|
echo "Pretrained Model Exists"
|
|
else
|
|
echo "Download Pretrained Models"
|
|
wget --tries=25 --wait=5 --read-timeout=40 --retry-on-http-error=404 "$PRETRINED_URL"
|
|
|
|
unzip pretrained_models.zip
|
|
rm -rf pretrained_models.zip
|
|
mv pretrained_models/* GPT_SoVITS/pretrained_models
|
|
rm -rf pretrained_models
|
|
fi
|
|
|
|
if [ ! -d "GPT_SoVITS/text/G2PWModel" ]; then
|
|
echo "Download G2PWModel"
|
|
wget --tries=25 --wait=5 --read-timeout=40 --retry-on-http-error=404 "$G2PW_URL"
|
|
|
|
unzip G2PWModel.zip
|
|
rm -rf G2PWModel.zip
|
|
mv G2PWModel GPT_SoVITS/text/G2PWModel
|
|
else
|
|
echo "G2PWModel Exists"
|
|
fi
|
|
|
|
if [ "$DOWNLOAD_UVR5" = "true" ];then
|
|
if find "tools/uvr5/uvr5_weights" -mindepth 1 ! -name '.gitignore' | grep -q .; then
|
|
echo "UVR5 Model Exists"
|
|
else
|
|
echo "Download UVR5 Model"
|
|
wget --tries=25 --wait=5 --read-timeout=40 --retry-on-http-error=404 "$UVR5_URL"
|
|
|
|
unzip uvr5_weights.zip
|
|
rm -rf uvr5_weights.zip
|
|
mv uvr5_weights/* tools/uvr5/uvr5_weights
|
|
rm -rf uvr5_weights
|
|
fi
|
|
fi
|
|
|
|
# 安装构建工具
|
|
# Install build tools
|
|
echo "Installing GCC..."
|
|
conda install -c conda-forge gcc=14 -y
|
|
|
|
echo "Installing G++..."
|
|
conda install -c conda-forge gxx -y
|
|
|
|
echo "Installing ffmpeg and cmake..."
|
|
conda install ffmpeg cmake -y
|
|
|
|
echo "Installing git-lfs and zip..."
|
|
conda install git-lfs -y
|
|
conda install zip -y
|
|
|
|
git-lfs install
|
|
|
|
echo "Checking for CUDA installation..."
|
|
if command -v nvidia-smi &>/dev/null; then
|
|
USE_CUDA=true
|
|
echo "CUDA found."
|
|
else
|
|
echo "CUDA not found."
|
|
USE_CUDA=false
|
|
fi
|
|
|
|
if [ "$USE_CUDA" = false ]; then
|
|
echo "Checking for ROCm installation..."
|
|
if [ -d "/opt/rocm" ]; then
|
|
USE_ROCM=true
|
|
echo "ROCm found."
|
|
if grep -qi "microsoft" /proc/version; then
|
|
echo "You are running WSL."
|
|
IS_WSL=true
|
|
else
|
|
echo "You are NOT running WSL."
|
|
IS_WSL=false
|
|
fi
|
|
else
|
|
echo "ROCm not found."
|
|
USE_ROCM=false
|
|
fi
|
|
fi
|
|
|
|
if [ "$USE_CUDA" = true ]; then
|
|
echo "Installing PyTorch with CUDA support..."
|
|
pip install torch==2.5.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124
|
|
elif [ "$USE_ROCM" = true ]; then
|
|
echo "Installing PyTorch with ROCm support..."
|
|
pip install torch==2.5.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/rocm6.2
|
|
else
|
|
echo "Installing PyTorch for CPU..."
|
|
pip install torch==2.5.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cpu
|
|
fi
|
|
|
|
echo "Installing Python dependencies from requirements.txt..."
|
|
|
|
# 刷新环境
|
|
# Refresh environment
|
|
hash -r
|
|
|
|
pip install -r extra-req.txt --no-deps
|
|
|
|
pip install -r requirements.txt
|
|
|
|
if [ "$USE_ROCM" = true ] && [ "$IS_WSL" = true ]; then
|
|
echo "Update to WSL compatible runtime lib..."
|
|
location=$(pip show torch | grep Location | awk -F ": " '{print $2}')
|
|
cd "${location}"/torch/lib/ || exit
|
|
rm libhsa-runtime64.so*
|
|
cp /opt/rocm/lib/libhsa-runtime64.so.1.2 libhsa-runtime64.so
|
|
fi
|
|
|
|
echo "Installation completed successfully!"
|