diff --git a/confignew.json b/confignew.json new file mode 100644 index 0000000..8d9d0c5 --- /dev/null +++ b/confignew.json @@ -0,0 +1 @@ +{"activate": true, "autoplay": true, "branding": "AllTalk ", "narrator_enabled": false, "deepspeed_activate": false, "delete_output_wavs": "Disabled", "ip_address": "127.0.0.1", "language": "English", "low_vram": false, "local_temperature": "0.7", "local_repetition_penalty": "10.0", "tts_model_loaded": true, "tts_model_name": "tts_models/multilingual/multi-dataset/xtts_v2", "narrator_voice": "female_01.wav", "output_folder_wav": "extensions/alltalk_tts/outputs/", "output_folder_wav_standalone": "outputs/", "port_number": "7851", "remove_trailing_dots": false, "show_text": true, "tts_method_api_local": false, "tts_method_api_tts": false, "tts_method_xtts_local": true, "voice": "female_01.wav"} \ No newline at end of file diff --git a/modeldownload.py b/modeldownload.py index cb078ee..971ae4a 100644 --- a/modeldownload.py +++ b/modeldownload.py @@ -6,9 +6,9 @@ import importlib.metadata as metadata import json from packaging import version -############################################################## -#### LOAD PARAMS FROM CONFIG.JSON - REQUIRED FOR BRANDING #### -############################################################## +################################################################# +#### LOAD PARAMS FROM confignew.json - REQUIRED FOR BRANDING #### +################################################################# # STARTUP VARIABLE - Create "this_dir" variable as the current script directory this_dir = Path(__file__).parent.resolve() @@ -20,7 +20,7 @@ def load_config(file_path): return config -config_file_path = this_dir / "config.json" +config_file_path = this_dir / "confignew.json" params = load_config(config_file_path) # Define the path to the modeldownload config file file diff --git a/requirements_nvidia.txt b/requirements_nvidia.txt index 64bdcfe..08244e4 100644 --- a/requirements_nvidia.txt +++ b/requirements_nvidia.txt @@ -1,7 +1,7 @@ numpy>=1.22.0 soundfile>=0.12.1 uvicorn>=0.24.0.post1 -TTS>=0.21.3 +TTS>=0.22.0 torch>=2.1.0+cu118 torchaudio>=2.1.0+cu118 fastapi>=0.104.1 diff --git a/requirements_other.txt b/requirements_other.txt index 667d885..2754be7 100644 --- a/requirements_other.txt +++ b/requirements_other.txt @@ -1,7 +1,7 @@ numpy>=1.22.0 soundfile>=0.12.1 uvicorn>=0.24.0.post1 -TTS>=0.21.3 +TTS>=0.22.0 torch>=2.1.0 torchaudio>=2.1.0 fastapi>=0.104.1 diff --git a/script.py b/script.py index a227f3d..a641bf9 100644 --- a/script.py +++ b/script.py @@ -16,9 +16,9 @@ import numpy as np import soundfile as sf import uuid -############################################################## -#### LOAD PARAMS FROM CONFIG.JSON - REQUIRED FOR BRANDING #### -############################################################## +################################################################# +#### LOAD PARAMS FROM confignew.json - REQUIRED FOR BRANDING #### +################################################################# # STARTUP VARIABLE - Create "this_dir" variable as the current script directory this_dir = Path(__file__).parent.resolve() @@ -28,8 +28,8 @@ def load_config(file_path): config = json.load(config_file) return config -config_file_path = this_dir / "config.json" -# Load the params dictionary from the config.json file +config_file_path = this_dir / "confignew.json" +# Load the params dictionary from the confignew.json file params = load_config(config_file_path) # Required for sentence splitting @@ -143,9 +143,9 @@ def check_required_files(): check_required_files() -################################################# -#### SET GRADIO BUTTONS BASED ON CONFIG.JSON #### -################################################# +#################################################### +#### SET GRADIO BUTTONS BASED ON confignew.json #### +#################################################### if params["tts_method_api_tts"] == True: gr_modelchoice = "API TTS" @@ -277,7 +277,7 @@ else: # MODEL - Swap model based on Gradio selection API TTS, API Local, XTTSv2 Local def send_reload_request(tts_method): try: - params["model_loaded"] = False + params["tts_model_loaded"] = False url = f"{base_url}/api/reload" payload = {"tts_method": tts_method} response = requests.post(url, params=payload) @@ -285,8 +285,8 @@ def send_reload_request(tts_method): json_response = response.json() # Check if the reload operation was successful if json_response.get("status") == "model-success": - # Update model_loaded to True if the reload was successful - params["model_loaded"] = True + # Update tts_tts_model_loaded to True if the reload was successful + params["tts_model_loaded"] = True # Update local script parameters based on the tts_method if tts_method == "API TTS": params["tts_method_api_local"] = False @@ -319,7 +319,7 @@ def send_reload_request(tts_method): # LOW VRAM - Gradio Checkbox handling def send_lowvram_request(low_vram): try: - params["model_loaded"] = False + params["tts_model_loaded"] = False if low_vram: audio_path = this_dir / "templates" / "lowvramenabled.wav" else: @@ -332,7 +332,7 @@ def send_lowvram_request(low_vram): # Check if the low VRAM request was successful if json_response.get("status") == "lowvram-success": # Update any relevant variables or perform other actions on success - params["model_loaded"] = True + params["tts_model_loaded"] = True return f'' except requests.exceptions.RequestException as e: # Handle the HTTP request error @@ -348,7 +348,7 @@ def send_lowvram_request(low_vram): # DEEPSPEED - Reload the model when DeepSpeed checkbox is enabled/disabled def send_deepspeed_request(deepspeed_param): try: - params["model_loaded"] = False + params["tts_model_loaded"] = False if deepspeed_param: audio_path = this_dir / "templates" / "deepspeedenabled.wav" else: @@ -362,7 +362,7 @@ def send_deepspeed_request(deepspeed_param): # Check if the deepspeed request was successful if json_response.get("status") == "deepspeed-success": # Update any relevant variables or perform other actions on success - params["model_loaded"] = True + params["tts_model_loaded"] = True return f'' except requests.exceptions.RequestException as e: # Handle the HTTP request error @@ -400,7 +400,7 @@ Synthesizer.split_into_sentences = new_split_into_sentences # Check model is loaded and string isnt empty, before sending a TTS request. def before_audio_generation(string, params): # Check Model is loaded into cuda or cpu and error if not - if not params["model_loaded"]: + if not params["tts_model_loaded"]: print( f"[{params['branding']}Model] \033[91mWarning\033[0m Model is still loading, please wait before trying to generate TTS" ) @@ -789,7 +789,7 @@ def ui(): ) tts_radio_buttons_play = gr.HTML(visible=False) explanation_text = gr.HTML( - f"

