周泳恩 commited on
Commit
fd13c06
·
1 Parent(s): 232e572

修复Dockerfile不再使用Git LFS,确保Hugging Face可以正确构建Docker镜像

Browse files
.gitattributes CHANGED
@@ -54,7 +54,7 @@ README.md !filter !diff !merge text
54
  *.nomedia filter=lfs diff=lfs merge=lfs -text
55
  *.npmignore filter=lfs diff=lfs merge=lfs -text
56
  *.replit filter=lfs diff=lfs merge=lfs -text
57
- /Dockerfile filter=lfs diff=lfs merge=lfs -text
58
  /LICENSE filter=lfs diff=lfs merge=lfs -text
59
  *.cmd filter=lfs diff=lfs merge=lfs -text
60
  *.bat filter=lfs diff=lfs merge=lfs -text
 
54
  *.nomedia filter=lfs diff=lfs merge=lfs -text
55
  *.npmignore filter=lfs diff=lfs merge=lfs -text
56
  *.replit filter=lfs diff=lfs merge=lfs -text
57
+ /Dockerfile !filter !diff !merge text
58
  /LICENSE filter=lfs diff=lfs merge=lfs -text
59
  *.cmd filter=lfs diff=lfs merge=lfs -text
60
  *.bat filter=lfs diff=lfs merge=lfs -text
