diff --git a/colab/GPU.ipynb b/colab/GPU.ipynb
index 74bbee704..d5c24d77b 100644
--- a/colab/GPU.ipynb
+++ b/colab/GPU.ipynb
@@ -20,6 +20,7 @@
"outputs": [],
"source": [
"#@markdown Enables hosting of extensions backend for SillyTavern Extras\n",
+ "use_cpu = False #@param {type:\"boolean\"}\n",
"extras_enable_captioning = True #@param {type:\"boolean\"}\n",
"#@markdown Loads the image captioning module\n",
"Captions_Model = \"Salesforce/blip-image-captioning-large\" #@param [ \"Salesforce/blip-image-captioning-large\", \"Salesforce/blip-image-captioning-base\" ]\n",
@@ -37,6 +38,13 @@
"#@markdown * Qiliang/bart-large-cnn-samsum-ChatGPT_v3 - summarization model optimized for chats\n",
"#@markdown * Qiliang/bart-large-cnn-samsum-ElectrifAi_v10 - nice results so far, but still being evaluated\n",
"#@markdown * distilbart-xsum-12-3 - faster, but pretty basic alternative\n",
+ "extras_enable_tts = True #@param {type:\"boolean\"}\n",
+ "#@markdown Enables Silero text-to-speech module\n",
+ "extras_enable_sd = True #@param {type:\"boolean\"}\n",
+ "#@markdown Enables SD picture generation\n",
+ "SD_Model = \"ckpt/anything-v4.5-vae-swapped\" #@param [ \"ckpt/anything-v4.5-vae-swapped\", \"ckpt/sd15\" ]\n",
+ "#@markdown * ckpt/anything-v4.5-vae-swapped - anime style model\n",
+ "#@markdown * ckpt/sd15 - base SD 1.5\n",
"\n",
"import subprocess\n",
"\n",
@@ -44,7 +52,8 @@
"# SillyTavern extras\n",
"extras_url = '(disabled)'\n",
"params = []\n",
- "params.append('--cpu')\n",
+ "if use_cpu:\n",
+ " params.append('--cpu')\n",
"params.append('--share')\n",
"ExtrasModules = []\n",
"\n",
@@ -54,10 +63,15 @@
" ExtrasModules.append('summarize')\n",
"if (extras_enable_emotions):\n",
" ExtrasModules.append('classify')\n",
+ "if (extras_enable_sd):\n",
+ " ExtrasModules.append('sd')\n",
+ "if (extras_enable_tts):\n",
+ " ExtrasModules.append('tts')\n",
"\n",
"params.append(f'--classification-model={Emotions_Model}')\n",
"params.append(f'--summarization-model={Memory_Model}')\n",
"params.append(f'--captioning-model={Captions_Model}')\n",
+ "params.append(f'--sd-model={SD_Model}')\n",
"params.append(f'--enable-modules={\",\".join(ExtrasModules)}')\n",
"\n",
"\n",
@@ -65,7 +79,7 @@
"!git clone https://github.com/Cohee1207/SillyTavern-extras\n",
"%cd /SillyTavern-extras\n",
"!npm install -g localtunnel\n",
- "!pip install -r requirements.txt\n",
+ "!pip install -r requirements-complete.txt\n",
"!pip install tensorflow==2.11\n",
"\n",
"\n",
@@ -76,7 +90,8 @@
"print('processId:', extras_process.pid)\n",
"while True:\n",
" line = extras_process.stdout.readline().decode().strip()\n",
- " print(line)\n"
+ " if line != None and line != '':\n",
+ " print(line)\n"
]
}
],
diff --git a/public/scripts/extensions/tts/manifest.json b/public/scripts/extensions/tts/manifest.json
index 573fe647a..ccd63edf6 100644
--- a/public/scripts/extensions/tts/manifest.json
+++ b/public/scripts/extensions/tts/manifest.json
@@ -2,10 +2,12 @@
"display_name": "TTS",
"loading_order": 10,
"requires": [],
- "optional": [],
+ "optional": [
+ "tts"
+ ],
"js": "index.js",
"css": "style.css",
"author": "Ouoertheo#7264",
"version": "1.0.0",
"homePage": "None"
-}
+}
\ No newline at end of file
diff --git a/public/scripts/extensions/tts/silerotts.js b/public/scripts/extensions/tts/silerotts.js
index c39e67052..7b00e78e1 100644
--- a/public/scripts/extensions/tts/silerotts.js
+++ b/public/scripts/extensions/tts/silerotts.js
@@ -1,3 +1,5 @@
+import { getApiUrl, modules } from "../../extensions.js"
+
export { SileroTtsProvider }
class SileroTtsProvider {
@@ -17,7 +19,8 @@ class SileroTtsProvider {
let html = `
- A simple Python Silero TTS Server can be found here.
+
+ Use SillyTavern Extras API or Silero TTS Server.
`
return html
}
@@ -43,8 +46,19 @@ class SileroTtsProvider {
throw `Invalid setting passed to TTS Provider: ${key}`
}
}
+
+ const apiCheckInterval = setInterval(() => {
+ // Use Extras API if TTS support is enabled
+ if (modules.includes('tts')) {
+ const baseUrl = new URL(getApiUrl());
+ baseUrl.pathname = '/api/tts';
+ this.settings.provider_endpoint = baseUrl.toString();
+ $('#silero_tts_endpoint').val(this.settings.provider_endpoint);
+ clearInterval(apiCheckInterval);
+ }
+ }, 2000);
- $('#silero_tts_endpoint').text(this.settings.provider_endpoint)
+ $('#silero_tts_endpoint').val(this.settings.provider_endpoint)
console.info("Settings loaded")
}
diff --git a/public/scripts/poe.js b/public/scripts/poe.js
index be3b021e3..3e2568a19 100644
--- a/public/scripts/poe.js
+++ b/public/scripts/poe.js
@@ -99,7 +99,7 @@ async function generatePoe(type, finalPrompt, signal) {
if (poe_settings.auto_jailbreak && !auto_jailbroken) {
for (let retryNumber = 0; retryNumber < MAX_RETRIES_FOR_ACTIVATION; retryNumber++) {
- const reply = await sendMessage(poe_settings.jailbreak_message, false);
+ const reply = await sendMessage(substituteParams(poe_settings.jailbreak_message), false);
if (reply.toLowerCase().includes(poe_settings.jailbreak_response.toLowerCase())) {
auto_jailbroken = true;