| | """ |
| | Local test - Verifica se o sistema funciona antes de provisionar mΓ‘quina. |
| | """ |
| |
|
| | import sys |
| | import logging |
| |
|
| | logging.basicConfig(level=logging.INFO, format='%(message)s') |
| | logger = logging.getLogger(__name__) |
| |
|
| | def test_imports(): |
| | """Test if all imports work""" |
| | logger.info("=" * 60) |
| | logger.info("TEST: Imports") |
| | logger.info("=" * 60) |
| |
|
| | try: |
| | logger.info("Importing ensemble_tts...") |
| | from ensemble_tts import EnsembleAnnotator |
| | logger.info("β
Import successful") |
| | return True |
| | except Exception as e: |
| | logger.error(f"β Import failed: {e}") |
| | import traceback |
| | traceback.print_exc() |
| | return False |
| |
|
| | def test_create_annotator(): |
| | """Test creating annotator without loading models""" |
| | logger.info("\n" + "=" * 60) |
| | logger.info("TEST: Create Annotator (no model loading)") |
| | logger.info("=" * 60) |
| |
|
| | try: |
| | from ensemble_tts import EnsembleAnnotator |
| |
|
| | logger.info("Creating annotator in quick mode...") |
| | annotator = EnsembleAnnotator( |
| | mode='quick', |
| | device='cpu', |
| | enable_events=False |
| | ) |
| | logger.info(f" Mode: {annotator.mode}") |
| | logger.info(f" Device: {annotator.device}") |
| | logger.info(f" Voting: {annotator.voting_strategy}") |
| | logger.info("β
Annotator created successfully") |
| | return annotator, True |
| | except Exception as e: |
| | logger.error(f"β Annotator creation failed: {e}") |
| | import traceback |
| | traceback.print_exc() |
| | return None, False |
| |
|
| | def test_model_structure(): |
| | """Test model structure without loading weights""" |
| | logger.info("\n" + "=" * 60) |
| | logger.info("TEST: Model Structure") |
| | logger.info("=" * 60) |
| |
|
| | try: |
| | from ensemble_tts.models.emotion import EmotionEnsemble |
| |
|
| | logger.info("Creating emotion ensemble...") |
| | ensemble = EmotionEnsemble(mode='quick', device='cpu') |
| |
|
| | logger.info(f" Number of models: {len(ensemble.models)}") |
| | for model in ensemble.models: |
| | logger.info(f" - {model.name} (weight: {model.weight})") |
| |
|
| | logger.info("β
Model structure correct") |
| | return True |
| | except Exception as e: |
| | logger.error(f"β Model structure test failed: {e}") |
| | import traceback |
| | traceback.print_exc() |
| | return False |
| |
|
| | def main(): |
| | """Run local tests""" |
| | logger.info("\n" + "=" * 60) |
| | logger.info("ENSEMBLE TTS ANNOTATION - LOCAL TEST") |
| | logger.info("Testing without loading model weights") |
| | logger.info("=" * 60 + "\n") |
| |
|
| | results = {} |
| |
|
| | |
| | results['imports'] = test_imports() |
| |
|
| | if not results['imports']: |
| | logger.error("\nβ Import test failed. Please install requirements:") |
| | logger.error(" pip install -r requirements.txt") |
| | return False |
| |
|
| | |
| | annotator, success = test_create_annotator() |
| | results['create_annotator'] = success |
| |
|
| | |
| | results['model_structure'] = test_model_structure() |
| |
|
| | |
| | logger.info("\n" + "=" * 60) |
| | logger.info("TEST SUMMARY") |
| | logger.info("=" * 60) |
| |
|
| | for test_name, success in results.items(): |
| | status = "β
PASS" if success else "β FAIL" |
| | logger.info(f" {test_name}: {status}") |
| |
|
| | all_passed = all(results.values()) |
| |
|
| | if all_passed: |
| | logger.info("\n" + "=" * 60) |
| | logger.info("β
ALL LOCAL TESTS PASSED!") |
| | logger.info("=" * 60) |
| | logger.info("\nNext steps:") |
| | logger.info("1. Run full test (downloads models):") |
| | logger.info(" python scripts/test/test_quick.py") |
| | logger.info("\n2. Or test on spot instance:") |
| | logger.info(" bash scripts/test/launch_spot_test.sh") |
| | logger.info("") |
| | else: |
| | logger.error("\n" + "=" * 60) |
| | logger.error("β SOME TESTS FAILED") |
| | logger.error("=" * 60) |
| | logger.error("\nPlease check errors above and fix before proceeding.") |
| | logger.error("") |
| |
|
| | return all_passed |
| |
|
| | if __name__ == "__main__": |
| | success = main() |
| | sys.exit(0 if success else 1) |
| |
|