erew123 / alltalk_tts

AllTalk is based on the Coqui TTS engine, similar to the Coqui_tts extension for Text generation webUI, however supports a variety of advanced features, such as a settings page, low VRAM support, DeepSpeed, narrator, model finetuning, custom models, wav file maintenance. It can also be used with 3rd Party software via JSON calls.
GNU Affero General Public License v3.0
1.16k stars 122 forks source link

Can Latent speaker files be used? #413

Closed GamingDaveUk closed 1 week ago

GamingDaveUk commented 1 week ago

I recently had to setup a skyrim ai system that uses supports a custom xtts setup. The custom xtts setup supports the usual .wav files but provides the voices in a separate download the strange thing is they are in json files in a folder called "latent_speaker_folder" the contents of the files are like the following: {"gpt_cond_latent": [[[1.1142475605010986, 0.0763007402420044, 0.3951142132282257, -0.6892390847206116, -1.049623966217041, -1.6228729486465454, -1.4512044191360474, -0.09580978006124496, 0.3867848217487335, -0.6167570352554321, -0.9752438068389893, -1.6081340312957764, 0.15551380813121796, 2.714679479598999, 0.1375233381986618, -0.37101680040359497, and so on... lots and lots of numbers... but no wav file.

Is it possible to use such json files in alltalks version of xtts?

erew123 commented 1 week ago

@GamingDaveUk The answer is currently no, closely followed by a BUT...

I can do it pretty easily. Im on with a large code tidy up and I can probably have something working within a short while! I just want to tidy up some other code in that specific script, so ill do it all at once.

Would that work?

GamingDaveUk commented 1 week ago

@GamingDaveUk The answer is currently no, closely followed by a BUT...

I can do it pretty easily. Im on with a large code tidy up and I can probably have something working within a short while! I just want to tidy up some other code in that specific script, so ill do it all at once.

Would that work?

A no, but it will happen in the future is good enough for me :) I currently use the "AllTalk TTS Generator" a ton for the games I am playing with mates so can I also add Thank you! :)

erew123 commented 1 week ago

Will be in the next big push of AllTalk (should be within a few days)

image

Thanks

GamingDaveUk commented 6 days ago

Will there be a way to convert a wav to a latent? (not 100% sure on how that process works i must confess)

erew123 commented 6 days ago

Well, that is what it what it does when you select a wav file to use for TTS with XTTS, it performs that conversion.... but you specifically want to keep a copy of the latent?

GamingDaveUk commented 6 days ago

Well, that is what it what it does when you select a wav file to use for TTS with XTTS, it performs that conversion.... but you specifically want to keep a copy of the latent?

Ideally yes. If its faster for more used voices than thats a boon to myself but it would also be handy for software like mantella if we want to add custom voices to an install its better to have them in the same form, if that is do-able with out too much hassle?

erew123 commented 5 days ago

image

Will still be a few days(?) until I have this release out.

erew123 commented 5 days ago

@GamingDaveUk Its out/released https://github.com/erew123/alltalk_tts/discussions/245#discussioncomment-11365090

GamingDaveUk commented 5 days ago

Awesome, when I get some time I will update and give it a try, hopefully later today if work goes quiet

GamingDaveUk commented 4 days ago

@GamingDaveUk Its out/released #245 (comment)

I installed v2 into a fresh folder. all went well with the setup file then loaded it with the start bat and chose xtts model once that downloaded i got this error

Traceback (most recent call last): File "F:\AiText\alltalk_tts\script.py", line 905, in <module> last_known_commit_sha = read_or_initialize_sha( ^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\script.py", line 885, in read_or_initialize_sha if latest_commit_sha: ^^^^^^^^^^^^^^^^^ NameError: name 'latest_commit_sha' is not defined. Did you mean: 'current_commit_sha'?

when i try to load the start bat i now always get this error. (sorry to be the bearer of bad news/ dont shoot the bug reporter lol.

GamingDaveUk commented 4 days ago

A git pull fixed it, been sorting this out remotly while at work so long delays between doing bits, must have cloned it before the patch.

erew123 commented 4 days ago

yeah I corrected that about 2 minutes ago! :) just git pull

erew123 commented 4 days ago

It was about 18 minutes ago I patched it (taking a look) https://github.com/erew123/alltalk_tts/commit/a23dcf6de750067c60ab98a4eb89494655c0879c

No idea how the F that slipped through, but fixed at least

GamingDaveUk commented 4 days ago

It happens, if i had a quid for everytime I wondered how a bug snuck into my code i would have....well ok not millions but still a fair amount lol

erew123 commented 4 days ago

well, lmk how it goes. it should be doing the latents and the info about it is what I posted the other night/in the built in instructions.

GamingDaveUk commented 4 days ago

well, lmk how it goes. it should be doing the latents and the info about it is what I posted the other night/in the built in instructions. Sorry been a busy night and was just off to bed when i realised i had not tested it yet. I actually had some trouble finding the TTS generator page at first lol When I found it the latents I copied across all showed but when i try to generate it does all the chunks instantly and displays a massive error log (the chunks are not actually generated)

F:\AiText\alltalk_tts\tts_server.py:1697: PydanticDeprecatedSince20: Thefieldsattribute is deprecated, usemodel_fields` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.10/migration/ description = JSONInput.fields.get(field).field_info.description ERROR: Exception in ASGI application Traceback (most recent call last): File "F:\AiText\alltalk_tts\tts_server.py", line 1691, in validate_json_input JSONInput(**json_input_data) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\pydantic\main.py", line 214, in init validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for JSONInput narrator_voicegen String should match pattern '^[()a-zA-Z0-9\-./\s]+$' [type=string_pattern_mismatch, input_value='latent:adril.json', input_type=str] For further information visit https://errors.pydantic.dev/2.10/v/string_pattern_mismatch

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().call(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 187, in call raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 165, in call await self.app(scope, receive, _send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 735, in app await route.handle(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 297, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 210, in run_endpoint_function return await dependant.call(values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 2191, in apifunction_generate_tts_standard params, validation_error = await tts_validate_and_prepare_input( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1809, in tts_validate_and_prepare_input validation_result = validate_json_input(json_input_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1697, in validate_json_input description = JSONInput.fields.get(field).field_info.description ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'FieldInfo' object has no attribute 'field_info' ERROR: Exception in ASGI application Traceback (most recent call last): File "F:\AiText\alltalk_tts\tts_server.py", line 1691, in validate_json_input JSONInput(json_input_data) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\pydantic\main.py", line 214, in init validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for JSONInput narrator_voicegen String should match pattern '^[()a-zA-Z0-9\-./\s]+$' [type=string_pattern_mismatch, input_value='latent:adril.json', input_type=str] For further information visit https://errors.pydantic.dev/2.10/v/string_pattern_mismatch

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().call(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 187, in call raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 165, in call await self.app(scope, receive, _send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 735, in app await route.handle(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 297, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 210, in run_endpoint_function return await dependant.call(values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 2191, in apifunction_generate_tts_standard params, validation_error = await tts_validate_and_prepare_input( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1809, in tts_validate_and_prepare_input validation_result = validate_json_input(json_input_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1697, in validate_json_input description = JSONInput.fields.get(field).field_info.description ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'FieldInfo' object has no attribute 'field_info' ERROR: Exception in ASGI application Traceback (most recent call last): File "F:\AiText\alltalk_tts\tts_server.py", line 1691, in validate_json_input JSONInput(json_input_data) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\pydantic\main.py", line 214, in init validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for JSONInput narrator_voicegen String should match pattern '^[()a-zA-Z0-9\-./\s]+$' [type=string_pattern_mismatch, input_value='latent:adril.json', input_type=str] For further information visit https://errors.pydantic.dev/2.10/v/string_pattern_mismatch

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().call(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 187, in call raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 165, in call await self.app(scope, receive, _send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 735, in app await route.handle(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 297, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 210, in run_endpoint_function return await dependant.call(values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 2191, in apifunction_generate_tts_standard params, validation_error = await tts_validate_and_prepare_input( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1809, in tts_validate_and_prepare_input validation_result = validate_json_input(json_input_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1697, in validate_json_input description = JSONInput.fields.get(field).field_info.description ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'FieldInfo' object has no attribute 'field_info' ERROR: Exception in ASGI application Traceback (most recent call last): File "F:\AiText\alltalk_tts\tts_server.py", line 1691, in validate_json_input JSONInput(json_input_data) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\pydantic\main.py", line 214, in init validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 2 validation errors for JSONInput text_input String should have at most 2000 characters [type=string_too_long, input_value="ignorefunc-returns-value...o attribute 'fieldinfo'", input_type=str] For further information visit https://errors.pydantic.dev/2.10/v/string_too_long narrator_voicegen String should match pattern '^[()a-zA-Z0-9\-./\s]+$' [type=string_pattern_mismatch, input_value='latent:adril.json', input_type=str] For further information visit https://errors.pydantic.dev/2.10/v/string_pattern_mismatch

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().call(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 187, in call raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\errors.py", line 165, in call await self.app(scope, receive, _send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 93, in call await self.simple_response(scope, receive, send, request_headers=headers) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 735, in app await route.handle(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 297, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\alltalk_environment\env\Lib\site-packages\fastapi\routing.py", line 210, in run_endpoint_function return await dependant.call(**values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 2191, in apifunction_generate_tts_standard params, validation_error = await tts_validate_and_prepare_input( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1809, in tts_validate_and_prepare_input validation_result = validate_json_input(json_input_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\AiText\alltalk_tts\tts_server.py", line 1697, in validate_json_input description = JSONInput.fields.get(field).field_info.description ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'FieldInfo' object has no attribute 'field_info'`

I tested the same latent in the quick gen and for a sentince or two it works but putting in the usual amount of text it just scrolled errors that look almost the same as above, but also mentioning the character limit.

To give an example of one of the things I use your app for: https://www.youtube.com/watch?v=sGpKzHtNpEI (believe it or not thats a short one lol, I often use it for stories for the guilds and for things to do with the games we play, but always that alltalk tts generator as that handles large text. Wondering if that gott he upgrade or if thats on the further down the list?

erew123 commented 4 days ago

@GamingDaveUk Fixed https://github.com/erew123/alltalk_tts/commit/f16f6b9498b3ba2f6945b917fc0bec948dc14739

erew123 commented 4 days ago

@GamingDaveUk Just had a look at your video! TBH, I typically have no clue what anyone uses the software for, bar the occasional very strange request to do something a bit out there. Thanks for the little insight! Its nice to see something Ive done either does some good or brings some people happiness :) That's awesome!

As for the TTS generator, well, I did add a choice of whisper model in to the interface.... but as for dumping it over into gradio, that's more complicated. There's some pretty pretty wild stuff going on with dynamic lists that gradio just didn't want to go anywhere near, though I got some code about 80% done and just couldn't get the lists working properly either they wouldnt display or progress through or you couldn't edit blah.... however, I think I maybe figure a way a few days back on other gradio coding adventures, so, to be re-visited some time!

GamingDaveUk commented 4 days ago

@GamingDaveUk Just had a look at your video! TBH, I typically have no clue what anyone uses the software for, bar the occasional very strange request to do something a bit out there. Thanks for the little insight! Its nice to see something Ive done either does some good or brings some people happiness :) That's awesome!

As for the TTS generator, well, I did add a choice of whisper model in to the interface.... but as for dumping it over into gradio, that's more complicated. There's some pretty pretty wild stuff going on with dynamic lists that gradio just didn't want to go anywhere near, though I got some code about 80% done and just couldn't get the lists working properly either they wouldnt display or progress through or you couldn't edit blah.... however, I think I maybe figure a way a few days back on other gradio coding adventures, so, to be re-visited some time!

Your tool has not only brought me joy but also helped make many people I know grin.

I also play a realworld gps game called Ingress. blue team vs green team capturing portals along with a back story etc. Amoung our little group I once joked that the three portals in range of me at work are named DaveLand...it then became guarded by Blue Squirrels (thanks to my hobby of AI art.) I have used your tool to create David Attenborough like monolgues on the squirrels (shared only in our group as its a real persons voice) along with various game issues, much to the amusement of my group mates. I have used it to create stories for a couple of guilds, far longer than the log I linked to amuse people, and ofcourse things like the log entries, which are events in the game me and a mate are playing. I use the Alltalk TTS Generator page pretty much every time I load the app. The ability to generate a large amount of text, then go through it all to and regen specific parts as needed (and re-word parts to regen) is VERY useful. I then export the combined output and convert it using fmpeg to a mp3 format....(sharing it in group chats and discord make mp3 preferable due to the size difference.

If I had one request to make, the ability to export it as mp3 would save me a bit of clicking. if i had two, the ability to name the export would help lol... minor nitpicks though.

I have tried many other tts projects, they either get bugs that are never fixed or sound robotic, mono toned, yours seems to allow abit of emotion into the voice.

On the latents. I just ran a test through one of the latents i got with the mantella software and the result was VERY good.

Thank you for creating the app, thank you for adding the ability to use latents and thank you for fixing bugs so fast.

erew123 commented 4 days ago

Hah, sounds like you/your group have a lot of fun :)

As for mp3 etc..... What you are asking for is already in there, has been in for ages:

image

Just set that and you're off and running!

GamingDaveUk commented 4 days ago

Hah, sounds like you/your group have a lot of fun :)

