Spaces:
Running on Zero
Running on Zero
| """ | |
| Hyper-RVC Application Entry Point | |
| Launches the Gradio WebUI for AI Voice Conversion | |
| """ | |
| import os | |
| import sys | |
| import subprocess | |
| import logging | |
| # Configure logging | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| logger = logging.getLogger(__name__) | |
| def check_dependencies(): | |
| """Check if required packages are installed.""" | |
| required_packages = ['gradio', 'torch', 'librosa', 'soundfile'] | |
| missing = [] | |
| for pkg in required_packages: | |
| try: | |
| __import__(pkg) | |
| except ImportError: | |
| missing.append(pkg) | |
| if missing: | |
| logger.warning(f"Missing packages: {missing}. Attempting to install...") | |
| for pkg in missing: | |
| subprocess.check_call([sys.executable, "-m", "pip", "install", pkg]) | |
| logger.info("Dependencies installed successfully.") | |
| def download_required_models(): | |
| """Download required AI models for RVC processing.""" | |
| logger.info("Checking/downloading required models...") | |
| try: | |
| result = subprocess.run( | |
| [sys.executable, "src/download_models.py"], | |
| cwd=os.path.dirname(os.path.abspath(__file__)), | |
| capture_output=True, | |
| text=True, | |
| timeout=300 # 5 minute timeout | |
| ) | |
| if result.returncode != 0: | |
| logger.error(f"Model download error: {result.stderr}") | |
| else: | |
| logger.info("Models ready.") | |
| except subprocess.TimeoutExpired: | |
| logger.warning("Model download timed out. Some features may not work.") | |
| except Exception as e: | |
| logger.error(f"Error during model setup: {e}") | |
| def main(): | |
| """Main entry point for Hyper-RVC application.""" | |
| print("="*60) | |
| print(" Hyper-RVC - AI Voice Conversion System") | |
| print("="*60) | |
| print() | |
| # Check and install dependencies | |
| check_dependencies() | |
| # Download required models | |
| download_required_models() | |
| # Parse command line arguments | |
| args = " ".join(sys.argv[1:]) | |
| # Launch WebUI | |
| cmd = f"python src/webui.py {args}" | |
| print() | |
| print("🚀 Starting Hyper-RVC WebUI...") | |
| print(" The interface will be available at http://localhost:7860") | |
| print() | |
| print(" Press Ctrl+C to stop the server") | |
| print("-"*60) | |
| os.system(cmd) | |
| if __name__ == "__main__": | |
| main() | |