Spaces:
Runtime error
Runtime error
| import os | |
| from TTS.api import TTS | |
| LANG_MAP = { | |
| "english": "en", | |
| "yoruba": "en", | |
| "hausa": "en", | |
| "igbo": "en", | |
| "pidgin": "en", | |
| "esan": "en", | |
| "tiv": "en", | |
| "calabar": "en", | |
| "benin": "en", | |
| "french": "fr-fr", | |
| "portuguese": "pt-br" | |
| } | |
| class TTSEngine: | |
| def __init__(self, use_coqui=False): | |
| self.use_coqui = use_coqui | |
| self.tts = None | |
| if self.use_coqui: | |
| self.tts = TTS( | |
| "tts_models/multilingual/multi-dataset/your_tts", | |
| progress_bar=False, | |
| gpu=False | |
| ) | |
| def speak(self, text, lang="english", voice_clone=False): | |
| if not text: | |
| return None | |
| out_file = "output.wav" | |
| if self.use_coqui: | |
| lang_code = LANG_MAP.get(lang.lower(), "en") | |
| if voice_clone and os.path.exists("my_voice.wav"): | |
| # clone your own voice | |
| self.tts.tts_to_file( | |
| text=text, | |
| file_path=out_file, | |
| speaker_wav="my_voice.wav", | |
| language=lang_code | |
| ) | |
| else: | |
| # fallback to a neutral synthetic voice | |
| self.tts.tts_to_file( | |
| text=text, | |
| file_path=out_file, | |
| speaker_wav=None, # Let model pick default embedding | |
| language=lang_code | |
| ) | |
| else: | |
| import pyttsx3 | |
| engine = pyttsx3.init() | |
| engine.save_to_file(text, out_file) | |
| engine.runAndWait() | |
| return out_file | |