As for mp3 etc..... What you are asking for is already in there, has been in for ages:

image

Just set that and you're off and running!

That actually breaks the ALlTalk TTS Generator in an interesting way lol. I spend most of my time on in the Generator page so had not noticed that, I just tested it out and redid a test log. Log 24 - The Hammer of Justice: A New Dawn in Human Triumph Today, a new era dawned as I unveiled the "Hammer of Justice", a vessel not merely small but monumental in its own right. Black and purple, wide yet deceptively powerful, she stands as a testament to human ingenuity and our unrelenting pursuit of justice against alien oppressors. Though her construction is incomplete, the core essence of her design embodies the righteous fury we have come to expect from vessels bearing the insignia of the Imperium. The Hammer of Justice, though initially lacking warp capabilities, is designed for deployment from the Interfector, an ideal complement to our growing armada. She possesses firepower that promises to be both devastating and voluminous, a testament to her divine name. Her shields, already formidable, will soon benefit from enhanced boosters, further solidifying her position as a beacon of human resilience. Despite her nascent state, the Holy Engineers have bestowed their blessing upon the Hammer of Justice, an honor for which I am deeply grateful. This divine approval is both a recognition and an affirmation of our vessel's righteous mission: to eradicate Zirax filth from our midst. While I continue to gather resources to refine and enhance her capabilities, Brother Chris has once again expanded the landing pad and extended the tower, our growing fortress on Akua. His architectural genius never ceases to amaze; the tower, now adorned with immense orbs carved in religious iconography of the Imperium, stands as both a symbol of our strength and an enduring testament to human artistry. I must express my reservations regarding the aliens currently housed within the tower. While Brother Chris maintains that they are beneficial to our cause, I remain ever vigilant. To this end, I have taken proactive measures: locked doors ensure their confinement should any exhibit signs of treachery, and contingency protocols are in place to neutralize potential threats at a moment's notice. As we move forward, let it be clear: the Hammer of Justice, with her divine blessing and unwavering resolve, embodies our unyielding crusade against Zirax tyranny. Her creation is not merely a defensive tool but an offensive instrument designed to deliver retribution upon those who dare challenge our dominion. In this labyrinth of cosmic challenges, where the Zirax continue their futile attacks, we remain steadfast. The Hammer of Justice will herald a new era of swift and decisive justice, a harbinger of doom for alien scum and an inspiration to all who stand under the Imperium's banner. With her on our side, victory is not just assured; it is inevitable. Let every volley she fires be a testament to human greatness, and may the Emperor guide us in wielding her with unerring precision. As we gather the resources necessary for her completion, let the Hammer of Justice roar forth into the void, a relentless force against those who seek to defile our rightful place atop this cosmic hierarchy. End Log Entry. Signed: Grandmaster Inquisitor Dave