NOTE: Switching Model Type, Low VRAM & DeepSpeed takes 15 seconds. Each TTS generation method has a slightly different sound. DeepSpeed checkbox is only visible if DeepSpeed is present. Readme & Settings: http://{params['ip_address']}:{params['port_number']}" + f"

NOTE: Switching Model Type, Low VRAM & DeepSpeed, each takes 15 seconds. Each TTS generation method has a slightly different sound. DeepSpeed checkbox is only visible if DeepSpeed is present. Readme & Settings: http://{params['ip_address']}:{params['port_number']}" ) with gr.Row(): diff --git a/templates/generate_form.html b/templates/generate_form.html index 6573355..b8a8b96 100644 --- a/templates/generate_form.html +++ b/templates/generate_form.html @@ -201,12 +201,12 @@ value="{{ data.output_folder_wav }}" /> - + - - + +

The temperature has been set at 0.70 here though, as it often produces a slightly better result (in my estimation).

-

The default settings for any model are usually provided in the config.json file that comes wtih the model and this file can be found within the folder where the model is stored.

+

The default settings for any model are usually provided in the confignew.json file that comes wtih the model and this file can be found within the folder where the model is stored.

These default values are carefully chosen to offer a reasonable starting point for users, and adjustments can be made based on individual preferences and use cases. However, it's important to note that changing these settings or setting them to extremes may result in unexpected outcomes. Setting extremely high or low values, especially without a good understanding of their effects, may lead to flat-sounding output or very strange-sounding output. It's advisable to experiment with adjustments incrementally and observe the impact on the generated speech to find a balance that suits your desired outcome.

