Spaces:
Running
Running
File size: 2,933 Bytes
b7658fb 6b64262 3f97053 4324db0 3f97053 4324db0 6b64262 3f97053 6b64262 9463842 6b64262 4324db0 6b64262 4324db0 6b64262 4324db0 21a831f 4324db0 21a831f 4324db0 21a831f 4324db0 6b64262 21a831f 6b64262 4324db0 6b64262 21a831f 6b64262 |
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 |
import os
import subprocess
import sys
from pathlib import Path
# --- 1. Clone the VibeVoice Repository ---
repo_dir = "VibeVoice"
if not os.path.exists(repo_dir):
print("Cloning the VibeVoice repository...")
try:
subprocess.run(
["git", "clone", "https://github.com/vibevoice-community/VibeVoice.git"],
check=True,
capture_output=True,
text=True
)
print("Repository cloned successfully.")
except subprocess.CalledProcessError as e:
print(f"Error cloning repository: {e.stderr}")
sys.exit(1)
else:
print("Repository already exists. Skipping clone.")
# --- 2. Install the Package ---
os.chdir(repo_dir)
print(f"Changed directory to: {os.getcwd()}")
print("Installing the VibeVoice package...")
try:
subprocess.run(
[sys.executable, "-m", "pip", "install", "-e", "."],
check=True,
capture_output=True,
text=True
)
print("Package installed successfully.")
except subprocess.CalledProcessError as e:
print(f"Error installing package: {e.stderr}")
sys.exit(1)
# --- 3. Modify the demo script for CPU execution (Robust Method) ---
demo_script_path = Path("demo/gradio_demo.py")
print(f"Modifying {demo_script_path} for CPU execution...")
try:
# Read the entire file content
file_content = demo_script_path.read_text()
# Define the original GPU-specific model loading block
original_block = """ self.model = VibeVoiceForConditionalGenerationInference.from_pretrained(
self.model_path,
torch_dtype=torch.bfloat16,
device_map='cuda',
attn_implementation="flash_attention_2",
)"""
# Define the new CPU-compatible block
replacement_block = """ self.model = VibeVoiceForConditionalGenerationInference.from_pretrained(
self.model_path,
torch_dtype=torch.float32, # Use float32 for CPU
device_map="cpu",
)"""
# Replace the entire block
if original_block in file_content:
modified_content = file_content.replace(original_block, replacement_block)
# Write the modified content back to the file
demo_script_path.write_text(modified_content)
print("Script modified successfully.")
else:
print("Warning: GPU-specific model loading block not found. The script might have been updated. Proceeding without modification.")
except Exception as e:
print(f"An error occurred while modifying the script: {e}")
sys.exit(1)
# --- 4. Launch the Gradio Demo ---
model_id = "microsoft/VibeVoice-1.5B"
# Construct the command as specified in the README
command = [
"python",
str(demo_script_path),
"--model_path",
model_id,
"--share"
]
print(f"Launching Gradio demo with command: {' '.join(command)}")
# This command will start the Gradio server
subprocess.run(command) |