It split it up and seemed to be working well but it would start to play a bit and then repeat part of it in a slightly different tone, really really odd. take this section:

Log 24 - The Hammer of Justice: A New Dawn in Human Triumph
Today, a new era dawned as I unveiled the "Hammer of Justice", a vessel not merely small but monumental in its own right. 

it added in a different tone A New Dawn in Human Triumph Today, a new era dawned as I unveiled the "Hammer of Justice", a vessel not merely small but monumental in its own right.

Each section had the same odd bug where it doubled up (minus a few words at the start) the sentence in a different voice. These were also in the output folder as mp3's for each section and they too when played in vlc had the double sentence. The other bug is export wav did not change to export mp3 and still exported a wav

Before I enabled the option it wasnt doubling them up (though they were wav's) so guessing theres a big in its conversion method? Sadly I have to go to work now, so cant test more unless work goes quiet lol

GamingDaveUk commented 4 days ago

At work and its a quiet shift so I went to install the new version on my work laptop, fresh install, wanted to see if it would have the same bug as above, only i hit a new bug. when you first load it and it asks what model you wish to use i go for xtts. However this time i got the following error:

 [AllTalk TTS]
Traceback (most recent call last):
  File "D:\alltalk_tts\system\config\firstrun.py", line 254, in <module>
    setup_xtts()
  File "D:\alltalk_tts\system\config\firstrun.py", line 120, in setup_xtts
    download_file(base_url + file + "?download=true", this_dir / f"models/xtts/xttsv2_2.0.3/{each_file}")
                  ~~~~~~~~~^~~~~~
TypeError: can only concatenate str (not "_io.TextIOWrapper") to str
[AllTalk TTS] Error Error running first-time setup script: Command '['D:\\alltalk_tts\\alltalk_environment\\env\\python.exe', 'D:\\alltalk_tts\\system\\config\\firstrun.py']' returned non-zero exit status 1.

Now this could be an issue with the laptop, it has an rtx 2060 in it and was ok for alltalk v1, but thats not guarentee v2 will work, and i did not encounter this error on the pc.

I tried manually downloading the xtts v2.0.3 model into the relevent empty folder but it didnt work. same error on load, defaults to "piper" and shows no voices.

Alas that means i will have to do some work at work lol

erew123 commented 4 days ago

Hey hey... Only 1x problem per customer at a time! House rules! :)

