Click to expand
-Ive paid very close attention to not impact the what Text-generation-webui is requesting on a factory install, nor over-write other extensions requirements (As best as I can account for). This is one of the requirements of submitting an extension to text-generation-webui. If you want to look at a comparison of a base text-generation-webui install (with cuda 12.1, though I based my requirements on cuda 11.8) you can find that comparison [here](https://github.com/erew123/alltalk_tts/issues/23) where you can see AllTalk is requesting the same as text-generation-webui or even lower version numbers (meaning AllTalk will not update them to a later version).
+Ive paid very close attention to **not** impact what Text-generation-webui is requesting on a factory install. This is one of the requirements of submitting an extension to Text-generation-webui. If you want to look at a comparison of a factory fresh text-generation-webui installed packages (with cuda 12.1, though AllTalk's requirements were set on cuda 11.8) you can find that comparison [here](https://github.com/erew123/alltalk_tts/issues/23). This comparison shows that AllTalk is requesting the same package version numbers as Text-generation-webui or even lower version numbers (meaning AllTalk will not update them to a later version). What other extensions do, I cant really account for that.
-The only one thing I cannot counter for is that the TTS engine downgrades Pandas data validator to 1.5.3 though its unlikely to cause any issues. You can upgrade it back to text-generation-webui default (december 2023) with `pip install pandas==2.1.4` when inside of the python environment. I have noticed no ill effects from it being a lower or higher version, as far as AllTalk goes.
+I will note that the TTS engine downgrades Pandas data validator to 1.5.3 though its unlikely to cause any issues. You can upgrade it back to text-generation-webui default (december 2023) with `pip install pandas==2.1.4` when inside of the python environment. I have noticed no ill effects from it being a lower or higher version, as far as AllTalk goes. This is also the same behaviour as the Coqui_tts extension that comes with Text-generation-webui.
Other people are reporting issues with extensions not starting with errors about Pydantic e.g. ```pydantic.errors.PydanticImportError: BaseSettings` has been moved to the pydantic-settings package. See https://docs.pydantic.dev/2.5/migration/#basesettings-has-moved-to-pydantic-settings for more details.```
From dc9d3431152026cf59b85af53f1115d62bf8693f Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Mon, 25 Dec 2023 21:09:39 +0000
Subject: [PATCH 13/39] Update uuid to avoid possible race condition
file naming on short sentences could possibly have a race condition. set uuid as opposed to timestamp to avoid this outcome.
---
script.py | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/script.py b/script.py
index e325457..7b63446 100644
--- a/script.py
+++ b/script.py
@@ -618,11 +618,10 @@ def output_modifier(string, state):
def get_output_filename(state):
- # Check if character name exists and if not, just call it TTSOUT_
if "character_menu" in state:
- return Path(f'{params["output_folder_wav"]}/{state["character_menu"]}_{int(time.time())}.wav').as_posix()
+ return Path(f'{params["output_folder_wav"]}/{state["character_menu"]}_{str(uuid.uuid4())[:8]}.wav').as_posix()
else:
- return Path(f'{params["output_folder_wav"]}/TTSOUT_{int(time.time())}.wav').as_posix()
+ return Path(f'{params["output_folder_wav"]}/TTSOUT_{str(uuid.uuid4())[:8]}.wav').as_posix()
###############################################
From f5a811f0f86e3a022d0c7a6554c26247b062f8b4 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Mon, 25 Dec 2023 21:11:02 +0000
Subject: [PATCH 14/39] Update README.md
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index 07eefdf..15ef3b8 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,8 @@ AllTalk is an updated version of the Coqui_tts extension for Text Generation web
- π΄ [Future to-do list & Upcoming updates](https://github.com/erew123/alltalk_tts?#-future-to-do-list)
#### Updates
+Dec 25th - Applied a small update to avoid a possible race condition on file naming with small sentences when generating narrator/character speech. Please update if you are experiencing this.
+
The latest build (13 Dec 2023) has had the entire text filtering engine and narration engine rebuilt from scratch. It's highly complicated how its actually working, but the end result it a much clearer TTS output and much better control over the narrator option and how to handle text that isnt within quotes or asterisks. It does however mean you need to ensure your character card is set up correctly if using the narrator function. Details are below in the installation notes.
DeepSpeed **v11.2** can be installed within the **default text-generation-webui Python 3.11 environment**. Installs in custom Python environments are possible, but can be more complicated. Instructions [here](https://github.com/erew123/alltalk_tts##deepspeed-installation-options) (or scroll down).
From be9862d0b04310c78f66bc61c45b9db41b4ec941 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Mon, 25 Dec 2023 21:15:54 +0000
Subject: [PATCH 15/39] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 15ef3b8..3395b4b 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ AllTalk is an updated version of the Coqui_tts extension for Text Generation web
- π΄ [Future to-do list & Upcoming updates](https://github.com/erew123/alltalk_tts?#-future-to-do-list)
#### Updates
-Dec 25th - Applied a small update to avoid a possible race condition on file naming with small sentences when generating narrator/character speech. Please update if you are experiencing this.
+Dec 25th - Applied a small update to avoid a possible race condition on file naming with small sentences when generating narrator/character speech. Please update if you are experiencing missing small bits of missing audio on narrator/character.
The latest build (13 Dec 2023) has had the entire text filtering engine and narration engine rebuilt from scratch. It's highly complicated how its actually working, but the end result it a much clearer TTS output and much better control over the narrator option and how to handle text that isnt within quotes or asterisks. It does however mean you need to ensure your character card is set up correctly if using the narrator function. Details are below in the installation notes.
From 5bed68a9634a137ec828e5a767fc54fdffecf09e Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Mon, 25 Dec 2023 21:53:40 +0000
Subject: [PATCH 16/39] minor update to standard voice naming.
---
script.py | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/script.py b/script.py
index 7b63446..30a3dc0 100644
--- a/script.py
+++ b/script.py
@@ -501,7 +501,7 @@ def output_modifier(string, state):
if process_lock.acquire(blocking=False):
try:
if params["narrator_enabled"]:
- # print(original_string)
+ #print(original_string)
# Do Some basic stripping and remove any double CR's
processed_string = (
original_string
@@ -522,11 +522,11 @@ def output_modifier(string, state):
.replace('"', '"<')
)
#capturing another outlier in inital character paragraph
- # print("processed string 1 is:", processed_string)
+ #print("processed string 1 is:", processed_string)
processed_string = processed_string.replace('"<. *', '"< *"')
processed_string = processed_string.replace('< *"', '< *')
processed_string = processed_string.replace('. *', '< *')
- # print("processed string 2 is:", processed_string)
+ #print("processed string 2 is:", processed_string)
# Set up a tracking of the individual wav files.
audio_files_all_paragraphs = []
# Split the line using " and ".* " (so end of sentences, leaving special characters added to the start of all OTHER sentences, bar possibly the first one if its starting with a *
@@ -541,11 +541,11 @@ def output_modifier(string, state):
if '<' in part and '< *' not in part and '<*' not in part and '< *' not in part and '< ' not in part and '< ' not in part:
cleaned_part = html.unescape(part.replace('<', ''))
voice_to_use = params["voice"]
- #Narrator will always be an * or < with an * a position or two after it.
+ #Narrator will always be an * or < with an * a position or two after it.
elif '<*' in part or '< *' in part or '< *' in part or '*' in part:
cleaned_part = html.unescape(part.replace('<*', '').replace('< *', '').replace('< *', '').replace('*', ''))
voice_to_use = params["narrator_voice"]
- #If the other two dont capture it, aka, the AI gave no * or " on the line, use non_quoted_text_is aka user interface, user can choose Char or Narrator
+ #If the other two dont capture it, aka, the AI gave no * or " on the line, use non_quoted_text_is aka user interface, user can choose Char or Narrator
elif non_quoted_text_is:
cleaned_part = html.unescape(part.replace('< ', '').replace('< ', '').replace('< ', ''))
voice_to_use = params["voice"]
@@ -576,9 +576,14 @@ def output_modifier(string, state):
)
cleaned_part = html.unescape(processed_string)
# Process the part and give it a non-character name if being used vai API or standalone.
- output_filename = get_output_filename(state)
+ if "character_menu" in state:
+ output_file = Path(f'{params["output_folder_wav"]}/{state["character_menu"]}_{int(time.time())}.wav')
+ else:
+ output_file = Path(f'{params["output_folder_wav"]}/TTSOUT_{int(time.time())}.wav')
+ output_file_str = output_file.as_posix()
+ output_file = get_output_filename(state)
generate_response = send_generate_request(
- cleaned_part, params["voice"], language_code, output_filename
+ cleaned_part, params["voice"], language_code, output_file_str
)
audio_path = generate_response.get("data", {}).get("audio_path")
final_output_file = audio_path
From 2ea6cb6304f2baca027b80c65cc498aee487d562 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 06:23:26 +0000
Subject: [PATCH 17/39] Update README.md
---
README.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/README.md b/README.md
index 3395b4b..06dc242 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,8 @@ AllTalk is an updated version of the Coqui_tts extension for Text Generation web
#### Updates
Dec 25th - Applied a small update to avoid a possible race condition on file naming with small sentences when generating narrator/character speech. Please update if you are experiencing missing small bits of missing audio on narrator/character.
+#### π **Minor updates/bug fixes list** can be found [here](https://github.com/erew123/alltalk_tts/issues/25)
+
The latest build (13 Dec 2023) has had the entire text filtering engine and narration engine rebuilt from scratch. It's highly complicated how its actually working, but the end result it a much clearer TTS output and much better control over the narrator option and how to handle text that isnt within quotes or asterisks. It does however mean you need to ensure your character card is set up correctly if using the narrator function. Details are below in the installation notes.
DeepSpeed **v11.2** can be installed within the **default text-generation-webui Python 3.11 environment**. Installs in custom Python environments are possible, but can be more complicated. Instructions [here](https://github.com/erew123/alltalk_tts##deepspeed-installation-options) (or scroll down).
@@ -147,6 +149,7 @@ Assuming its all working fine and you are happy, you can delete the old alltalk_
| |  |
## π¨ Help with problems
+#### π **Minor updates/bug fixes list** can be found [here](https://github.com/erew123/alltalk_tts/issues/25)
#### π¨ How to make a diagnostics report file
From 97f0d6441a144cfe061b8ec87dc7088dd989ab8d Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 07:30:30 +0000
Subject: [PATCH 18/39] Improved links in Documentation
Added links to the minor bugs/known issues on gthub
---
tts_server.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tts_server.py b/tts_server.py
index c458792..9d6e717 100644
--- a/tts_server.py
+++ b/tts_server.py
@@ -1052,6 +1052,12 @@ simple_webpage = """
AllTalk is a web interface, based around the Coqui TTS voice cloning/speech generation system. To generate TTS, you can use the provided gradio interface or interact with the server using JSON/CURL commands.
Note: When loading up a new character in Text generation webUI it may look like nothing is happening for 20-30 seconds. Its actually processing the introduction section (greeting message) of the text and once that is completed, it will appear. You can see the activity occuring in the console window. Refreshing the page multiple times will try force the TTS engine to keep re-generating the text, so please just wait and check the console if needed.
Note: Ensure that your RP character card has asterisks around anything for the narration and double quotes around anything spoken. There is a complication ONLY with the greeting card so, ensuring it has the correct use of quotes and asterisks will help make sure that the greeting card sounds correct. I will aim to address this issue in a future update. In Text-generation-webUI parameters menu > character tab > greeting make sure that anything in there that is the narrator is in asterisks and anything spoken is in double quotes, then hit the save (πΎ) button.
+AllTalk Minor Bug Fixes Changelog & Known issues
+If I squash any minor bugs or find any issues, I will try to apply an update asap. If you think something isnt working correctly or you have a problem, check these two links below first.
+
AllTalk
Github link here
Update instructions link here
Help and issues link here
Text generation webUI
Web interface link here
Documentation link here
Back to top of page
From 9fae4692e3758a94af4a202b73a2a8d52c142052 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 08:03:24 +0000
Subject: [PATCH 19/39] Update README.md
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 06dc242..2c5e71a 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,8 @@ This has been tested on the current Dec 2023 release of Text generation webUI. I
`cd text-generation-webui`
2) Start the Text generation webUI Python environment for your OS:
-`cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`
+`cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`
+[Click here to see what your command line should look like when you load the Text-generation-webui Python environment](https://github.com/erew123/alltalk_tts/issues/25#issuecomment-1869344442)
3) Move into your extensions folder:
`cd extensions`
From f181c06f8988d1ff99efb9e47b3ce40be8962b20 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 10:02:17 +0000
Subject: [PATCH 20/39] Update README.md
Added a video link to show people how to install AllTalk.
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index 2c5e71a..b318746 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,8 @@ DeepSpeed **v11.2** can be installed within the **default text-generation-webui
## π© Installation on Text generation web UI
This has been tested on the current Dec 2023 release of Text generation webUI. If you have not updated it for a while, you may wish to update Text generation webUI, [instructions here](https://github.com/oobabooga/text-generation-webui?tab=readme-ov-file#how-to-install)
+If you want to watch a video of how to do the below [link here](https://youtu.be/9BPKuwaav5w)
+
1) In a command prompt/terminal window you need to move into your Text generation webUI folder:
`cd text-generation-webui`
From ac9ce144a01df6be30a2c4fc9dea71b3e82aac1b Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 16:47:24 +0000
Subject: [PATCH 21/39] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index b318746..1c94eeb 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ If you want to watch a video of how to do the below [link here](https://youtu.be
1) In a command prompt/terminal window you need to move into your Text generation webUI folder:
`cd text-generation-webui`
-2) Start the Text generation webUI Python environment for your OS:
+2) Start the Text generation webUI Python environment for your OS **(VERY IMPORTANT)**:
`cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`
[Click here to see what your command line should look like when you load the Text-generation-webui Python environment](https://github.com/erew123/alltalk_tts/issues/25#issuecomment-1869344442)
@@ -60,7 +60,7 @@ If you want to watch a video of how to do the below [link here](https://youtu.be
7) **(Optional DeepSpeed)** If you have an Nvidia Graphics card on a system running Linux or Windows and wish to use **DeepSpeed** please follow these instructions [here](https://github.com/erew123/alltalk_tts?#-deepspeed-installation-options). **However**, I would highly reccommend before you install DeepSpeed, you start text-generation-webui up, confirm AllTalk starts correctly and everything is working, as DeepSpeed can add another layer of complications troubleshooting any potential start-up issues. If necessary you can `pip uninstall deepspeed`.
-8) You can now start move back to the main Text generation webUI folder `cd ..` (a few times), start Text generation webUI (`start_windows.bat`,`./start_linux.sh`, `start_macos.sh` or `start_wsl.bat`) and load the AllTalk extension in the Text generation webUI **session** tab.
+8) You can now start move back to the main Text generation webUI folder `cd ..` (a few times), start Text generation webUI **(VERY IMPORTANT)** (`start_windows.bat`,`./start_linux.sh`, `start_macos.sh` or `start_wsl.bat`) and load the AllTalk extension in the Text generation webUI **session** tab.
9) Please read the note below about start-up times and also the note about ensuring your character cards are set up [correctly](https://github.com/erew123/alltalk_tts#the-one-thing-i-cant-easily-work-around)
From e775cef5bd67a60b10d7187bd5a6ad8d7b4b316f Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 17:19:21 +0000
Subject: [PATCH 22/39] Update README.md
---
README.md | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 1c94eeb..b04012a 100644
--- a/README.md
+++ b/README.md
@@ -36,14 +36,13 @@ DeepSpeed **v11.2** can be installed within the **default text-generation-webui
## π© Installation on Text generation web UI
This has been tested on the current Dec 2023 release of Text generation webUI. If you have not updated it for a while, you may wish to update Text generation webUI, [instructions here](https://github.com/oobabooga/text-generation-webui?tab=readme-ov-file#how-to-install)
-If you want to watch a video of how to do the below [link here](https://youtu.be/9BPKuwaav5w)
+If you want to watch a video of how to do the below [link here](https://youtu.be/9BPKuwaav5w)
1) In a command prompt/terminal window you need to move into your Text generation webUI folder:
`cd text-generation-webui`
-2) Start the Text generation webUI Python environment for your OS **(VERY IMPORTANT)**:
-`cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`
-[Click here to see what your command line should look like when you load the Text-generation-webui Python environment](https://github.com/erew123/alltalk_tts/issues/25#issuecomment-1869344442)
+2) Start the Text generation webUI Python environment for your OS:
+`cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`
Loading Text-generation-webui's Python Environment is $\textcolor{red}{\textsf{VERY IMPORTANT}}$. If you are uncertain what a loaded Python environment looks like, image [here](https://github.com/erew123/alltalk_tts/issues/25#issuecomment-1869344442) and video [here](https://www.youtube.com/watch?v=9BPKuwaav5w)
3) Move into your extensions folder:
`cd extensions`
@@ -60,11 +59,11 @@ If you want to watch a video of how to do the below [link here](https://youtu.be
7) **(Optional DeepSpeed)** If you have an Nvidia Graphics card on a system running Linux or Windows and wish to use **DeepSpeed** please follow these instructions [here](https://github.com/erew123/alltalk_tts?#-deepspeed-installation-options). **However**, I would highly reccommend before you install DeepSpeed, you start text-generation-webui up, confirm AllTalk starts correctly and everything is working, as DeepSpeed can add another layer of complications troubleshooting any potential start-up issues. If necessary you can `pip uninstall deepspeed`.
-8) You can now start move back to the main Text generation webUI folder `cd ..` (a few times), start Text generation webUI **(VERY IMPORTANT)** (`start_windows.bat`,`./start_linux.sh`, `start_macos.sh` or `start_wsl.bat`) and load the AllTalk extension in the Text generation webUI **session** tab.
+8) You can now start move back to the main Text generation webUI folder `cd ..` (a few times), start Text generation webUI (`start_windows.bat`,`./start_linux.sh`, `start_macos.sh` or `start_wsl.bat`) and load the AllTalk extension in the Text generation webUI **session** tab.
Starting Text-generation-webui with its correct start-up script is $\textcolor{red}{\textsf{VERY IMPORTANT}}$.
-9) Please read the note below about start-up times and also the note about ensuring your character cards are set up [correctly](https://github.com/erew123/alltalk_tts#the-one-thing-i-cant-easily-work-around)
+10) Please read the note below about start-up times and also the note about ensuring your character cards are set up [correctly](https://github.com/erew123/alltalk_tts#the-one-thing-i-cant-easily-work-around)
-10) Some extra voices downloadable [here](https://drive.google.com/file/d/1bYdZdr3L69kmzUN3vSiqZmLRD7-A3M47/view?usp=drive_link)
+11) Some extra voices downloadable [here](https://drive.google.com/file/d/1bYdZdr3L69kmzUN3vSiqZmLRD7-A3M47/view?usp=drive_link)
#### π© Other installation notes
On first startup, AllTalk will download the Coqui XTTSv2 2.0.2 model to its **models** folder (1.8GB space required). Check the command prompt/terminal window if you want to know what its doing. After it says "Model Loaded" the Text generation webUI is usually available on its IP address a few seconds later, for you to connect to in your browser.
From 7ad92e7f5d7809c4001b57b8715798b76ec3be6c Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 17:28:28 +0000
Subject: [PATCH 23/39] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b04012a..13b0a5e 100644
--- a/README.md
+++ b/README.md
@@ -53,7 +53,7 @@ If you want to watch a video of how to do the below [link here](https://youtu.be
5) Move into the **alltalk_tts** folder:
`cd alltalk_tts`
-6) Install the requirements that are correct for your machine:
+6) Install one of the two requirements files. Whichever one of the two is correct for your machine type:
**Nvidia graphics card machines** - `pip install -r requirements_nvidia.txt`
**Other machines (mac, amd etc)** - `pip install -r requirements_other.txt`
From 26414d4925a3d23bc128286c5c5987792e4b695a Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 17:30:40 +0000
Subject: [PATCH 24/39] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 13b0a5e..b71fb0b 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ If you want to watch a video of how to do the below [link here](https://youtu.be
1) In a command prompt/terminal window you need to move into your Text generation webUI folder:
`cd text-generation-webui`
-2) Start the Text generation webUI Python environment for your OS:
+2) Start the Text generation webUI Python environment for your OS with whichever **one** of the below is correct for your OS:
`cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`
Loading Text-generation-webui's Python Environment is $\textcolor{red}{\textsf{VERY IMPORTANT}}$. If you are uncertain what a loaded Python environment looks like, image [here](https://github.com/erew123/alltalk_tts/issues/25#issuecomment-1869344442) and video [here](https://www.youtube.com/watch?v=9BPKuwaav5w)
3) Move into your extensions folder:
@@ -59,7 +59,7 @@ If you want to watch a video of how to do the below [link here](https://youtu.be
7) **(Optional DeepSpeed)** If you have an Nvidia Graphics card on a system running Linux or Windows and wish to use **DeepSpeed** please follow these instructions [here](https://github.com/erew123/alltalk_tts?#-deepspeed-installation-options). **However**, I would highly reccommend before you install DeepSpeed, you start text-generation-webui up, confirm AllTalk starts correctly and everything is working, as DeepSpeed can add another layer of complications troubleshooting any potential start-up issues. If necessary you can `pip uninstall deepspeed`.
-8) You can now start move back to the main Text generation webUI folder `cd ..` (a few times), start Text generation webUI (`start_windows.bat`,`./start_linux.sh`, `start_macos.sh` or `start_wsl.bat`) and load the AllTalk extension in the Text generation webUI **session** tab.
Starting Text-generation-webui with its correct start-up script is $\textcolor{red}{\textsf{VERY IMPORTANT}}$.
+8) You can now start move back to the main Text generation webUI folder `cd ..` (a few times), start Text generation webUI with whichever **one** of the startup scripts is correct for your OS (`start_windows.bat`,`./start_linux.sh`, `start_macos.sh` or `start_wsl.bat`) and load the AllTalk extension in the Text generation webUI **session** tab.
Starting Text-generation-webui with its correct start-up script is $\textcolor{red}{\textsf{VERY IMPORTANT}}$.
10) Please read the note below about start-up times and also the note about ensuring your character cards are set up [correctly](https://github.com/erew123/alltalk_tts#the-one-thing-i-cant-easily-work-around)
From 47758c4aebaf08f946e490601798c795f312fe72 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Tue, 26 Dec 2023 18:58:06 +0000
Subject: [PATCH 25/39] Updated diagnostics
Pulls Conda and Python environment details.
---
diagnostics.py | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/diagnostics.py b/diagnostics.py
index 6ede8fa..7688698 100644
--- a/diagnostics.py
+++ b/diagnostics.py
@@ -6,6 +6,7 @@ try:
import torch
import os # Import the os module
import re
+ import sys
import glob
import textwrap
import packaging.version
@@ -17,7 +18,7 @@ except ImportError as e:
print(f"\033[91mError importing module: {e}\033[0m\n")
print("\033[94mPlease ensure you started the Text-generation-webUI Python environment with either\033[0m")
print("\033[92mcmd_linux.sh\033[0m, \033[92mcmd_windows.bat\033[0m, \033[92mcmd_macos.sh\033[0m, or \033[92mcmd_wsl.bat\033[0m")
- print("\033[94mand then try running the diagnostics again.\033[0m")
+ print("\033[94mfrom the text-generation-webui directory, and then try running the diagnostics again.\033[0m")
exit(1)
try:
@@ -110,6 +111,14 @@ def log_system_info():
# Package versions using importlib_metadata
package_versions = {d.metadata['Name']: d.version for d in distributions()}
+ # Python environment information
+ python_executable = sys.executable
+ python_version_info = sys.version_info
+ python_virtual_env = os.environ.get('VIRTUAL_ENV', 'N/A')
+
+ # Conda environment information
+ conda_env = os.environ.get('CONDA_DEFAULT_ENV', 'N/A')
+
# Compare with requirements file
requirements_file = get_requirements_file()
if requirements_file:
@@ -134,12 +143,16 @@ def log_system_info():
# Log and print information
logging.info(f"OS Version: {os_version}")
- logging.info(f"Note: Windows 11 build is 10.x.22xxx")
- logging.info(f"Python Version: {python_version}")
+ logging.info(f"Note: Windows 11 will list as build is 10.x.22xxx")
logging.info(f"Torch Version: {torch_version}")
logging.info(f"System RAM: {system_ram}")
logging.info(f"CUDA_HOME: {cuda_home}")
logging.info(f"Port Status: {port_status}")
+ logging.info(f"Python Version: {platform.python_version()}")
+ logging.info(f"Python Version Info: {python_version_info}")
+ logging.info(f"Python Executable: {python_executable}")
+ logging.info(f"Python Virtual Environment: {python_virtual_env} (Should be N/A when in Text-generation-webui Conda Python environment)")
+ logging.info(f"Conda Environment: {conda_env}")
if required_packages: # Check if the dictionary is not empty
logging.info("Package Versions:")
max_package_length = max(len(package) for package in required_packages.keys())
@@ -153,12 +166,16 @@ def log_system_info():
# Print to screen
print(f"\n\033[94mOS Version:\033[0m \033[92m{os_version}\033[0m")
- print(f"\033[94mOS Ver note:\033[0m \033[92mWindows 11 build is 10.x.22xxx\033[0m")
+ print(f"\033[94mOS Ver note:\033[0m \033[92m(Windows 11 will say build is 10.x.22xxx)\033[0m")
print(f"\033[94mCUDA_HOME:\033[0m \033[92m{cuda_home}\033[0m")
print(f"\033[94mSystem RAM:\033[0m \033[92m{system_ram}\033[0m")
print(f"\033[94mPort Status:\033[0m \033[92m{port_status}\033[0m")
print(f"\033[94mTorch Version:\033[0m \033[92m{torch_version}\033[0m")
- print(f"\033[94mPython Version:\033[0m \033[92m{python_version}\033[0m")
+ print(f"\033[94mPython Version:\033[0m \033[92m{platform.python_version()}\033[0m")
+ print(f"\033[94mPython Version Info:\033[0m \033[92m{python_version_info}\033[0m")
+ print(f"\033[94mPython Executable:\033[0m \033[92m{python_executable}\033[0m")
+ print(f"\033[94mPython Virtual Environment:\033[0m \033[92m{python_virtual_env}\033[0m (Should be N/A when in Text-generation-webui Conda Python environment)")
+ print(f"\033[94mConda Environment:\033[0m \033[92m{conda_env}\033[0m")
if required_packages: # Check if the dictionary is not empty
print("\033[94m\nRequirements file package comparison:\033[0m")
max_package_length = max(len(package) for package in required_packages.keys())
From 607dc89be503b73ad214a8bfa3185b704f66ea6a Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Wed, 27 Dec 2023 04:44:44 +0000
Subject: [PATCH 26/39] Update README.md
Added a section on Running AllTalk as a standalone
---
README.md | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/README.md b/README.md
index b71fb0b..9404074 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,7 @@ AllTalk is an updated version of the Coqui_tts extension for Text Generation web
- π¨ [Help with problems](https://github.com/erew123/alltalk_tts?#-help-with-problems)
- β« [Finetuning a model](https://github.com/erew123/alltalk_tts?#-finetuning-a-model)
- π΅π’π‘ [DeepSpeed Installation (Windows & Linux)](https://github.com/erew123/alltalk_tts?#-deepspeed-installation-options)
+- π¦ [Running AllTalk as a standalone app](https://github.com/erew123/alltalk_tts?#-running-alltalk-as-a-standalone-app)
- π [API Suite and JSON-CURL](https://github.com/erew123/alltalk_tts?#-api-suite-and-json-curl)
- π΄ [Future to-do list & Upcoming updates](https://github.com/erew123/alltalk_tts?#-future-to-do-list)
@@ -465,6 +466,29 @@ def get_shm_size():
**Removal** - If it became necessary to uninstall DeepSpeed, you can do so with `cmd_windows.bat` and then `pip uninstall deepspeed`
+## π¦ Running AllTalk as a standalone app
+AllTalk will run as a standalone app, as long as you install its requirements files into whatever Python environment you are using. You can follow the steps to install the AllTalk's requirements into whatever Python environment you wish. Because I dont know what Python environment you are wanting to use, I can only give you a loose set of installation instructions.
+
+#### π¦ (Option 1) I already have AllTalk installed as an extension of Text-generation-webui
+If you already have AllTalk as a extension of Text-generation-webui, and wish to run it as standalone, load Text-generation-webui's Python environment `cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`, move into the AllTalk folder `cd extensions` > `cd alltalk_tts` and start AllTalk with `python script.py`. There is nothing beyond this you would need to do.
+
+#### π¦ (Option 2) I wish to do a custom install of AllTalk
+1) In your chosen disk location git clone this repository:
+`git clone https://github.com/erew123/alltalk_tts`
+
+2) Move into the **alltalk_tts** folder:
+`cd alltalk_tts`
+
+3) If you have a custom Python environment, now is the time to load it!
+
+4) Install one of the two requirements files. Whichever one of the two is correct for your machine type:
+**Nvidia graphics card machines** - `pip install -r requirements_nvidia.txt`
+**Other machines (mac, amd etc)** - `pip install -r requirements_other.txt`
+
+5) Start AllTalk with `python script.py`
+
+Deepspeed and other such things can be installed. Please read the relevant instructions for those items, however, make the relevant changes to load your correct Python environment when installing any requirements files and starting AllTalk.
+
## π API Suite and JSON-CURL
### π Overview
The Text-to-Speech (TTS) Generation API allows you to generate speech from text input using various configuration options. This API supports both character and narrator voices, providing flexibility for creating dynamic and engaging audio content.
From f83e7c3b4efa4557775a874755aef523e7e1d3de Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Wed, 27 Dec 2023 06:00:30 +0000
Subject: [PATCH 27/39] Update README.md
---
README.md | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 9404074..288d508 100644
--- a/README.md
+++ b/README.md
@@ -30,10 +30,6 @@ Dec 25th - Applied a small update to avoid a possible race condition on file nam
#### π **Minor updates/bug fixes list** can be found [here](https://github.com/erew123/alltalk_tts/issues/25)
-The latest build (13 Dec 2023) has had the entire text filtering engine and narration engine rebuilt from scratch. It's highly complicated how its actually working, but the end result it a much clearer TTS output and much better control over the narrator option and how to handle text that isnt within quotes or asterisks. It does however mean you need to ensure your character card is set up correctly if using the narrator function. Details are below in the installation notes.
-
-DeepSpeed **v11.2** can be installed within the **default text-generation-webui Python 3.11 environment**. Installs in custom Python environments are possible, but can be more complicated. Instructions [here](https://github.com/erew123/alltalk_tts##deepspeed-installation-options) (or scroll down).
-
## π© Installation on Text generation web UI
This has been tested on the current Dec 2023 release of Text generation webUI. If you have not updated it for a while, you may wish to update Text generation webUI, [instructions here](https://github.com/oobabooga/text-generation-webui?tab=readme-ov-file#how-to-install)
@@ -469,6 +465,8 @@ def get_shm_size():
## π¦ Running AllTalk as a standalone app
AllTalk will run as a standalone app, as long as you install its requirements files into whatever Python environment you are using. You can follow the steps to install the AllTalk's requirements into whatever Python environment you wish. Because I dont know what Python environment you are wanting to use, I can only give you a loose set of installation instructions.
+Please note, at time of writing, the TTS engine requires Python **3.9.x** to **3.11.x** [TTS Engine details here](https://pypi.org/project/TTS/)
+
#### π¦ (Option 1) I already have AllTalk installed as an extension of Text-generation-webui
If you already have AllTalk as a extension of Text-generation-webui, and wish to run it as standalone, load Text-generation-webui's Python environment `cmd_windows.bat`, `./cmd_linux.sh`, `cmd_macos.sh` or `cmd_wsl.bat`, move into the AllTalk folder `cd extensions` > `cd alltalk_tts` and start AllTalk with `python script.py`. There is nothing beyond this you would need to do.
From 94f5b781cca476977e131182691192bfcb957a4c Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Wed, 27 Dec 2023 06:08:10 +0000
Subject: [PATCH 28/39] Update Standalone API - race condition fix
Applies the same race condition fix for narrator/character that potentially existed, but for the standalone mode API. Will have zero effect for anyone not using the API
---
tts_server.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tts_server.py b/tts_server.py
index 9d6e717..d5f3e73 100644
--- a/tts_server.py
+++ b/tts_server.py
@@ -624,6 +624,7 @@ async def get_audio(filename: str):
########################
import html
import re
+import uuid
import numpy as np
import soundfile as sf
from typing import Union, Dict
@@ -802,7 +803,7 @@ async def tts_generate(
print("ELSE - NARRATOR\n")
cleaned_part = html.unescape(part.replace('< ', '').replace('< ', '').replace('< ', ''))
voice_to_use = narrator_voice_gen
- output_file = this_dir / "outputs" / f"{output_file_name}_{int(time.time())}_{i}.wav"
+ output_file = this_dir / "outputs" / f"{output_file_name}_{uuid.uuid4()}_{int(time.time())}_{i}.wav"
output_file_str = output_file.as_posix()
await generate_audio(cleaned_part, voice_to_use, language, output_file_str)
audio_path = output_file_str
From a34cbfdd553cb97cdfdf1e9fd405119a9cd905f5 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Wed, 27 Dec 2023 06:43:28 +0000
Subject: [PATCH 29/39] Made Settings link more visble
Updated the visibility of the settings & documentation page within Text-gen-webui interface.
Minor built in documentation update.
---
script.py | 2 +-
tts_server.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/script.py b/script.py
index 30a3dc0..0873aa7 100644
--- a/script.py
+++ b/script.py
@@ -786,7 +786,7 @@ def ui():
)
tts_radio_buttons_play = gr.HTML(visible=False)
explanation_text = gr.HTML(
- 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']}"
+ f"
βοΈ Click here for the Settings page, help & instructionsβοΈ
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 installed on your system."
)
with gr.Row():
diff --git a/tts_server.py b/tts_server.py
index d5f3e73..61fb07b 100644
--- a/tts_server.py
+++ b/tts_server.py
@@ -1158,7 +1158,7 @@ simple_webpage = """
Save your generated wav file in the /alltalk_tts/voices/ folder.
Its worth mentioning that using AI generated audio clips may introduce unwanted sounds as its already a copy/simulation of a voice.
Why doesnt it sound like XXX Person?
-The reasons can be that you:
+Maybe you might be interested in trying Finetuning of the model. Otherwise, the reasons can be that you:
- Didn't downsample it as above.
- Have a bad quality voice sample.
From 9ab20be2946a1bca14a93ea8daeb908787e5fb93 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Wed, 27 Dec 2023 06:49:46 +0000
Subject: [PATCH 30/39] Update README.md
updated a screenshot
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 288d508..9adadcf 100644
--- a/README.md
+++ b/README.md
@@ -142,7 +142,7 @@ Assuming its all working fine and you are happy, you can delete the old alltalk_
## π« Screenshots
-| |  |
+| |  |
|:---:|:---:|
| |  |
| |  |
From 1a2b8571d036f24d8b875e99c6767bb26caccb22 Mon Sep 17 00:00:00 2001
From: erew123 <35898566+erew123@users.noreply.github.com>
Date: Thu, 28 Dec 2023 12:05:46 +0000
Subject: [PATCH 31/39] Updated diagnostics to include Path
Now includes both Python and environment variables PATH search locations.
---
diagnostics.py | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/diagnostics.py b/diagnostics.py
index 7688698..ca5466a 100644
--- a/diagnostics.py
+++ b/diagnostics.py
@@ -119,6 +119,10 @@ def log_system_info():
# Conda environment information
conda_env = os.environ.get('CONDA_DEFAULT_ENV', 'N/A')
+ # Get Path environment information
+ search_path = sys.path
+ path_env = os.environ.get('PATH', 'N/A')
+
# Compare with requirements file
requirements_file = get_requirements_file()
if requirements_file:
@@ -153,8 +157,14 @@ def log_system_info():
logging.info(f"Python Executable: {python_executable}")
logging.info(f"Python Virtual Environment: {python_virtual_env} (Should be N/A when in Text-generation-webui Conda Python environment)")
logging.info(f"Conda Environment: {conda_env}")
+ logging.info("\nPython Search Path:")
+ for path in search_path:
+ logging.info(f" {path}")
+ logging.info("\nOS PATH Environment Variable:")
+ for path in path_env.split(';'):
+ logging.info(f" {path}")
if required_packages: # Check if the dictionary is not empty
- logging.info("Package Versions:")
+ logging.info("\nPackage Versions:")
max_package_length = max(len(package) for package in required_packages.keys())
for package_name, (operator, required_version) in required_packages.items():
installed_version = installed_packages.get(package_name, 'Not installed')
@@ -176,6 +186,12 @@ def log_system_info():
print(f"\033[94mPython Executable:\033[0m \033[92m{python_executable}\033[0m")
print(f"\033[94mPython Virtual Environment:\033[0m \033[92m{python_virtual_env}\033[0m (Should be N/A when in Text-generation-webui Conda Python environment)")
print(f"\033[94mConda Environment:\033[0m \033[92m{conda_env}\033[0m")
+ print(f"\n\033[94mPython Search Path:\033[0m")
+ for path in search_path:
+ print(f" {path}")
+ print(f"\n\033[94mOS Search PATH Environment Variable:\033[0m")
+ for path in path_env.split(';'):
+ print(f" {path}")
if required_packages: # Check if the dictionary is not empty
print("\033[94m\nRequirements file package comparison:\033[0m")
max_package_length = max(len(package) for package in required_packages.keys())
From 9f033e4654c4e9698b112adf9634740f18eeebe4 Mon Sep 17 00:00:00 2001
From: Ryan Bruels