Spaces:
Build error
Build error
| import os | |
| import torch | |
| from TTS.utils.manage import ModelManager | |
| from TTS.utils.synthesizer import Synthesizer | |
| import tempfile | |
| from typing import Optional | |
| # 🛠️ Use Model Manager to load vocoders | |
| MODELS = {} | |
| manager = ModelManager() | |
| MODEL_NAMES = [ | |
| "en/ljspeech/glow-tts", | |
| "en/ljspeech/speedy-speech-wn", | |
| ] | |
| for MODEL_NAME in MODEL_NAMES: | |
| print(f"🚀 Downloading {MODEL_NAME}... because waiting is fun!") | |
| try: | |
| model_path, config_path, model_item = manager.download_model(f"tts_models/{MODEL_NAME}") | |
| vocoder_name: Optional[str] = model_item["default_vocoder"] | |
| vocoder_path = None | |
| vocoder_config_path = None | |
| if vocoder_name is not None: | |
| vocoder_path, vocoder_config_path, _ = manager.download_model(vocoder_name) | |
| # 🧙♂️ Load the synthesizer with vocoder and safe loading of weights | |
| synthesizer = Synthesizer( | |
| model_path, | |
| config_path, | |
| None, | |
| vocoder_path, | |
| vocoder_config_path, | |
| use_cuda=False # Make sure you're not forcing CUDA unless needed | |
| ) | |
| MODELS[MODEL_NAME] = synthesizer | |
| except Exception as e: | |
| print(f"😬 Failed to load model {MODEL_NAME}: {str(e)}") | |
| continue | |
| # 🗣️ Text to Speech (because speaking is fun, but robots do it better) | |
| def tts(text: str, model_name: str): | |
| print(text, model_name) | |
| synthesizer = MODELS.get(model_name, None) | |
| if synthesizer is None: | |
| raise NameError("Model not found, check if it's loaded properly!") | |
| try: | |
| wavs = synthesizer.tts(text) | |
| with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp: | |
| synthesizer.save_wav(wavs, fp) | |
| return fp.name | |
| except Exception as e: | |
| print(f"😬 Error generating speech: {str(e)}") | |
| return None | |