Im currently looking at the transcode one. looks like an FFMpeg is being funny... going to take a bit longer to sort that so Ill come back to this other issue later. But Piper should work, pretty sure of that....then just download a XTTS model after

GamingDaveUk commented 4 days ago

Hey hey... Only 1x problem per customer at a time! House rules! :)

Im currently looking at the transcode one. looks like an FFMpeg is being funny... going to take a bit longer to sort that so Ill come back to this other issue later. But Piper should work, pretty sure of that....then just download a XTTS model after

choosing piper, then switching to xtts did indeed work :)

I shall do my upmost not to break anything else today*

*no promises!

erew123 commented 3 days ago

@GamingDaveUk

Both problems dealt with.

Obviously git pull

You might get away with:

start_environment.bat
pip uninstall python-ffmpeg ffmpeg-python ffmpeg -y
conda remove ffmpeg -y
conda install -y -c conda-forge "ffmpeg=*=*gpl*"
conda install -y -c conda-forge "ffmpeg=*=h*_*" --no-deps
pip install ffmpeg-python>=0.2.0

But I had problems with it properly clearing out the environment of old ffmpeg stuff.... so you might be easiest just deleting the alltalk_environment folder and re-running atsetup and doing the standalone install. It wont delete anything/affect your settings....well... unless you delete something other than what I just said hah!

