Extend AlltalkTTSEnginesConfig

This commit is contained in:
ekoc committed 2024-11-15 10:02:16 +01:00
1 parent 1e4e18f977
commit f07ad31212
2 files changed
+30 -4

No files matched your search

+17 -2
View File
@@ -203,6 +203,19 @@ class AlltalkTTSEnginesConfig(AbstractConfig):
def save(self, path: Path | str | None = None):
self._save_file(path)
def is_valid_engine(self, engine_name):
return engine_name in self.get_engine_names_available()
def change_engine(self, requested_engine):
if requested_engine == self.engine_loaded:
return self
for engine in self.engines_available:
if engine["name"] == requested_engine:
self.engine_loaded = requested_engine
self.selected_model = engine["selected_model"]
return self
return self
class AlltalkConfig(AbstractConfig):
__instance = None
@@ -234,6 +247,9 @@ class AlltalkConfig(AbstractConfig):
AlltalkConfig.__instance._reload_on_change()
return AlltalkConfig.__instance
def get_output_directory(self):
return self.__this_dir / self.output_folder
def save(self, path: Path | str | None = None):
self._save_file(path, lambda o: o.__dict__)
@@ -250,5 +266,4 @@ class AlltalkConfig(AbstractConfig):
self.theme.clazz = data.theme.__dict__["class"]
# As a side effect, create the output directory:
output_directory = self.__this_dir / self.output_folder
output_directory.mkdir(parents=True, exist_ok=True)
self.get_output_directory().mkdir(parents=True, exist_ok=True)
+13 -2
View File
@@ -9,8 +9,8 @@ from config import AlltalkConfig, AlltalkTTSEnginesConfig
class TestAlltalkConfig(unittest.TestCase):
def setUp(self):
self.config = AlltalkConfig.get_instance()
self.ttsEnginesConfig = AlltalkTTSEnginesConfig.get_instance()
self.config = AlltalkConfig.get_instance().reload()
self.ttsEnginesConfig = AlltalkTTSEnginesConfig.get_instance().reload()
def test_default_config_path(self):
expected_config_path = Path(__file__).parent.parent.resolve() / "confignew.json"
@@ -127,6 +127,17 @@ class TestAlltalkConfig(unittest.TestCase):
self.assertEqual(self.ttsEnginesConfig.selected_model, "piper")
self.assertListEqual(self.ttsEnginesConfig.get_engine_names_available(), ["parler", "piper", "vits", "xtts", "f5tts"])
def test_is_valid_engine(self):
for engine in ["parler", "piper", "vits", "xtts", "f5tts"]:
self.assertTrue(self.ttsEnginesConfig.is_valid_engine(engine))
self.assertFalse(self.ttsEnginesConfig.is_valid_engine("foo"))
def test_change_tts_engine(self):
self.ttsEnginesConfig.change_engine("vits")
self.assertEqual(self.ttsEnginesConfig.engine_loaded, "vits")
self.assertEqual(self.ttsEnginesConfig.selected_model, "vits - tts_models--en--vctk--vits")
def test_tts_engines_default_config_path(self):
expected_config_path = os.path.join(Path(__file__).parent.parent.resolve(), "system", "tts_engines", "tts_engines.json")
self.assertEqual(self.ttsEnginesConfig.get_config_path(), Path(expected_config_path))