import random import pyttsx3 from utils import settings class pyttsx: def __init__(self): self.max_chars = 5000 self.voices = [] def run( self, text: str, filepath: str, random_voice=False, ): voice_id = settings.config["settings"]["tts"]["python_voice"] voice_num = settings.config["settings"]["tts"]["py_voice_num"] if voice_id == "" or voice_num == "": voice_id = 2 voice_num = 3 raise ValueError( "set pyttsx values to a valid value, switching to defaults" ) else: voice_id = int(voice_id) voice_num = int(voice_num) for i in range(voice_num): self.voices.append(i) i = +1 if random_voice: voice_id = self.randomvoice() engine = pyttsx3.init() voices = engine.getProperty("voices") engine.setProperty( "voice", voices[voice_id].id ) # changing index changes voices but ony 0 and 1 are working here engine.save_to_file(text, f"{filepath}") engine.runAndWait() def randomvoice(self): return random.choice(self.voices)