|
import os |
|
import subprocess |
|
import sys |
|
import fileinput |
|
import gradio as gr |
|
|
|
|
|
|
|
print("Updating apt and installing ffmpeg...") |
|
try: |
|
subprocess.run(["apt-get", "update", "-y"], check=True) |
|
subprocess.run(["apt-get", "install", "ffmpeg", "-y"], check=True) |
|
print("ffmpeg installed successfully.") |
|
except subprocess.CalledProcessError as e: |
|
print(f"Error installing ffmpeg: {e.stderr}") |
|
|
|
|
|
|
|
repo_dir = "VibeVoice" |
|
if not os.path.exists(repo_dir): |
|
print("Cloning the VibeVoice repository...") |
|
try: |
|
subprocess.run( |
|
["git", "clone", "https://github.com/microsoft/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.") |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
demo_script_path = "demo/gradio_demo.py" |
|
print(f"Modifying {demo_script_path} for CPU execution...") |
|
|
|
|
|
with fileinput.FileInput(demo_script_path, inplace=True) as file: |
|
for line in file: |
|
|
|
if 'VibeVoiceForConditionalGenerationInference.from_pretrained(' in line: |
|
print(' self.model = VibeVoiceForConditionalGenerationInference.from_pretrained(') |
|
print(' self.model_path,') |
|
print(' torch_dtype=torch.float32, # Use float32 for CPU') |
|
print(' device_map="cpu",') |
|
print(' )') |
|
|
|
next(file, None) |
|
next(file, None) |
|
next(file, None) |
|
else: |
|
print(line, end='') |
|
|
|
print("Script modified successfully.") |
|
|
|
|
|
|
|
model_id = "microsoft/VibeVoice-1.5B" |
|
|
|
|
|
command = [ |
|
"python", |
|
demo_script_path, |
|
"--model_path", |
|
model_id, |
|
"--share" |
|
] |
|
|
|
print(f"Launching Gradio demo with command: {' '.join(command)}") |
|
|
|
subprocess.run(command) |