Back to top of page

@@ -989,20 +989,20 @@ simple_webpage = """

Currently/Officially only DeepSpeed v8.3 is installing on Windows, due to the broken installation routine by Microsoft, however, between myself and S95Sedan its now possible to install DeepSpeed v11.1 or v11.2 on Windows.

DeepSpeed on Windows - Option A

-

This is to use the pre built DeepSpeed v11.1 wheel file. This is quite a quick process and should work for 99% of people.

+

This is to use the pre built DeepSpeed v11.2 wheel file. This is quite a quick process and should work for 99% of people.

Note: In my tests, with this method you will not need to install the Nvidia CUDA toolkit to make this work, but AllTalk may warn you when starting DeepSpeed that it doesn't see the CUDA Toolkit; however, it works fine for TTS purposes.

    -
  1. Download the file deepspeed-0.11.1+e9503fe-cp311-cp311-win_amd64.whl by clicking the download icon at the top right of the screen and save the file it inside your text-generation-webui folder.
  2. +
  3. Download the correct wheel version for your CUDA and Python version file from here and save the file it inside your text-generation-webui folder.
  4. -
  5. At a command prompt window, move into your text-generation-webui folder, you can now start the Python environment for text-generation-webui: -
    cmd_windows.bat
  6. +
  7. At a command prompt window, move into your text-generation-webui folder, you can now start the Python environment for text-generation-webui:
    +
    cmd_windows.bat

  8. -
  9. With the file that you saved in the text-generation-webui folder, you now type the following: -
    pip install "deepspeed-0.11.1+e9503fe-cp311-cp311-win_amd64.whl"
  10. +
  11. With the file that you saved in the text-generation-webui folder, you now type the following:
    +
    pip install "deepspeed-0.11.2+yourversionhere-win_amd64.whl"

  12. -
  13. This should install through cleanly and you should now have DeepSpeed v11.1 installed within the Python 3.11 environment of text-generation-webui.
  14. +
  15. This should install through cleanly and you should now have DeepSpeed v11.2 installed within the Python 3.11 environment of text-generation-webui.
  16. When you start up text-generation-webui, and AllTalk starts, you should see [AllTalk Startup] DeepSpeed Detected
  17. @@ -1138,7 +1138,7 @@ simple_webpage = """

    Back to top of page

    Configuration Details

    -

    Explanation of the config.json file:

    +

    Explanation of the confignew.json file:

    "activate:" true, Used within the code, do not change.
    "autoplay:" true, Controls whether the TTS audio plays automatically within Text generation webUI.
    @@ -1150,8 +1150,8 @@ simple_webpage = """ "low_vram:" false, Controls whether the Low VRAM option is enabled or disabled.
    "local_temperature:" "0.70", Sets the temperature to use with the API Local and XTTSv2 Local methods.
    "local_repetition_penalty:" "10.0", Sets the repetition penalty to use with the API Local and XTTSv2 Local methods.
    - "model_loaded:" true, Used within the code, do not change.
    - "model_name:" "tts_models/multilingual/multi-dataset/xtts_v2", Specifies the model that the "API TTS" method will use for TTS generation.
    + "tts_model_loaded:" true, Used within the code, do not change.
    + "tts_model_name:" "tts_models/multilingual/multi-dataset/xtts_v2", Specifies the model that the "API TTS" method will use for TTS generation.
    "narrator_enabled:" "female_02.wav", Specifies the default narrator voice to use for TTS.
    "narrator_voice:" "false", Enables and disables the narrator function.
    "port_number:" "7851", Specifies the default port number for the web server.