.github/readme.md CHANGED
@@ -1,3 +1,380 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:3f004c1b3f59cb28c6bbb6300d3c1081f262ad6c4d9300c4efdc3742ffc2ed03
3
- size 22404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <a name="readme-top"></a>
2
+
3
+ ![][cover]
4
+
5
+ <div align="center">
6
+
7
+ English | [German](readme-de_de.md) | [中文](readme-zh_cn.md) | [繁體中文](readme-zh_tw.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) | [한국어](readme-ko_kr.md)
8
+
9
+ [![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
10
+ [![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
11
+ [![GitHub Issues](https://img.shields.io/github/issues/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/issues)
12
+ [![GitHub Pull Requests](https://img.shields.io/github/issues-pr/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/pulls)
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ SillyTavern provides a single unified interface for many LLM APIs (KoboldAI/CPP, Horde, NovelAI, Ooba, Tabby, OpenAI, OpenRouter, Claude, Mistral and more), a mobile-friendly layout, Visual Novel Mode, Automatic1111 & ComfyUI API image generation integration, TTS, WorldInfo (lorebooks), customizable UI, auto-translate, more prompt options than you'd ever want or need, and endless growth potential via third-party extensions.
19
+
20
+ We have a [Documentation website](https://docs.sillytavern.app/) to answer most of your questions and help you get started.
21
+
22
+ ## What is SillyTavern?
23
+
24
+ SillyTavern (or ST for short) is a locally installed user interface that allows you to interact with text generation LLMs, image generation engines, and TTS voice models.
25
+
26
+ Beginning in February 2023 as a fork of TavernAI 1.2.8, SillyTavern now has over 100 contributors and 2 years of independent development under its belt, and continues to serve as a leading software for savvy AI hobbyists.
27
+
28
+ ## Our Vision
29
+
30
+ 1. We aim to empower users with as much utility and control over their LLM prompts as possible. The steep learning curve is part of the fun!
31
+ 2. We do not provide any online or hosted services, nor programmatically track any user data.
32
+ 3. SillyTavern is a passion project brought to you by a dedicated community of LLM enthusiasts, and will always be free and open sourced.
33
+
34
+ ## Branches
35
+
36
+ SillyTavern is being developed using a two-branch system to ensure a smooth experience for all users.
37
+
38
+ * `release` -🌟 **Recommended for most users.** This is the most stable and recommended branch, updated only when major releases are pushed. It's suitable for the majority of users. Typically updated once a month.
39
+ * `staging` - ⚠️ **Not recommended for casual use.** This branch has the latest features, but be cautious as it may break at any time. Only for power users and enthusiasts. Updates several times daily.
40
+
41
+ If you're not familiar with using the git CLI or don't understand what a branch is, don't worry! The release branch is always the preferable option for you.
42
+
43
+ ## What do I need other than SillyTavern?
44
+
45
+ Since SillyTavern is only an interface, you will need access to an LLM backend to provide inference. You can use AI Horde for instant out-of-the-box chatting. Aside from that, we support many other local and cloud-based LLM backends: OpenAI-compatible API, KoboldAI, Tabby, and many more. You can read more about our supported APIs in [the FAQ](https://docs.sillytavern.app/usage/api-connections/).
46
+
47
+ ### Do I need a powerful PC to run SillyTavern?
48
+
49
+ The hardware requirements are minimal: it will run on anything that can run NodeJS 18 or higher. If you intend to do LLM inference on your local machine, we recommend a 3000-series NVIDIA graphics card with at least 6GB of VRAM. Check your backend's documentation for more details.
50
+
51
+ ### Suggested Backends (not affiliated)
52
+
53
+ * [AI Horde](https://aihorde.net/) - use models hosted by volunteers. Requires no further setup
54
+ * [KoboldCpp](https://github.com/LostRuins/koboldcpp) - a community's favorite for running GGUF models locally
55
+ * [tabbyAPI](https://github.com/theroyallab/tabbyAPI) - a popular, lightweight, locally-hosted exl2 inference API
56
+ * [OpenRouter](https://openrouter.ai) - a single API for many cloud providers (OpenAI, Claude, Meta Llama, etc.) as well as popular community models.
57
+
58
+ ## Questions or suggestions?
59
+
60
+ ### Discord server
61
+
62
+ | [![][discord-shield-badge]][discord-link] | [Join our Discord community!](https://discord.gg/sillytavern) Get support, share favorite characters and prompts. |
63
+ | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
64
+
65
+ Or get in touch with the developers directly:
66
+
67
+ * Discord: cohee, rossascends, wolfsblvt
68
+ * Reddit: [/u/RossAscends](https://www.reddit.com/user/RossAscends/), [/u/sillylossy](https://www.reddit.com/user/sillylossy/), [u/Wolfsblvt](https://www.reddit.com/user/Wolfsblvt/)
69
+ * [Post a GitHub issue](https://github.com/SillyTavern/SillyTavern/issues)
70
+
71
+ ### I like your project! How do I contribute?
72
+
73
+ 1. Send pull requests. Learn how to contribute: [CONTRIBUTING.md](../CONTRIBUTING.md)
74
+ 2. Send feature suggestions and issue reports using the provided templates.
75
+ 3. Read this entire readme file and check the documentation website first, to avoid sending duplicate issues.
76
+
77
+ ## Screenshots
78
+
79
+ <img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f">
80
+ <img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1">
81
+
82
+ ## Character Cards
83
+
84
+ SillyTavern is built around the concept of "character cards". A character card is a collection of prompts that set the behavior of the LLM and is required to have persistent conversations in SillyTavern. They function similarly to ChatGPT's GPTs or Poe's bots. The content of a character card can be anything: an abstract scenario, an assistant tailored for a specific task, a famous personality or a fictional character.
85
+
86
+ The name field is the only required character card input. To start a neutral conversation with the language model, create a new card simply called "Assistant" and leave the rest of the boxes blank. For a more themed chat, you can provide the language model with various background details, behavior and writing patterns, and a scenario to jump start the chat.
87
+
88
+ To have a quick conversation without selecting a character card or to just test the LLM connection, simply type your prompt input into the input bar on the Welcome Screen after opening SillyTavern. Please note that such chats are temporary and will not be saved.
89
+
90
+ To get a general idea on how to define character cards, see the default character (Seraphina) or download selected community-made cards from the "Download Extensions & Assets" menu.
91
+
92
+ ## Key Features
93
+
94
+ * Advanced text generation settings with many community-made presets
95
+ * World Info support: create rich lore or save tokens on your character card
96
+ * Group chats: multi-bot rooms for characters to talk to you and/or each other
97
+ * Rich UI customization options: theme colors, background images, custom CSS, and more
98
+ * User personas: let the AI know a bit about you for greater immersion
99
+ * Built-in RAG support: add documents to your chats for the AI to reference
100
+ * Extensive chat commands subsystem and own [scripting engine](https://docs.sillytavern.app/usage/st-script/)
101
+
102
+ ## Extensions
103
+
104
+ SillyTavern has extensibility support.
105
+
106
+ * Character emotional expressions (sprites)
107
+ * Auto-Summary of the chat history
108
+ * Automatic UI and chat translation
109
+ * Stable Diffusion/FLUX/DALL-E image generation
110
+ * Text-to-speech for AI response messages (via ElevenLabs, Silero, or the OS's System TTS)
111
+ * Web Search capabilities for adding additional real world context to your prompts
112
+ * Many more are available to download from the "Download Extensions & Assets" menu.
113
+
114
+ Tutorials on how to use them can be found in the [Docs](https://docs.sillytavern.app/).
115
+
116
+ # ⌛ Installation
117
+
118
+ > \[!WARNING]
119
+ >
120
+ > * DO NOT INSTALL INTO ANY WINDOWS CONTROLLED FOLDER (Program Files, System32, etc).
121
+ > * DO NOT RUN START.BAT WITH ADMIN PERMISSIONS
122
+ > * INSTALLATION ON WINDOWS 7 IS IMPOSSIBLE AS IT CAN NOT RUN NODEJS 18.16
123
+
124
+ ## 🪟 Windows
125
+
126
+ ### Installing via Git
127
+
128
+ 1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended)
129
+ 2. Install [Git for Windows](https://gitforwindows.org/)
130
+ 3. Open Windows Explorer (`Win+E`)
131
+ 4. Browse to or Create a folder that is not controlled or monitored by Windows. (ex: C:\MySpecialFolder\)
132
+ 5. Open a Command Prompt inside that folder by clicking in the 'Address Bar' at the top, typing `cmd`, and pressing Enter.
133
+ 6. Once the black box (Command Prompt) pops up, type ONE of the following into it and press Enter:
134
+
135
+ * for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
136
+ * for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
137
+
138
+ 7. Once everything is cloned, double-click `Start.bat` to make NodeJS install its requirements.
139
+ 8. The server will then start, and SillyTavern will pop up in your browser.
140
+
141
+ ### Installing via GitHub Desktop
142
+
143
+ (This allows git usage **only** in GitHub Desktop, if you want to use `git` on the command line too, you also need to install [Git for Windows](https://gitforwindows.org/))
144
+
145
+ 1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended)
146
+ 2. Install [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32)
147
+ 3. After installing GitHub Desktop, click on `Clone a repository from the internet....` (Note: You **do NOT need** to create a GitHub account for this step)
148
+ 4. On the menu, click the URL tab, enter this URL `https://github.com/SillyTavern/SillyTavern`, and click Clone. You can change the Local path to change where SillyTavern is going to be downloaded.
149
+ 6. To open SillyTavern, use Windows Explorer to browse into the folder where you cloned the repository. By default, the repository will be cloned here: `C:\Users\[Your Windows Username]\Documents\GitHub\SillyTavern`
150
+ 7. Double-click on the `start.bat` file. (Note: the `.bat` part of the file name might be hidden by your OS, in that case, it will look like a file called "`Start`". This is what you double-click to run SillyTavern)
151
+ 8. After double-clicking, a large black command console window should open and SillyTavern will begin to install what it needs to operate.
152
+ 9. After the installation process, if everything is working, the command console window should look like this and a SillyTavern tab should be open in your browser:
153
+ 10. Connect to any of the [supported APIs](https://docs.sillytavern.app/usage/api-connections/) and start chatting!
154
+
155
+ ## 🐧 Linux & 🍎 MacOS
156
+
157
+ For MacOS / Linux all of these will be done in a Terminal.
158
+
159
+ 1. Install git and nodeJS (the method for doing this will vary depending on your OS)
160
+ 2. Clone the repo
161
+
162
+ * for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
163
+ * for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
164
+
165
+ 3. `cd SillyTavern` to navigate into the install folder.
166
+ 4. Run the `start.sh` script with one of these commands:
167
+
168
+ * `./start.sh`
169
+ * `bash start.sh`
170
+
171
+ ## ⚡ Installing via SillyTavern Launcher
172
+
173
+ SillyTavern Launcher is an installation wizard that will help you get setup with many options, including installing a backend for local inference.
174
+
175
+ ### For Windows users
176
+
177
+ 1. On your keyboard: press **`WINDOWS + R`** to open Run dialog box. Then, run the following command to install git:
178
+
179
+ ```shell
180
+ cmd /c winget install -e --id Git.Git
181
+ ```
182
+
183
+ 2. On your keyboard: press **`WINDOWS + E`** to open File Explorer, then navigate to the folder where you want to install the launcher. Once in the desired folder, type `cmd` into the address bar and press enter. Then, run the following command:
184
+
185
+ ```shell
186
+ git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher && start installer.bat
187
+ ```
188
+
189
+ ### For Linux users
190
+
191
+ 1. Open your favorite terminal and install git
192
+ 2. Git clone the Sillytavern-Launcher with:
193
+
194
+ ```shell
195
+ git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher
196
+ ```
197
+
198
+ 3. Start the installer.sh with:
199
+
200
+ ```shell
201
+ chmod +x install.sh && ./install.sh
202
+ ```
203
+
204
+ 4. After installation start the launcher.sh with:
205
+
206
+ ```shell
207
+ chmod +x launcher.sh && ./launcher.sh
208
+ ```
209
+
210
+ ### For Mac users
211
+
212
+ 1. Open a terminal and install brew with:
213
+
214
+ ```shell
215
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
216
+ ```
217
+
218
+ 2. Install git with:
219
+
220
+ ```shell
221
+ brew install git
222
+ ```
223
+
224
+ 3. Git clone the Sillytavern-Launcher with:
225
+
226
+ ```shell
227
+ git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher
228
+ ```
229
+
230
+ 4. Start the installer.sh with:
231
+
232
+ ```shell
233
+ chmod +x install.sh && ./install.sh
234
+ ```
235
+
236
+ 5. After installation start the launcher.sh with:
237
+
238
+ ```shell
239
+ chmod +x launcher.sh && ./launcher.sh
240
+ ```
241
+
242
+ ## 🐋 Installing via Docker
243
+
244
+ These instructions assume you have installed Docker, are able to access your command line for the installation of containers, and familiar with their general operation.
245
+
246
+ ### Building the image yourself
247
+
248
+ We have a comprehensive guide on using SillyTavern in Docker [here](http://docs.sillytavern.app/installation/docker/) which covers installations on Windows, macOS and Linux! Give it a read if you wish to build the image yourself.
249
+
250
+ ### Using the GitHub Container Registry (easiest)
251
+
252
+ You will need two mandatory directory mappings and a port mapping to allow SillyTavern to function. In the command, replace your selections in the following places:
253
+
254
+ #### Container Variables
255
+
256
+ ##### Volume Mappings
257
+
258
+ * [config] - The directory where SillyTavern configuration files will be stored on your host machine
259
+ * [data] - The directory where SillyTavern user data (including characters) will be stored on your host machine
260
+ * [plugins] - (optional) The directory where SillyTavern server plugins will be stored on your host machine
261
+ * [extensions] - (optional) The directory where global UI extensions will be stored on your host machine
262
+
263
+ ##### Port Mappings
264
+
265
+ * [PublicPort] - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security.
266
+
267
+ ##### Additional Settings
268
+
269
+ * [DockerNet] - The docker network that the container should be created with a connection to. If you don't know what it is, see the [official Docker documentation](https://docs.docker.com/reference/cli/docker/network/).
270
+ * [version] - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" and "release" tags that point to the nightly images of the respective branches, but this may not be appropriate, if you are utilizing extensions that could be broken, and may need time to update.
271
+
272
+ #### Install command
273
+
274
+ 1. Open your Command Line
275
+ 2. Run the following command
276
+
277
+ `docker run --name='sillytavern' --net='[DockerNet]' -p '8000:8000/tcp' -v '[plugins]':'/home/node/app/plugins':'rw' -v '[config]':'/home/node/app/config':'rw' -v '[data]':'/home/node/app/data':'rw' -v '[extensions]':'/home/node/app/public/scripts/extensions/third-party':'rw' 'ghcr.io/sillytavern/sillytavern:[version]'`
278
+
279
+ > Note that 8000 is a default listening port. Don't forget to use an appropriate port if you change it in the config.
280
+
281
+ ## 📱 Installing via Termux on Android OS
282
+
283
+ > \[!NOTE]
284
+ > **SillyTavern can be run natively on Android devices using Termux, but we do not provide official support for this use case.**
285
+ >
286
+ > **Please refer to this guide by ArroganceComplex#2659:**
287
+ >
288
+ > * <https://rentry.org/STAI-Termux>
289
+
290
+ **Unsupported platform: android arm LEtime-web.** 32-bit Android requires an external dependency that can't be installed with npm. Use the following command to install it: `pkg install esbuild`. Then run the usual installation steps.
291
+
292
+ ## API keys management
293
+
294
+ SillyTavern saves your API keys to a `secrets.json` file in the user data directory (`/data/default-user/secrets.json` is the default path).
295
+
296
+ By default, API keys will not be visible from the interface after you have saved them and refreshed the page.
297
+
298
+ In order to enable viewing your keys:
299
+
300
+ 1. Set the value of `allowKeysExposure` to `true` in `config.yaml` file.
301
+ 2. Restart the SillyTavern server.
302
+ 3. Click the 'View hidden API keys' link at the bottom right of the API Connection Panel.
303
+
304
+ ## Command-line arguments
305
+
306
+ You can pass command-line arguments to SillyTavern server startup to override some settings in `config.yaml`.
307
+
308
+ ### Examples
309
+
310
+ ```shell
311
+ node server.js --port 8000 --listen false
312
+ # or
313
+ npm run start -- --port 8000 --listen false
314
+ # or (Windows only)
315
+ Start.bat --port 8000 --listen false
316
+ ```
317
+
318
+ ### Supported arguments
319
+
320
+ | Option | Description | Type |
321
+ |-------------------------|------------------------------------------------------------------------------------------------------|----------|
322
+ | `--version` | Show version number | boolean |
323
+ | `--enableIPv6` | Enables IPv6. | boolean |
324
+ | `--enableIPv4` | Enables IPv4. | boolean |
325
+ | `--port` | Sets the port under which SillyTavern will run. If not provided falls back to yaml config 'port'. | number |
326
+ | `--dnsPreferIPv6` | Prefers IPv6 for dns. If not provided falls back to yaml config 'preferIPv6'. | boolean |
327
+ | `--autorun` | Automatically launch SillyTavern in the browser. If not provided falls back to yaml config 'autorun'.| boolean |
328
+ | `--autorunHostname` | The autorun hostname, probably best left on 'auto'. | string |
329
+ | `--autorunPortOverride` | Overrides the port for autorun. | string |
330
+ | `--listen` | SillyTavern is listening on all network interfaces. If not provided falls back to yaml config 'listen'.| boolean |
331
+ | `--corsProxy` | Enables CORS proxy. If not provided falls back to yaml config 'enableCorsProxy'. | boolean |
332
+ | `--disableCsrf` | Disables CSRF protection | boolean |
333
+ | `--ssl` | Enables SSL | boolean |
334
+ | `--certPath` | Path to your certificate file. | string |
335
+ | `--keyPath` | Path to your private key file. | string |
336
+ | `--whitelist` | Enables whitelist mode | boolean |
337
+ | `--dataRoot` | Root directory for data storage | string |
338
+ | `--avoidLocalhost` | Avoids using 'localhost' for autorun in auto mode. | boolean |
339
+ | `--basicAuthMode` | Enables basic authentication | boolean |
340
+ | `--requestProxyEnabled` | Enables a use of proxy for outgoing requests | boolean |
341
+ | `--requestProxyUrl` | Request proxy URL (HTTP or SOCKS protocols) | string |
342
+ | `--requestProxyBypass` | Request proxy bypass list (space separated list of hosts) | array |
343
+
344
+ ## Remote connections
345
+
346
+ Most often this is for people who want to use SillyTavern on their mobile phones while their PC runs the ST server on the same Wi-Fi network. However, it can be used to allow remote connections from anywhere as well.
347
+
348
+ Read the detailed guide on how to set up remote connections in the [Docs](https://docs.sillytavern.app/usage/remoteconnections/).
349
+
350
+ You may also want to configure SillyTavern user profiles with (optional) password protection: [Users](https://docs.sillytavern.app/installation/st-1.12.0-migration-guide/#users).
351
+
352
+ ## Performance issues?
353
+
354
+ 1. Disable the Blur Effect and enable Reduced Motion on the User Settings panel (UI Theme toggles category).
355
+ 2. If using response streaming, set the streaming FPS to a lower value (10-15 FPS is recommended).
356
+ 3. Make sure the browser is enabled to use GPU acceleration for rendering.
357
+
358
+ ## License and credits
359
+
360
+ **This program is distributed in the hope that it will be useful,
361
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
362
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
363
+ GNU Affero General Public License for more details.**
364
+
365
+ * [TavernAI](https://github.com/TavernAI/TavernAI) 1.2.8 by Humi: MIT License
366
+ * Portions of CncAnon's TavernAITurbo mod used with permission
367
+ * Visual Novel Mode inspired by the work of PepperTaco (<https://github.com/peppertaco/Tavern/>)
368
+ * Noto Sans font by Google (OFL license)
369
+ * Icon theme by Font Awesome <https://fontawesome.com> (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
370
+ * Default content by @OtisAlejandro (Seraphina character and lorebook) and @kallmeflocc (10K Discord Users Celebratory Background)
371
+ * Docker guide by [@mrguymiah](https://github.com/mrguymiah) and [@Bronya-Rand](https://github.com/Bronya-Rand)
372
+
373
+ ## Top Contributors
374
+
375
+ [![Contributors](https://contrib.rocks/image?repo=SillyTavern/SillyTavern)](https://github.com/SillyTavern/SillyTavern/graphs/contributors)
376
+
377
+ <!-- LINK GROUP -->
378
+ [cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44
379
+ [discord-link]: https://discord.gg/sillytavern
380
+ [discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge
Dockerfile DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:743e2ac6d14f5c961f4a71b23c20b529d1604f5b26628ffbdd875c3bc02c5873
3
- size 1297
 
 
 
 
public/scripts/extensions/tts/readme.md CHANGED
@@ -1,3 +1,76 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:f3d01a815a99698109b298732572532f9bde45a12866912804b8dd65489dd363
3
- size 3493
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Provider Requirements.
2
+ Because I don't know how, or if you can, and/or maybe I am just too lazy to implement interfaces in JS, here's the requirements of a provider that the extension needs to operate.
3
+
4
+ ### class YourTtsProvider
5
+ #### Required
6
+ Exported for use in extension index.js, and added to providers list in index.js
7
+ 1. generateTts(text, voiceId)
8
+ 2. fetchTtsVoiceObjects()
9
+ 3. onRefreshClick()
10
+ 4. checkReady()
11
+ 5. loadSettings(settingsObject)
12
+ 6. settings field
13
+ 7. settingsHtml field
14
+
15
+ #### Optional
16
+ 1. previewTtsVoice()
17
+ 2. separator field
18
+ 3. processText(text)
19
+
20
+ # Requirement Descriptions
21
+ ### generateTts(text, voiceId)
22
+ Must return `audioData.type in ['audio/mpeg', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/webm']`
23
+ Must take text to be rendered and the voiceId to identify the voice to be used
24
+
25
+ ### fetchTtsVoiceObjects()
26
+ Required.
27
+ Used by the TTS extension to get a list of voice objects from the provider.
28
+ Must return an list of voice objects representing the available voices.
29
+ 1. name: a friendly user facing name to assign to characters. Shows in dropdown list next to user.
30
+ 2. voice_id: the provider specific id of the voice used in fetchTtsGeneration() call
31
+ 3. preview_url: a URL to a local audio file that will be used to sample voices
32
+ 4. lang: OPTIONAL language string
33
+
34
+ ### getVoice(voiceName)
35
+ Required.
36
+ Must return a single voice object matching the provided voiceName. The voice object must have the following at least:
37
+ 1. name: a friendly user facing name to assign to characters. Shows in dropdown list next to user.
38
+ 2. voice_id: the provider specific id of the voice used in fetchTtsGeneration() call
39
+ 3. preview_url: a URL to a local audio file that will be used to sample voices
40
+ 4. lang: OPTIONAL language indicator
41
+
42
+ ### onRefreshClick()
43
+ Required.
44
+ Users click this button to reconnect/reinit the selected provider.
45
+ Responds to the user clicking the refresh button, which is intended to re-initialize the Provider into a working state, like retrying connections or checking if everything is loaded.
46
+
47
+ ### checkReady()
48
+ Required.
49
+ Return without error to let TTS extension know that the provider is ready.
50
+ Return an error to block the main TTS extension for initializing the provider and UI. The error will be put in the TTS extension UI directly.
51
+
52
+ ### loadSettings(settingsObject)
53
+ Required.
54
+ Handle the input settings from the TTS extension on provider load.
55
+ Put code in here to load your provider settings.
56
+
57
+ ### settings field
58
+ Required, used for storing any provider state that needs to be saved.
59
+ Anything stored in this field is automatically persisted under extension_settings[providerName] by the main extension in `saveTtsProviderSettings()`, as well as loaded when the provider is selected in `loadTtsProvider(provider)`.
60
+ TTS extension doesn't expect any specific contents.
61
+
62
+ ### settingsHtml field
63
+ Required, injected into the TTS extension UI. Besides adding it, not relied on by TTS extension directly.
64
+
65
+ ### previewTtsVoice()
66
+ Optional.
67
+ Function to handle playing previews of voice samples if no direct preview_url is available in fetchTtsVoiceObjects() response
68
+
69
+ ### separator field
70
+ Optional.
71
+ Used when narrate quoted text is enabled.
72
+ Defines the string of characters used to introduce separation between between the groups of extracted quoted text sent to the provider. The provider will use this to introduce pauses by default using `...`
73
+
74
+ ### processText(text)
75
+ Optional.
76
+ A function applied to the input text before passing it to the TTS generator. Can be async.