From 89102347a956ebcfe9a83ae7d1aa1336f1c53483 Mon Sep 17 00:00:00 2001 From: ben_mkiv Date: Tue, 22 Aug 2023 23:09:42 +0200 Subject: [PATCH 1/6] favor existing arguments from parameters (kwargs) over global (args) --- src/utils.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utils.py b/src/utils.py index 1eaefb7..e970b70 100755 --- a/src/utils.py +++ b/src/utils.py @@ -1015,7 +1015,7 @@ def generate_tortoise(**kwargs): 'cond_free_k': float(parameters['cond_free_k']), 'num_autoregressive_samples': parameters['num_autoregressive_samples'], - 'sample_batch_size': args.sample_batch_size, + 'sample_batch_size': parameters['sample_batch_size'] if parameters.get('sample_batch_size') else args.sample_batch_size, 'diffusion_iterations': parameters['diffusion_iterations'], 'voice_samples': None, @@ -1030,9 +1030,9 @@ def generate_tortoise(**kwargs): 'cond_free': "Conditioning-Free" in parameters['experimentals'], 'cvvp_amount': parameters['cvvp_weight'], - 'autoregressive_model': args.autoregressive_model, - 'diffusion_model': args.diffusion_model, - 'tokenizer_json': args.tokenizer_json, + 'autoregressive_model': parameters['autoregressive_model'] if parameters.get('autoregressive_model') else args.autoregressive_model, + 'diffusion_model': parameters['diffusion_model'] if parameters.get('diffusion_model') else args.diffusion_model, + 'tokenizer_json': parameters['tokenizer_json'] if parameters.get('tokenizer_json') else args.tokenizer_json, } # could be better to just do a ternary on everything above, but i am not a professional @@ -1046,6 +1046,7 @@ def generate_tortoise(**kwargs): continue settings[k] = override[k] + if settings['autoregressive_model'] is not None: if settings['autoregressive_model'] == "auto": settings['autoregressive_model'] = deduce_autoregressive_model(selected_voice) From d1dbe3e464160d9dc16293850c08b265a43605fa Mon Sep 17 00:00:00 2001 From: ben_mkiv Date: Tue, 22 Aug 2023 23:33:02 +0200 Subject: [PATCH 2/6] added parameter to specify the autoregressive_model (tho it still loads the default model first, and then loads the target model, which seems to be because TTS loading just loads whatever is set in the settings first) removed load_tts() call, the cli tool now relys on generate() to load the tts system, which is less fail prone imho --- src/cli.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cli.py b/src/cli.py index d463edc..b3d7ddb 100755 --- a/src/cli.py +++ b/src/cli.py @@ -32,6 +32,7 @@ if __name__ == "__main__": parser.add_argument("--breathing_room", default=default_arguments['breathing_room']) parser.add_argument("--cvvp_weight", default=default_arguments['cvvp_weight']) parser.add_argument("--top_p", default=default_arguments['top_p']) + parser.add_argument("--autoregressive_model", default=default_arguments['autoregressive_model']) parser.add_argument("--diffusion_temperature", default=default_arguments['diffusion_temperature']) parser.add_argument("--length_penalty", default=default_arguments['length_penalty']) parser.add_argument("--repetition_penalty", default=default_arguments['repetition_penalty']) @@ -55,6 +56,7 @@ if __name__ == "__main__": 'breathing_room': args.breathing_room, 'cvvp_weight': args.cvvp_weight, 'top_p': args.top_p, + 'autoregressive_model': args.autoregressive_model, 'diffusion_temperature': args.diffusion_temperature, 'length_penalty': args.length_penalty, 'repetition_penalty': args.repetition_penalty, @@ -62,5 +64,6 @@ if __name__ == "__main__": 'experimentals': default_arguments['experimentals'], } - tts = load_tts() + # cli should rely on generate() for loading the TTS backend + #tts = load_tts() generate(**kwargs) \ No newline at end of file From f087b45943cc20e1cc163df7b5b38695cb548cf4 Mon Sep 17 00:00:00 2001 From: ben_mkiv Date: Wed, 23 Aug 2023 19:11:13 +0200 Subject: [PATCH 3/6] Revert "added parameter to specify the autoregressive_model (tho it still loads the default model first, and then loads the target model, which seems to be because TTS loading just loads whatever is set in the settings first)" This reverts commit d1dbe3e464160d9dc16293850c08b265a43605fa. --- src/cli.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/cli.py b/src/cli.py index b3d7ddb..d463edc 100755 --- a/src/cli.py +++ b/src/cli.py @@ -32,7 +32,6 @@ if __name__ == "__main__": parser.add_argument("--breathing_room", default=default_arguments['breathing_room']) parser.add_argument("--cvvp_weight", default=default_arguments['cvvp_weight']) parser.add_argument("--top_p", default=default_arguments['top_p']) - parser.add_argument("--autoregressive_model", default=default_arguments['autoregressive_model']) parser.add_argument("--diffusion_temperature", default=default_arguments['diffusion_temperature']) parser.add_argument("--length_penalty", default=default_arguments['length_penalty']) parser.add_argument("--repetition_penalty", default=default_arguments['repetition_penalty']) @@ -56,7 +55,6 @@ if __name__ == "__main__": 'breathing_room': args.breathing_room, 'cvvp_weight': args.cvvp_weight, 'top_p': args.top_p, - 'autoregressive_model': args.autoregressive_model, 'diffusion_temperature': args.diffusion_temperature, 'length_penalty': args.length_penalty, 'repetition_penalty': args.repetition_penalty, @@ -64,6 +62,5 @@ if __name__ == "__main__": 'experimentals': default_arguments['experimentals'], } - # cli should rely on generate() for loading the TTS backend - #tts = load_tts() + tts = load_tts() generate(**kwargs) \ No newline at end of file From a17078a792f79711a082528f0b09be2604b5c1f1 Mon Sep 17 00:00:00 2001 From: ben_mkiv Date: Wed, 23 Aug 2023 19:20:54 +0200 Subject: [PATCH 4/6] Revert "added parameter to specify the autoregressive_model (tho it still loads the default model first, and then loads the target model, which seems to be because TTS loading just loads whatever is set in the settings first)" This reverts commit d1dbe3e464160d9dc16293850c08b265a43605fa. --- src/api/websocket_server.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/api/websocket_server.py b/src/api/websocket_server.py index 7695fbc..87fb2d9 100644 --- a/src/api/websocket_server.py +++ b/src/api/websocket_server.py @@ -4,7 +4,7 @@ from threading import Thread from websockets.server import serve -from utils import generate, get_autoregressive_models, get_voice_list +from utils import generate, get_autoregressive_models, get_voice_list, tts, args # this is a not so nice workaround to set values to None if their string value is "None" @@ -19,6 +19,21 @@ def replaceNoneStringWithNone(message): async def _handle_generate(websocket, message): + global args + + # update args parameters which control the model settings + if message.get('autoregressive_model'): + args.autoregressive_model = message['autoregressive_model'] + + if message.get('diffusion_model'): + args.diffusion_model = message['diffusion_model'] + + if message.get('tokenizer_json'): + args.tokenizer_json = message['tokenizer_json'] + + if message.get('sample_batch_size'): + args.sample_batch_size = message['sample_batch_size'] + message['result'] = generate(**message) await websocket.send(json.dumps(replaceNoneStringWithNone(message))) From a9d2f241a55ee446be1c04f15b733878d735aac1 Mon Sep 17 00:00:00 2001 From: ben_mkiv Date: Wed, 23 Aug 2023 19:22:34 +0200 Subject: [PATCH 5/6] Revert "favor existing arguments from parameters (kwargs) over global (args)" This reverts commit 89102347a956ebcfe9a83ae7d1aa1336f1c53483. args are now updated in the websocket server --- src/utils.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/utils.py b/src/utils.py index e970b70..1eaefb7 100755 --- a/src/utils.py +++ b/src/utils.py @@ -1015,7 +1015,7 @@ def generate_tortoise(**kwargs): 'cond_free_k': float(parameters['cond_free_k']), 'num_autoregressive_samples': parameters['num_autoregressive_samples'], - 'sample_batch_size': parameters['sample_batch_size'] if parameters.get('sample_batch_size') else args.sample_batch_size, + 'sample_batch_size': args.sample_batch_size, 'diffusion_iterations': parameters['diffusion_iterations'], 'voice_samples': None, @@ -1030,9 +1030,9 @@ def generate_tortoise(**kwargs): 'cond_free': "Conditioning-Free" in parameters['experimentals'], 'cvvp_amount': parameters['cvvp_weight'], - 'autoregressive_model': parameters['autoregressive_model'] if parameters.get('autoregressive_model') else args.autoregressive_model, - 'diffusion_model': parameters['diffusion_model'] if parameters.get('diffusion_model') else args.diffusion_model, - 'tokenizer_json': parameters['tokenizer_json'] if parameters.get('tokenizer_json') else args.tokenizer_json, + 'autoregressive_model': args.autoregressive_model, + 'diffusion_model': args.diffusion_model, + 'tokenizer_json': args.tokenizer_json, } # could be better to just do a ternary on everything above, but i am not a professional @@ -1046,7 +1046,6 @@ def generate_tortoise(**kwargs): continue settings[k] = override[k] - if settings['autoregressive_model'] is not None: if settings['autoregressive_model'] == "auto": settings['autoregressive_model'] = deduce_autoregressive_model(selected_voice) From 6a5af79c5c5398e4928979f507b52a34aae826bd Mon Sep 17 00:00:00 2001 From: ben_mkiv Date: Wed, 23 Aug 2023 19:24:00 +0200 Subject: [PATCH 6/6] remove unused import --- src/api/websocket_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/websocket_server.py b/src/api/websocket_server.py index 87fb2d9..f0bfb9c 100644 --- a/src/api/websocket_server.py +++ b/src/api/websocket_server.py @@ -4,7 +4,7 @@ from threading import Thread from websockets.server import serve -from utils import generate, get_autoregressive_models, get_voice_list, tts, args +from utils import generate, get_autoregressive_models, get_voice_list, args # this is a not so nice workaround to set values to None if their string value is "None"