|
|
""" |
|
|
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) |
|
|
|