from TTS.api import TTS

# Inițializare TTS
tts = TTS()

# Obținerea listei de modele în mod corect
try:
    # Versiuni mai noi ale TTS
    all_models = tts.list_models()
    print("Modele disponibile pentru limba română:")
    romanian_models = [model for model in all_models if "/ro/" in model]
    for i, model in enumerate(romanian_models):
        print(f"{i+1}. {model}")
    
    if not romanian_models:
        print("Nu s-au găsit modele pentru limba română!")
        print("Toate modelele disponibile:")
        for model in all_models[:10]:  # Afișăm primele 10 pentru a nu supraaglomera consola
            print(f"- {model}")
        print("...")
except Exception as e:
    print(f"Eroare la listarea modelelor: {e}")
    print("Încercând o abordare alternativă...")
    
    try:
        # Verificare modele disponibile (metoda alternativă)
        from TTS.utils.manage import ModelManager
        model_manager = ModelManager()
        
        print("\nVerificarea modelelor disponibile:")
        model_path = model_manager.output_prefix
        print(f"Calea către modele: {model_path}")
        
        # Obținerea modelelor în alt mod
        from pathlib import Path
        models_path = Path(model_path)
        if models_path.exists():
            print("Modele găsite în:", model_path)
            for lang_dir in models_path.iterdir():
                if lang_dir.is_dir() and "ro" in lang_dir.name:
                    print(f"Modele pentru română: {lang_dir}")
                    for model in lang_dir.iterdir():
                        if model.is_dir():
                            print(f"  - {model.name}")
        else:
            print("Calea către modele nu există. Este posibil să fie necesară descărcarea modelelor.")
    except Exception as e2:
        print(f"A doua eroare: {e2}")

# Încercăm să inițializăm un model pentru română
try:
    print("\nÎncercarea de a încărca modelul pentru română...")
    # Încercăm diferite variante de nume de model
    model_variants = [
        "tts_models/ro/cv/vits",
        "ro/cv/vits",
        "tts_models/ro/cv/4"
    ]
    
    model_loaded = False
    for model_name in model_variants:
        try:
            print(f"Încercarea cu modelul: {model_name}")
            romanian_tts = TTS(model_name=model_name)
            model_loaded = True
            print(f"Model încărcat cu succes: {model_name}")
            break
        except Exception as model_error:
            print(f"Nu s-a putut încărca {model_name}: {model_error}")
    
    if model_loaded:
        # Testăm generarea unui fișier audio
        text = "Acesta este un test pentru sistemul text-to-speech în limba română."
        output_file = "test_romana.wav"
        romanian_tts.tts_to_file(text=text, file_path=output_file)
        print(f"Audio generat și salvat în: {output_file}")
    else:
        print("Nu s-a putut încărca niciun model pentru română.")
        print("Va trebui să descărcați modelul pentru română:")
        print("Rulați: pip install TTS==0.13.0")
        print("Apoi: tts --download_path=./models --path_to_config_file=./models/config.json")
except Exception as e:
    print(f"Eroare la inițializarea modelului pentru română: {e}")
    print("\nPropunere: Descărcați și instalați explicit modelul pentru română:")
    print("1. Rulați: pip install gdown")
    print("2. Rulați: gdown https://drive.google.com/uc?id=1SZ9GE0CBH-RExT0DS8KabxlFQK-KKXnN")
    print("3. Extrageți arhiva descărcată în directorul de modele al TTS")