Should be all smooth sailing with transcoding now.

GamingDaveUk commented 3 days ago

I deleted the alltalk_environment folder and re-run the atsetup. The bug of multiple lines merging is fixed Each chunk is indeed converted to mp3. However, when you click "export to wav" to get the completed version you only get a wav file.... I realise given the name of the button it should come as no surprise I get a wav but that is the file i then have to convert to a mp3 lol. Can we get a export to mp3 button? its not critical as i can continue to convert the wav files to mp3's but it would help no end and is strange the chunks which are temporary, are mp3 but the final export is a wav lol

erew123 commented 2 days ago

I think youre into next years credit for feature requests now!! Give a man an inch and he will take a mile etc hah!

MP3 Button commit here https://github.com/erew123/alltalk_tts/commit/1297a28cb4b4132c25039cce565a7057ed8071d8

GamingDaveUk commented 2 days ago

I think youre into next years credit for feature requests now!! Give a man an inch and he will take a mile etc hah!

MP3 Button commit here 1297a28

I used the app to create 11 logs earlier today (well the audio for them... i still have to do the video) all worked great :) Shall try the mp3 button tommorow :)

Much appreciated.....will work on the list of requests for 2025 :p

GamingDaveUk commented 2 days ago

Alas i come bearing ill tidings. I git pulled and deleted the environment folder once more. Eagerly I created a new log. However the export button stubbornly refuses to export as mp3. "No" says the button, "you WILL have a wav file, and only a wav file". Perhaps it stubborn and stuck in its ways?

