--- /home/ray/Downloads/SHIRE-VOICE-OPENVOICE-V1-OFFICIAL-BOOTSTRAP.sh.repaired3 2026-08-03 10:55:30.294280464 +0800 +++ /home/ray/Downloads/SHIRE-VOICE-OPENVOICE-V1-OFFICIAL-BOOTSTRAP.sh.repaired4 2026-08-03 11:36:37.025572338 +0800 @@ -160,7 +160,7 @@ echo echo "--- PREPARING SHIRE VOICE DIRECTORIES ---" -for path in "$MODEL_REPO" "$VENV"; do +for path in "$VENV"; do [[ ! -e "$path" ]] || fail "Refusing to overwrite existing runtime path: $path" done @@ -239,19 +239,20 @@ echo "PASS: Exact pinned MIT licence verified and archived." echo -echo "--- CLONING OFFICIAL MYSHELL MODEL REPOSITORY ---" +echo "--- PREPARING OFFICIAL MYSHELL MODEL REPOSITORY ---" -CREATED_MODEL_REPO=1 -GIT_LFS_SKIP_SMUDGE=1 git clone \ - --depth 1 \ - https://huggingface.co/myshell-ai/OpenVoice \ - "$MODEL_REPO" +if [[ -e "$MODEL_REPO" ]]; then + [[ -d "$MODEL_REPO/.git" ]] || + fail "Existing model path is not a Git checkout." -git -C "$MODEL_REPO" lfs install --local - -git -C "$MODEL_REPO" lfs pull \ - --include="checkpoints/base_speakers/EN/*,checkpoints/converter/*" \ - --exclude="" + CREATED_MODEL_REPO=0 +else + CREATED_MODEL_REPO=1 + GIT_LFS_SKIP_SMUDGE=1 git clone \ + --depth 1 \ + https://huggingface.co/myshell-ai/OpenVoice \ + "$MODEL_REPO" +fi MODEL_REMOTE="$( git -C "$MODEL_REPO" remote get-url origin @@ -265,11 +266,51 @@ )" [[ "$MODEL_COMMIT" == "$HF_HEAD" ]] || - fail "Official model repository commit changed during installation." + fail "Official model repository commit mismatch." + +git -C "$MODEL_REPO" lfs install --local + +REQUIRED_LFS_FILES=( + "checkpoints/base_speakers/EN/checkpoint.pth" + "checkpoints/base_speakers/EN/en_default_se.pth" + "checkpoints/base_speakers/EN/en_style_se.pth" + "checkpoints/converter/checkpoint.pth" +) + +LFS_INCLUDE="$( + IFS=, + echo "${REQUIRED_LFS_FILES[*]}" +)" -git -C "$MODEL_REPO" lfs fsck +git -C "$MODEL_REPO" lfs fetch \ + origin \ + "$HF_HEAD" \ + --include="$LFS_INCLUDE" \ + --exclude="" + +git -C "$MODEL_REPO" lfs checkout "${REQUIRED_LFS_FILES[@]}" + +for REL in "${REQUIRED_LFS_FILES[@]}"; do + EXPECTED_OID="$( + git -C "$MODEL_REPO" lfs ls-files --long | + awk -v path="$REL" '$3 == path {print $1; exit}' + )" + + [[ "$EXPECTED_OID" =~ ^[0-9a-f]{64}$ ]] || + fail "Missing official LFS identifier for $REL." + + [[ -f "$MODEL_REPO/$REL" ]] || + fail "Required official model file is missing: $REL" + + ACTUAL_OID="$( + sha256sum "$MODEL_REPO/$REL" | awk '{print $1}' + )" + + [[ "$ACTUAL_OID" == "$EXPECTED_OID" ]] || + fail "Official LFS object hash mismatch: $REL" +done -echo "PASS: Official MyShell model repository downloaded at $MODEL_COMMIT." +echo "PASS: Required official English and converter assets verified at $MODEL_COMMIT." echo echo "--- VERIFYING REQUIRED OFFICIAL MODEL FILES ---"