From 5003bc89d3865d20ab96cc2192eb74ea46eacf2a Mon Sep 17 00:00:00 2001 From: mrq Date: Thu, 4 May 2023 23:40:33 +0000 Subject: [PATCH] cleaned up brain worms with wrapping around gradio progress by instead just using tqdm directly (slight regressions with some messages not getting pushed) --- modules/tortoise-tts | 2 +- src/utils.py | 70 ++++++++++++++++++++------------------------ src/webui.py | 6 ++-- 3 files changed, 35 insertions(+), 43 deletions(-) diff --git a/modules/tortoise-tts b/modules/tortoise-tts index 086aad5..c90ee7c 160000 --- a/modules/tortoise-tts +++ b/modules/tortoise-tts @@ -1 +1 @@ -Subproject commit 086aad5b49e7ef39d043c6b0e12ac33c20773ab8 +Subproject commit c90ee7c5296992ad96c8790b5b7cc3737062e1e6 diff --git a/src/utils.py b/src/utils.py index 5d2089a..785f470 100755 --- a/src/utils.py +++ b/src/utils.py @@ -238,7 +238,7 @@ def generate_bark(**kwargs): if tts_loading: raise Exception("TTS is still initializing...") if progress is not None: - progress(0, "Initializing TTS...") + notify_progress("Initializing TTS...", progress=progress) load_tts() if hasattr(tts, "loading") and tts.loading: raise Exception("TTS is still initializing...") @@ -339,8 +339,8 @@ def generate_bark(**kwargs): INFERENCING = True for line, cut_text in enumerate(texts): - progress.msg_prefix = f'[{str(line+1)}/{str(len(texts))}]' - print(f"{progress.msg_prefix} Generating line: {cut_text}") + tqdm_prefix = f'[{str(line+1)}/{str(len(texts))}]' + print(f"{tqdm_prefix} Generating line: {cut_text}") start_time = time.time() # do setting editing @@ -422,12 +422,12 @@ def generate_bark(**kwargs): if args.voice_fixer: if not voicefixer: - progress(0, "Loading voicefix...") + notify_progress("Loading voicefix...", progress=progress) load_voicefixer() try: fixed_cache = {} - for name in progress.tqdm(audio_cache, desc="Running voicefix..."): + for name in tqdm(audio_cache, desc="Running voicefix..."): del audio_cache[name]['audio'] if 'output' not in audio_cache[name] or not audio_cache[name]['output']: continue @@ -467,7 +467,7 @@ def generate_bark(**kwargs): f.write(json.dumps(audio_cache[name]['settings'], indent='\t') ) if args.embed_output_metadata: - for name in progress.tqdm(audio_cache, desc="Embedding metadata..."): + for name in tqdm(audio_cache, desc="Embedding metadata..."): if 'pruned' in audio_cache[name] and audio_cache[name]['pruned']: continue @@ -521,7 +521,7 @@ def generate_valle(**kwargs): if tts_loading: raise Exception("TTS is still initializing...") if progress is not None: - progress(0, "Initializing TTS...") + notify_progress("Initializing TTS...", progress=progress) load_tts() if hasattr(tts, "loading") and tts.loading: raise Exception("TTS is still initializing...") @@ -630,8 +630,8 @@ def generate_valle(**kwargs): INFERENCING = True for line, cut_text in enumerate(texts): - progress.msg_prefix = f'[{str(line+1)}/{str(len(texts))}]' - print(f"{progress.msg_prefix} Generating line: {cut_text}") + tqdm_prefix = f'[{str(line+1)}/{str(len(texts))}]' + print(f"{tqdm_prefix} Generating line: {cut_text}") start_time = time.time() # do setting editing @@ -715,12 +715,12 @@ def generate_valle(**kwargs): if args.voice_fixer: if not voicefixer: - progress(0, "Loading voicefix...") + notify_progress("Loading voicefix...", progress=progress) load_voicefixer() try: fixed_cache = {} - for name in progress.tqdm(audio_cache, desc="Running voicefix..."): + for name in tqdm(audio_cache, desc="Running voicefix..."): del audio_cache[name]['audio'] if 'output' not in audio_cache[name] or not audio_cache[name]['output']: continue @@ -760,7 +760,7 @@ def generate_valle(**kwargs): f.write(json.dumps(audio_cache[name]['settings'], indent='\t') ) if args.embed_output_metadata: - for name in progress.tqdm(audio_cache, desc="Embedding metadata..."): + for name in tqdm(audio_cache, desc="Embedding metadata..."): if 'pruned' in audio_cache[name] and audio_cache[name]['pruned']: continue @@ -839,7 +839,7 @@ def generate_tortoise(**kwargs): voice_samples, conditioning_latents = None, tts.get_random_conditioning_latents() else: if progress is not None: - progress(0, desc=f"Loading voice: {voice}") + notify_progress(f"Loading voice: {voice}", progress=progress) voice_samples, conditioning_latents = load_voice(voice, model_hash=tts.autoregressive_model_hash) @@ -1032,8 +1032,8 @@ def generate_tortoise(**kwargs): elif parameters['emotion'] != "None" and parameters['emotion']: cut_text = f"[I am really {parameters['emotion'].lower()},] {cut_text}" - progress.msg_prefix = f'[{str(line+1)}/{str(len(texts))}]' - print(f"{progress.msg_prefix} Generating line: {cut_text}") + tqdm_prefix = f'[{str(line+1)}/{str(len(texts))}]' + print(f"{tqdm_prefix} Generating line: {cut_text}") start_time = time.time() # do setting editing @@ -1115,12 +1115,12 @@ def generate_tortoise(**kwargs): if args.voice_fixer: if not voicefixer: - progress(0, "Loading voicefix...") + notify_progress("Loading voicefix...", progress=progress) load_voicefixer() try: fixed_cache = {} - for name in progress.tqdm(audio_cache, desc="Running voicefix..."): + for name in tqdm(audio_cache, desc="Running voicefix..."): del audio_cache[name]['audio'] if 'output' not in audio_cache[name] or not audio_cache[name]['output']: continue @@ -1160,7 +1160,7 @@ def generate_tortoise(**kwargs): f.write(json.dumps(audio_cache[name]['settings'], indent='\t') ) if args.embed_output_metadata: - for name in progress.tqdm(audio_cache, desc="Embedding metadata..."): + for name in tqdm(audio_cache, desc="Embedding metadata..."): if 'pruned' in audio_cache[name] and audio_cache[name]['pruned']: continue @@ -1309,7 +1309,7 @@ def compute_latents(voice=None, voice_samples=None, voice_latents_chunks=0, prog if voice_samples is None: return - conditioning_latents = tts.get_conditioning_latents(voice_samples, return_mels=not args.latents_lean_and_mean, slices=voice_latents_chunks, force_cpu=args.force_cpu_for_conditioning_latents, progress=progress) + conditioning_latents = tts.get_conditioning_latents(voice_samples, return_mels=not args.latents_lean_and_mean, slices=voice_latents_chunks, force_cpu=args.force_cpu_for_conditioning_latents) if len(conditioning_latents) == 4: conditioning_latents = (conditioning_latents[0], conditioning_latents[1], conditioning_latents[2], None) @@ -2117,7 +2117,7 @@ def transcribe_dataset( voice, language=None, skip_existings=False, progress=Non if os.path.exists(infile): results = json.load(open(infile, 'r', encoding="utf-8")) - for file in enumerate_progress(files, desc="Iterating through voice files", progress=progress): + for file in tqdm(files, desc="Iterating through voice files"): basename = os.path.basename(file) if basename in results and skip_existings: @@ -2246,7 +2246,7 @@ def phonemize_txt_file( path ): reparsed = [] with open(path.replace(".txt", ".phn.txt"), 'a', encoding='utf-8') as f: - for line in enumerate_progress(lines, desc='Phonemizing...'): + for line in tqdm(lines, desc='Phonemizing...'): split = line.split("|") audio = split[0] text = split[2] @@ -2357,7 +2357,7 @@ def prepare_dataset( voice, use_segments=False, text_length=0, audio_length=0, p text_length = 0 audio_length = 0 - for filename in enumerate_progress(results, desc="Parsing results", progress=progress): + for filename in tqdm(results, desc="Parsing results"): use_segment = use_segments result = results[filename] @@ -2438,7 +2438,7 @@ def prepare_dataset( voice, use_segments=False, text_length=0, audio_length=0, p 'phonemize': [[], []], } - for file in enumerate_progress(segments, desc="Parsing segments", progress=progress): + for file in tqdm(segments, desc="Parsing segments"): result = segments[file] path = f'{indir}/audio/{file}' @@ -2511,7 +2511,7 @@ def prepare_dataset( voice, use_segments=False, text_length=0, audio_length=0, p print("Phonemized:", file, normalized, text) """ - for i in enumerate_progress(range(len(jobs['quantize'][0])), desc="Quantizing", progress=progress): + for i in tqdm(range(len(jobs['quantize'][0])), desc="Quantizing"): qnt_file = jobs['quantize'][0][i] waveform, sample_rate = jobs['quantize'][1][i] @@ -2519,7 +2519,7 @@ def prepare_dataset( voice, use_segments=False, text_length=0, audio_length=0, p torch.save(quantized, qnt_file) print("Quantized:", qnt_file) - for i in enumerate_progress(range(len(jobs['phonemize'][0])), desc="Phonemizing", progress=progress): + for i in tqdm(range(len(jobs['phonemize'][0])), desc="Phonemizing"): phn_file = jobs['phonemize'][0][i] normalized = jobs['phonemize'][1][i] @@ -2807,7 +2807,7 @@ def import_voices(files, saveAs=None, progress=None): if not isinstance(files, list): files = [files] - for file in enumerate_progress(files, desc="Importing voice files", progress=progress): + for file in tqdm(files, desc="Importing voice files"): j, latents = read_generate_settings(file, read_latents=True) if j is not None and saveAs is None: @@ -3025,22 +3025,14 @@ def check_for_updates( dir = None ): return False -def enumerate_progress(iterable, desc=None, progress=None, verbose=None): - if verbose and desc is not None: - print(desc) - - if progress is None: - return tqdm(iterable, disable=False) #not verbose) - return progress.tqdm(iterable, desc=f'{progress.msg_prefix} {desc}' if hasattr(progress, 'msg_prefix') else desc) - def notify_progress(message, progress=None, verbose=True): if verbose: print(message) if progress is None: - return - - progress(0, desc=message) + tqdm.write( desc=message) + else: + progress(0, desc=message) def get_args(): global args @@ -3650,7 +3642,7 @@ def load_whisper_model(language=None, model_name=None, progress=None): model_name = f'{model_name}.{language}' print(f"Loading specialized model for language: {language}") - notify_progress(f"Loading Whisper model: {model_name}", progress) + notify_progress(f"Loading Whisper model: {model_name}", progress=progress) if args.whisper_backend == "openai/whisper": import whisper @@ -3733,7 +3725,7 @@ def merge_models( primary_model_name, secondary_model_name, alpha, progress=gr.P theta_0 = read_model(primary_model_name) theta_1 = read_model(secondary_model_name) - for key in enumerate_progress(theta_0.keys(), desc="Merging...", progress=progress): + for key in tqdm(theta_0.keys(), desc="Merging..."): if key in key_blacklist: print("Skipping ignored key:", key) continue diff --git a/src/webui.py b/src/webui.py index e079675..deefe20 100755 --- a/src/webui.py +++ b/src/webui.py @@ -200,7 +200,7 @@ def read_generate_settings_proxy(file, saveAs='.temp'): def slice_dataset_proxy( voice, trim_silence, start_offset, end_offset, progress=gr.Progress(track_tqdm=True) ): return slice_dataset( voice, trim_silence=trim_silence, start_offset=start_offset, end_offset=end_offset, results=None, progress=progress ) -def diarize_dataset( voice, progress=gr.Progress(track_tqdm=False) ): +def diarize_dataset( voice, progress=gr.Progress(track_tqdm=True) ): from pyannote.audio import Pipeline pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization", use_auth_token=args.hf_token) @@ -215,7 +215,7 @@ def diarize_dataset( voice, progress=gr.Progress(track_tqdm=False) ): return "\n".join(messages) -def prepare_all_datasets( language, validation_text_length, validation_audio_length, skip_existings, slice_audio, trim_silence, slice_start_offset, slice_end_offset, progress=gr.Progress(track_tqdm=False) ): +def prepare_all_datasets( language, validation_text_length, validation_audio_length, skip_existings, slice_audio, trim_silence, slice_start_offset, slice_end_offset, progress=gr.Progress(track_tqdm=True) ): kwargs = locals() messages = [] @@ -239,7 +239,7 @@ def prepare_all_datasets( language, validation_text_length, validation_audio_len return "\n".join(messages) -def prepare_dataset_proxy( voice, language, validation_text_length, validation_audio_length, skip_existings, slice_audio, trim_silence, slice_start_offset, slice_end_offset, progress=gr.Progress(track_tqdm=False) ): +def prepare_dataset_proxy( voice, language, validation_text_length, validation_audio_length, skip_existings, slice_audio, trim_silence, slice_start_offset, slice_end_offset, progress=gr.Progress(track_tqdm=True) ): messages = [] message = transcribe_dataset( voice=voice, language=language, skip_existings=skip_existings, progress=progress )