File size: 4,176 Bytes
eb1c669
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/bin/bash

# Define common paths for Homebrew
BREW_PATHS=(
  "/usr/local/bin"
  "/opt/homebrew/bin"
)

if [[ "$(uname)" == "Darwin" ]]; then
  # macOS specific env:
  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"

# Function to add a path to PATH
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..."

    # Detect the shell and choose the right profile file
    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

    # Add the export line to the shell profile file
    echo "export PATH=\"$PATH:$1\"" >> "$shell_profile"

    # Source the shell profile file
    source "$shell_profile"

    # Verify that the new PATH includes Homebrew
    if ! command -v brew &> /dev/null; then
      echo "Failed to add Homebrew to the PATH."
    fi
  fi
}

# Check if Homebrew is in PATH
if command -v brew &> /dev/null; then
  echo "Homebrew is already in your PATH."
else
  # If not, check common paths for Homebrew
  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

# Check again if Homebrew is in PATH
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

# Verifying if Homebrew has been installed successfully
if command -v brew &> /dev/null; then
  echo "Homebrew installed successfully."
else
  echo "Homebrew installation failed."
  exit 1
fi

# Installing ffmpeg with Homebrew
if [[ "$(uname)" == "Darwin" ]]; then
  echo "Installing ffmpeg..."
  brew install ffmpeg
fi

# Check if Python 3.8 is installed
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

# Check if required packages are installed and install them if not
if [ -f "${requirements_file}" ]; then
  installed_packages=$(python3.8 -m pip list --format=freeze)
  while IFS= read -r package; do
    [[ "${package}" =~ ^#.* ]] && continue
    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

# Install onnxruntime package
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 -# -L -o "$filename" "$url"
    echo "Download finished."
  else
    echo "$filename already exists."
  fi
}

# Check and download hubert_base.pt
download_if_not_exists "hubert_base.pt" "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt"

# Check and download rmvpe.pt
download_if_not_exists "rmvpe.pt" "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt"

# Run the main script
python3.8 infer-web.py --pycmd python3.8