|
#!/bin/bash |
|
|
|
|
|
BREW_PATHS=( |
|
"/usr/local/bin" |
|
"/opt/homebrew/bin" |
|
) |
|
|
|
if [[ "$(uname)" == "Darwin" ]]; then |
|
|
|
export PYTORCH_ENABLE_MPS_FALLBACK=1 |
|
export PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 |
|
elif [[ "$(uname)" != "Linux" ]]; then |
|
echo "Unsupported operating system." |
|
exit 1 |
|
fi |
|
|
|
requirements_file="requirements.txt" |
|
|
|
|
|
add_to_path() { |
|
echo "Homebrew found in $1, which is not in your PATH." |
|
read -p "Do you want to add this path to your PATH? (y/n) " -n 1 -r |
|
echo |
|
if [[ $REPLY =~ ^[Yy]$ ]]; then |
|
echo "Adding $1 to PATH..." |
|
|
|
|
|
local shell_profile |
|
if [[ $SHELL == *"/bash"* ]]; then |
|
shell_profile="$HOME/.bashrc" |
|
[[ ! -f "$shell_profile" ]] && shell_profile="$HOME/.bash_profile" |
|
elif [[ $SHELL == *"/zsh"* ]]; then |
|
shell_profile="$HOME/.zshrc" |
|
else |
|
echo "Unsupported shell. Please add the following line to your shell profile file manually:" |
|
echo "export PATH=\"$PATH:$1\"" |
|
return |
|
fi |
|
|
|
|
|
echo "export PATH=\"$PATH:$1\"" >> "$shell_profile" |
|
|
|
|
|
source "$shell_profile" |
|
|
|
|
|
if ! command -v brew &> /dev/null; then |
|
echo "Failed to add Homebrew to the PATH." |
|
fi |
|
fi |
|
} |
|
|
|
|
|
if command -v brew &> /dev/null; then |
|
echo "Homebrew is already in your PATH." |
|
else |
|
|
|
echo "Homebrew not found in PATH. Checking common paths..." |
|
for path in "${BREW_PATHS[@]}"; do |
|
if [[ -x "$path/brew" ]]; then |
|
add_to_path "$path" |
|
break |
|
fi |
|
done |
|
fi |
|
|
|
|
|
if ! command -v brew &> /dev/null; then |
|
echo "Homebrew still not found. Attempting to install..." |
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
|
fi |
|
|
|
|
|
if command -v brew &> /dev/null; then |
|
echo "Homebrew installed successfully." |
|
else |
|
echo "Homebrew installation failed." |
|
exit 1 |
|
fi |
|
|
|
|
|
if [[ "$(uname)" == "Darwin" ]]; then |
|
echo "Installing ffmpeg..." |
|
brew install ffmpeg |
|
fi |
|
|
|
|
|
if ! command -v python3.8 &> /dev/null; then |
|
echo "Python 3.8 not found. Attempting to install..." |
|
if [[ "$(uname)" == "Darwin" ]] && command -v brew &> /dev/null; then |
|
brew install [email protected] |
|
elif [[ "$(uname)" == "Linux" ]] && command -v apt-get &> /dev/null; then |
|
sudo apt-get update |
|
sudo apt-get install python3.8 |
|
else |
|
echo "Please install Python 3.8 manually." |
|
exit 1 |
|
fi |
|
fi |
|
|
|
|
|
if [ -f "${requirements_file}" ]; then |
|
installed_packages=$(python3.8 -m pip list --format=freeze) |
|
while IFS= read -r package; do |
|
[[ "${package}" =~ ^ |
|
package_name=$(echo "${package}" | sed 's/[<>=!].*//') |
|
if ! echo "${installed_packages}" | grep -q "${package_name}"; then |
|
echo "${package_name} not found. Attempting to install..." |
|
python3.8 -m pip install --upgrade "${package}" |
|
fi |
|
done < "${requirements_file}" |
|
else |
|
echo "${requirements_file} not found. Please ensure the requirements file with required packages exists." |
|
exit 1 |
|
fi |
|
|
|
|
|
echo "Installing onnxruntime..." |
|
python3.8 -m pip install onnxruntime |
|
|
|
download_if_not_exists() { |
|
local filename=$1 |
|
local url=$2 |
|
if [ ! -f "$filename" ]; then |
|
echo "$filename does not exist, downloading..." |
|
curl - |
|
echo "Download finished." |
|
else |
|
echo "$filename already exists." |
|
fi |
|
} |
|
|
|
|
|
download_if_not_exists "hubert_base.pt" "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt" |
|
|
|
|
|
download_if_not_exists "rmvpe.pt" "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt" |
|
|
|
|
|
python3.8 infer-web.py --pycmd python3.8 |
|
|