Better install / inference shell script for macOS users

This commit is contained in:
kalomaze
2023-07-25 20:50:51 -05:00
committed by GitHub

100
run.sh
View File

@@ -1,5 +1,11 @@
#!/bin/bash #!/bin/bash
# Define common paths for Homebrew
BREW_PATHS=(
"/usr/local/bin"
"/opt/homebrew/bin"
)
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
# macOS specific env: # macOS specific env:
export PYTORCH_ENABLE_MPS_FALLBACK=1 export PYTORCH_ENABLE_MPS_FALLBACK=1
@@ -11,6 +17,74 @@ fi
requirements_file="requirements.txt" 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 # Check if Python 3.8 is installed
if ! command -v python3.8 &> /dev/null; then if ! command -v python3.8 &> /dev/null; then
echo "Python 3.8 not found. Attempting to install..." echo "Python 3.8 not found. Attempting to install..."
@@ -27,7 +101,7 @@ fi
# Check if required packages are installed and install them if not # Check if required packages are installed and install them if not
if [ -f "${requirements_file}" ]; then if [ -f "${requirements_file}" ]; then
installed_packages=$(python3.8 -m pip freeze) installed_packages=$(python3.8 -m pip list --format=freeze)
while IFS= read -r package; do while IFS= read -r package; do
[[ "${package}" =~ ^#.* ]] && continue [[ "${package}" =~ ^#.* ]] && continue
package_name=$(echo "${package}" | sed 's/[<>=!].*//') package_name=$(echo "${package}" | sed 's/[<>=!].*//')
@@ -41,5 +115,27 @@ else
exit 1 exit 1
fi 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 # Run the main script
python3.8 infer-web.py --pycmd python3.8 python3.8 infer-web.py --pycmd python3.8