Spaces:
Running
on
Zero
Running
on
Zero
| """ | |
| Test generation script for ACE-Step Custom Edition | |
| """ | |
| import sys | |
| from pathlib import Path | |
| import logging | |
| # Add src to path | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| from src import ACEStepEngine, load_config, setup_logging | |
| logger = setup_logging() | |
| def test_basic_generation(): | |
| """Test basic music generation.""" | |
| logger.info("\n" + "="*60) | |
| logger.info("Testing Basic Music Generation") | |
| logger.info("="*60) | |
| try: | |
| # Load config | |
| config = load_config() | |
| # Initialize engine | |
| logger.info("Initializing ACE-Step engine...") | |
| engine = ACEStepEngine(config) | |
| # Test generation | |
| logger.info("\nGenerating test audio...") | |
| audio_path = engine.generate( | |
| prompt="A cheerful pop song with piano and drums", | |
| lyrics=None, | |
| duration=10, # Short test | |
| temperature=0.7, | |
| seed=42 | |
| ) | |
| logger.info(f"\nβ Generation successful!") | |
| logger.info(f"Output: {audio_path}") | |
| return True | |
| except Exception as e: | |
| logger.error(f"\nβ Generation failed: {e}") | |
| import traceback | |
| traceback.print_exc() | |
| return False | |
| def test_timeline_workflow(): | |
| """Test timeline-based generation.""" | |
| logger.info("\n" + "="*60) | |
| logger.info("Testing Timeline Workflow") | |
| logger.info("="*60) | |
| try: | |
| from src import TimelineManager | |
| config = load_config() | |
| timeline = TimelineManager(config) | |
| logger.info("Creating timeline...") | |
| timeline_id = timeline.create_timeline() | |
| logger.info(f"Timeline ID: {timeline_id}") | |
| logger.info("\nβ Timeline system operational!") | |
| return True | |
| except Exception as e: | |
| logger.error(f"\nβ Timeline test failed: {e}") | |
| return False | |
| def test_audio_processing(): | |
| """Test audio processing utilities.""" | |
| logger.info("\n" + "="*60) | |
| logger.info("Testing Audio Processing") | |
| logger.info("="*60) | |
| try: | |
| from src import AudioProcessor | |
| import numpy as np | |
| config = load_config() | |
| processor = AudioProcessor(config) | |
| # Create test audio | |
| test_audio = np.random.randn(2, 44100) * 0.1 # 1 second stereo | |
| # Test normalization | |
| normalized = processor.normalize_audio(test_audio) | |
| logger.info("β Normalization OK") | |
| # Test crossfade | |
| crossfaded = processor.crossfade(test_audio, test_audio, fade_duration=0.5) | |
| logger.info("β Crossfade OK") | |
| logger.info("\nβ Audio processing operational!") | |
| return True | |
| except Exception as e: | |
| logger.error(f"\nβ Audio processing test failed: {e}") | |
| return False | |
| def main(): | |
| """Run all tests.""" | |
| logger.info(""" | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β ACE-Step Custom Edition - Test Suite β | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| """) | |
| results = { | |
| "Audio Processing": test_audio_processing(), | |
| "Timeline Workflow": test_timeline_workflow(), | |
| # "Basic Generation": test_basic_generation(), # Requires model download | |
| } | |
| # Summary | |
| logger.info("\n" + "="*60) | |
| logger.info("Test Summary") | |
| logger.info("="*60) | |
| all_passed = True | |
| for test_name, passed in results.items(): | |
| status = "β PASS" if passed else "β FAIL" | |
| logger.info(f"{status} - {test_name}") | |
| if not passed: | |
| all_passed = False | |
| logger.info("="*60) | |
| if all_passed: | |
| logger.info("\nβ All tests passed!") | |
| logger.info("\nNote: Full generation test requires model download.") | |
| logger.info("Run: python scripts/download_model.py") | |
| else: | |
| logger.error("\nβ Some tests failed. Check logs above.") | |
| sys.exit(1) | |
| if __name__ == "__main__": | |
| main() | |