image

erew123 commented 2 days ago

I would suggest you git pull and maybe check these 2x lines of code exist in your copy of the file https://github.com/erew123/alltalk_tts/blob/alltalkbeta/system/tts_generator/tts_generator.html#L704-L705

Its 100000000% up there, so not sure how your copies could have reverted backwards, but if those 2x lines of code arent there, then something is wrong with your git system, maybe, not sure.

I just git pulled a full fresh copy down and they are 100% in the copy that came down.....

image

GamingDaveUk commented 1 day ago

image The lines are there, the button just seems to not care O.o

looking at the two lines and have almost no knowledge of gradio... should the button not say export to mp3?

<button class="conditional-btn" onclick="exportToMP3()" style="margin-right: 10px;">Export to MP3</button>

I checked out the function and if the button says export to wav then although it runs exportMP3() that does appear to be a wav export. should there be a second export button? On a whim I changed the onclick listener for the export to wav button to that of the mysterious and elusive Export to MP3 button "exportToMP3()" and reloaded the app I am typing this as I test....and got a shock when i reloaded the app... image There is now two buttons where once there was just one and yet simply changing the onclick listener of one should have not done anything to reveal a second, i wonder if my browser cache may be to blame? putting the file back to how it was and the export to mp3 button remains.... so I can only think my cache was to blame

TL;DR it fixed itself, likely browser cache to blame.

GamingDaveUk commented 1 day ago

On a side note: THANK YOU! for adding the export to mp3, that will save me a ton of time.

erew123 commented 1 day ago

No probs! Glad you've got it sorted!! Browser cache.. could well be!

Hey, at least its working :)