|
|
@@ -1,158 +1,18 @@
|
|
|
@echo off
|
|
|
chcp 65001
|
|
|
|
|
|
-set no_proxy="127.0.0.1, 0.0.0.0, localhost"
|
|
|
-setlocal enabledelayedexpansion
|
|
|
-
|
|
|
-cd /D "%~dp0"
|
|
|
|
|
|
-set PATH="%PATH%";%SystemRoot%\system32
|
|
|
-
|
|
|
-:: 安装Miniconda
|
|
|
-:: 检查是否有特殊字符
|
|
|
-echo "%CD%"| findstr /R /C:"[!#\$%&()\*+,;<=>?@\[\]\^`{|}~\u4E00-\u9FFF ] " >nul && (
|
|
|
- echo.
|
|
|
- echo 当前路径中存在特殊字符,请使fish-speech的路径不含特殊字符后再运行。 && (
|
|
|
- goto end
|
|
|
- )
|
|
|
-)
|
|
|
-:: 解决跨驱动器安装问题
|
|
|
-set TMP=%CD%\fishenv
|
|
|
-set TEMP=%CD%\fishenv
|
|
|
-:: 取消激活已经激活的环境
|
|
|
-(call conda deactivate && call conda deactivate && call conda deactivate) 2>nul
|
|
|
-:: 安装路径配置
|
|
|
-set INSTALL_DIR=%cd%\fishenv
|
|
|
-set CONDA_ROOT_PREFIX=%cd%\fishenv\conda
|
|
|
-set INSTALL_ENV_DIR=%cd%\fishenv\env
|
|
|
-set PIP_CMD=%cd%\fishenv\env\python -m pip
|
|
|
+set PYTHONPATH=%~dp0
|
|
|
set PYTHON_CMD=%cd%\fishenv\env\python
|
|
|
set API_FLAG_PATH=%~dp0API_FLAGS.txt
|
|
|
-set MINICONDA_DOWNLOAD_URL=https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_23.3.1-0-Windows-x86_64.exe
|
|
|
-set MINICONDA_CHECKSUM=307194e1f12bbeb52b083634e89cc67db4f7980bd542254b43d3309eaf7cb358
|
|
|
-set conda_exists=F
|
|
|
-:: 确定是否要安装conda
|
|
|
-call "%CONDA_ROOT_PREFIX%\_conda.exe" --version >nul 2>&1
|
|
|
-if "%ERRORLEVEL%" EQU "0" set conda_exists=T
|
|
|
-:: 下载Miniconda
|
|
|
-if "%conda_exists%" == "F" (
|
|
|
- echo.
|
|
|
- echo 正在下载Miniconda...
|
|
|
- mkdir "%INSTALL_DIR%" 2>nul
|
|
|
- :: 使用curl下载Miniconda安装程序
|
|
|
- call curl -Lk "%MINICONDA_DOWNLOAD_URL%" > "%INSTALL_DIR%\miniconda_installer.exe"
|
|
|
- :: 检查下载是否成功
|
|
|
- if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 下载Miniconda失败
|
|
|
- goto end
|
|
|
- )
|
|
|
- :: 哈希校验
|
|
|
- for /f %%a in ('
|
|
|
- certutil -hashfile "%INSTALL_DIR%\miniconda_installer.exe" sha256
|
|
|
- ^| find /i /v " "
|
|
|
- ^| find /i "%MINICONDA_CHECKSUM%"
|
|
|
- ') do (
|
|
|
- :: 如果哈希值匹配预设的校验和,将其存储在变量中
|
|
|
- set "hash=%%a"
|
|
|
- )
|
|
|
- if not defined hash (
|
|
|
- echo.
|
|
|
- echo Miniconda安装程序的哈希值不匹配
|
|
|
- del "%INSTALL_DIR%\miniconda_installer.exe"
|
|
|
- goto end
|
|
|
- ) else (
|
|
|
- echo.
|
|
|
- echo Miniconda安装程序的哈希值成功匹配
|
|
|
- )
|
|
|
- echo 下载完成,接下来安装Miniconda至"%CONDA_ROOT_PREFIX%"
|
|
|
- start /wait "" "%INSTALL_DIR%\miniconda_installer.exe" /InstallationType=JustMe /NoShortcuts=1 /AddToPath=0 /RegisterPython=0 /NoRegistry=1 /S /D=%CONDA_ROOT_PREFIX%
|
|
|
- :: 测试是否成功安装
|
|
|
- call "%CONDA_ROOT_PREFIX%\_conda.exe" --version
|
|
|
- if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 未安装Miniconda
|
|
|
- goto end
|
|
|
- ) else (
|
|
|
- echo.
|
|
|
- echo Miniconda安装成功
|
|
|
- )
|
|
|
- :: 删除安装程序
|
|
|
- del "%INSTALL_DIR%\miniconda_installer.exe"
|
|
|
-)
|
|
|
|
|
|
-:: 创建conda环境
|
|
|
-if not exist "%INSTALL_ENV_DIR%" (
|
|
|
- echo.
|
|
|
- echo 正在创建conda环境...
|
|
|
- call "%CONDA_ROOT_PREFIX%\_conda.exe" create --no-shortcuts -y -k --prefix "%INSTALL_ENV_DIR%" -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ python=3.10
|
|
|
- :: 检查环境创建是否成功
|
|
|
- if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 创建conda环境失败
|
|
|
- goto end
|
|
|
- )
|
|
|
-)
|
|
|
-:: 检查是否真的创建了环境
|
|
|
-if not exist "%INSTALL_ENV_DIR%\python.exe" (
|
|
|
- echo.
|
|
|
- echo Conda环境不存在
|
|
|
- goto end
|
|
|
-)
|
|
|
-:: 环境隔离
|
|
|
-set PYTHONNOUSERSITE=1
|
|
|
-set PYTHONPATH=
|
|
|
-set PYTHONHOME=
|
|
|
-set "CUDA_PATH=%INSTALL_ENV_DIR%"
|
|
|
-set "CUDA_HOME=%CUDA_PATH%"
|
|
|
-:: 激活环境
|
|
|
-call "%CONDA_ROOT_PREFIX%\condabin\conda.bat" activate "%INSTALL_ENV_DIR%"
|
|
|
-:: 检查环境是否成功激活
|
|
|
-if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 环境激活失败
|
|
|
- goto end
|
|
|
-) else (
|
|
|
- echo.
|
|
|
- echo 环境激活成功
|
|
|
-)
|
|
|
-:: 安装依赖
|
|
|
-%PIP_CMD% show torch >nul 2>&1
|
|
|
-if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 未安装pytorch,正在安装...
|
|
|
- %PIP_CMD% install torch --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121 --no-warn-script-location
|
|
|
-)
|
|
|
-%PIP_CMD% show torchvision >nul 2>&1
|
|
|
-if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 未安装torchvision,正在安装...
|
|
|
- %PIP_CMD% install torchvision --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121 --no-warn-script-location
|
|
|
-)
|
|
|
-%PIP_CMD% show torchaudio >nul 2>&1
|
|
|
-if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 未安装torchaudio,正在安装...
|
|
|
- %PIP_CMD% install torchaudio --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121 --no-warn-script-location
|
|
|
-)
|
|
|
-%PIP_CMD% show openai-whisper >nul 2>&1
|
|
|
-if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 未安装openai-whisper,正在安装...
|
|
|
- %PIP_CMD% install -i https://pypi.tuna.tsinghua.edu.cn/simple openai-whisper --no-warn-script-location
|
|
|
-)
|
|
|
-%PIP_CMD% show fish-speech >nul 2>&1
|
|
|
-if errorlevel 1 (
|
|
|
- echo.
|
|
|
- echo 未安装fish-speech,正在安装...
|
|
|
- %PIP_CMD% install -e .
|
|
|
-)
|
|
|
+setlocal enabledelayedexpansion
|
|
|
|
|
|
+set no_proxy="localhost, 127.0.0.1, 0.0.0.0"
|
|
|
:: 设置Hugging Face镜像源
|
|
|
-set HF_ENDPOINT="https://hf-mirror.com"
|
|
|
+set HF_ENDPOINT=https://hf-mirror.com
|
|
|
+
|
|
|
|
|
|
-:: 设置API_FLAG
|
|
|
-:: 初始化API_FLAG
|
|
|
set "API_FLAGS="
|
|
|
set "flags="
|
|
|
:: 检查API_FLAG文件是否存在
|
|
|
@@ -170,34 +30,55 @@ if exist "%API_FLAG_PATH%" (
|
|
|
)
|
|
|
)
|
|
|
)
|
|
|
+
|
|
|
:: 去除API_FLAGS变量最后的空格
|
|
|
if not "!API_FLAGS!"=="" set "API_FLAGS=!API_FLAGS:~0,-1!"
|
|
|
-:: 看看开不开api推理
|
|
|
+
|
|
|
+:: 初始化 flags 变量
|
|
|
+set "flags="
|
|
|
+
|
|
|
+:: 检查是否包含 --api 参数
|
|
|
echo !API_FLAGS! | findstr /C:"--api" >nul 2>&1
|
|
|
if !errorlevel! equ 0 (
|
|
|
echo.
|
|
|
echo 启动HTTP API推理
|
|
|
- set "first_arg=true"
|
|
|
- for %%a in (%*) do (
|
|
|
- if "!first_arg!"=="true" (
|
|
|
- set "first_arg=false"
|
|
|
- ) else (
|
|
|
- if not "%%a"=="--api" (
|
|
|
- set "flags=!flags!%%a"
|
|
|
- )
|
|
|
- )
|
|
|
+ set "mode=api"
|
|
|
+ goto process_flags
|
|
|
+)
|
|
|
+
|
|
|
+:: 检查是否包含 --infer 参数
|
|
|
+echo !API_FLAGS! | findstr /C:"--infer" >nul 2>&1
|
|
|
+if !errorlevel! equ 0 (
|
|
|
+ echo.
|
|
|
+ echo 启动WebUI推理
|
|
|
+ set "mode=infer"
|
|
|
+ goto process_flags
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+:process_flags
|
|
|
+for %%p in (!API_FLAGS!) do (
|
|
|
+ if not "%%p"=="--!mode!" (
|
|
|
+ set "flags=!flags! %%p"
|
|
|
)
|
|
|
+)
|
|
|
+
|
|
|
+:: 去除 flags 变量开头的空格
|
|
|
+if not "!flags!"=="" set "flags=!flags:~1!"
|
|
|
+
|
|
|
+echo Debug: flags = !flags!
|
|
|
+
|
|
|
+:: 根据 mode 变量启动相应的推理
|
|
|
+if "!mode!"=="api" (
|
|
|
%PYTHON_CMD% -m tools.api !flags!
|
|
|
-) else (
|
|
|
- if defined flags (
|
|
|
- :: 启动WebUI推理
|
|
|
- echo.
|
|
|
- echo 启动WebUI推理
|
|
|
- %PYTHON_CMD% -m tools.webui !flags!
|
|
|
- )
|
|
|
+) else if "!mode!"=="infer" (
|
|
|
+ %PYTHON_CMD% -m tools.webui !flags!
|
|
|
)
|
|
|
+
|
|
|
echo.
|
|
|
echo 接下来启动页面
|
|
|
%PYTHON_CMD% fish_speech\webui\manage.py
|
|
|
+
|
|
|
:end
|
|
|
+endlocal
|
|
|
pause
|