Skip to content

TTS 3.0, - (aka new tts backend from Iamgoofball)#102

Merged
Bruh-24 merged 231 commits into
masterfrom
pr-95369
May 17, 2026
Merged

TTS 3.0, - (aka new tts backend from Iamgoofball)#102
Bruh-24 merged 231 commits into
masterfrom
pr-95369

Conversation

@Bruh-24

@Bruh-24 Bruh-24 commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

tgstation/tgstation#95369 - Всё, что нужно знать.

Спасибо, Гуфболл!

Thx, goofball! 💖

Iamgoofball and others added 30 commits March 10, 2026 02:32
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
…lso work at all) (#95520)

## About The Pull Request

Allows one to sync a remote chemical implant with a remote signalling
device, which disables its control via the Prisoner Management Console,
as well as its automatic injection upon death, & replaces it with
control via signal. The signal immediately injects all of the implant's
chemicals.

Also fixes that these things can't be moved out of the implant case at
all.

## Why It's Good For The Game

Currently, chem implants are only activateable via security's Prisoner
Management Console, and are visible(and destructible) through any of
those consoles. This limits their ability to be an antagonistic threat,
as it is only controllable via a crew-accessible console. Additionally,
this console is not capable of being controlled via other automatic
means, unlike radio signals, which expands their possible use cases
considerably. The threat of the implant could be interesting for an
antagonist to be able to use.

Also, nice that they're usable again.

## Changelog
:cl:

add: Remote chemical implants can be synced with a remote signalling
device to activate without a Prisoner Management Console.

/:cl:
## About The Pull Request

Adds a helper `SStts.random_tts_voice(gender)` which attempts to pick an
appropriate voice for the passed gender

## Why It's Good For The Game

Randomization into a completely wrong voice kinda ruins it

## Changelog

:cl: Melbert
qol: TTS voice is more appropriately randomized to gender
qol: Getting randomized through means such as mulligan toxin randomizes
TTS voices
/:cl:

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
## About The Pull Request
- Merged a lot of procs into procs `attempt_picture()` and
`interact_with_atom()` reducing proc overhead
- Taking pictures will now always use the cameras internal
`picture_size_x` & `picture_size_y`. It no longer accepts variable sizes
as parameters
- All camera operations are asynchronous and respects checks on if the
target can be captured on camera or not.
- A bunch of other code rearrangement that makes readability easier
- Fixes the following camera bugs. They fall under the same category
  - Fixes #95286
  - Fixes #95256

## Changelog
:cl:
fix: camera devices work again, camera flash turns on in most instances
refactor: camera code has been refactored. Report bugs on github
/:cl:

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
## About The Pull Request
- Removes `previous_reaction_list` & `failed_but_capable_reactions` from
reaction holder. Gives considerable memory savings because reagent
holder is used in a lot of places
- Removes proc `has_state_changed()`. This proc didn't do much in saving
reaction code from executing and was inaccurate in most cases anyway.
Removing it actually speeds up stuff
- Refactored `handle_reactions()` to be as fast & efficient as possible.
Removed the use of proc `has_reagent()` and re-arranged other code where
possible

## Changelog
:cl:
refactor: reagent reaction code has been refactored for better cpu &
memory performance. Report broken reactions on github
/:cl:
@Layzu666

Copy link
Copy Markdown
Contributor

@Iamgoofball Thank you from the bottom of my heart for all the help you’ve given my friend!❤️

@optimumtact

optimumtact commented Apr 19, 2026

Copy link
Copy Markdown
Contributor

on tgstation it's a 4070 TI Super which has 16GB of memory, so the model fits (it tends to run around 13.4G used in the wild), if you use the latest vox_cpm branch it will have an async tts endpoint which helps a lot by preventing requests having to wait while each voice gets generated.

in case it's useful here's the production docker compose and haxproxy config for tgstation.
https://gist.github.com/optimumtact/5ead2af036f86e21d759a05b00c82490

it uses haproxy's path begging mechanisms to allocate specific api workers for different endpoints.

This has handled up to 2000 requests in a 5 minute window peaks pretty smoothly.

I've found that you need at least 3 radio backends, since both tts, blips and tts radio can all hit the radio backends.

I also found that blips was a very busy service, so i gave it two workers.

@Bruh-24

Bruh-24 commented Apr 19, 2026

Copy link
Copy Markdown
Contributor Author

my ryzen 5 cpu might just explode at some point with all these workers, hahaha! 🤣

it will have an async tts endpoint

it's not there yet? I guess that's a one thing which is worth of rebuilding the whole compose straight up for 11 000 seconds 😭

https://gist.github.com/optimumtact/5ead2af036f86e21d759a05b00c82490
^^^^
изображение

😭😭😭😭

btw, @optimumtact , really hoping to see that cool realtime dashboard stat thingy 💖

@optimumtact

optimumtact commented Apr 19, 2026

Copy link
Copy Markdown
Contributor

https://file.house/aIrxWKaNuE5HAxisS41FWw==.txt

my ryzen 5 cpu might just explode at some point with all these workers, hahaha! 🤣

it will have an async tts endpoint

it's not there yet? I guess that's a one thing which is worth of rebuilding the whole compose straight up for 11 000 seconds 😭

It is already there, sorry for the confusion, it was merged a day or two ago
Iamgoofball/tgtts-qwen3#14

Depending on when you pulled the voxcpm branch you may already have it

@Bruh-24

Bruh-24 commented Apr 19, 2026

Copy link
Copy Markdown
Contributor Author

https://file.house/aIrxWKaNuE5HAxisS41FWw==.txt

my ryzen 5 cpu might just explode at some point with all these workers, hahaha! 🤣

it will have an async tts endpoint

it's not there yet? I guess that's a one thing which is worth of rebuilding the whole compose straight up for 11 000 seconds 😭

It is already there, sorry for the confusion, it was merged a day or two ago Iamgoofball/tgtts-qwen3#14

Depending on when you pulled the voxcpm branch you may already have it

okay, I'll try it out, thanks! 💖

@github-actions

Copy link
Copy Markdown
Contributor

Этот PR был неактивен достаточно долго, чтобы быть автоматически помеченным как устаревший. Это означает, что он рискует быть автоматически закрытым через ~7 дней, пожалуйста, рассмотрите все нерешенные вопросы по проверке и убедитесь, что ваш PR завершен, если все это верно и вы все равно автоматически заблокированы, вам нужно активно спрашивать Мейнтейнеров, будет ли ваш PR вмержен. Как только вы выполните любое из предыдущих действий, вам следует попросить сопровождающего удалить устаревшую метку с вашего PR, чтобы сбросить устаревший таймер. Если вы чувствуете, что ни один из сопровождающих не ответит в течение этого времени, вы можете закрыть этот PR самостоятельно, пока будете запрашивать комментарий у мейнтейнера, так как тогда вы сможете снова открыть PR самостоятельно

Iamgoofball and others added 4 commits April 29, 2026 14:19
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
pls give us LoRa 🙏 🙏 🙏
doing some backend stuff for new speakers page in char setup
too much non-modular code :)
@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

В пулл-реквесте присутствуют конфликты, решите их.

Bruh-24 added 5 commits May 9, 2026 16:18
adds ui, voice categories, modularizes code, tts-voice for announcements, tts for admin-command reports and .etc
somehow excluded those lines while i was reviewing my own code
@Bruh-24

Bruh-24 commented May 17, 2026

Copy link
Copy Markdown
Contributor Author

No need to wait for upstream to merge their PR.
I've also made some changes to api on the tts backend, so we could sort voices by categories defined in voice_mapping.json.

@Bruh-24 Bruh-24 changed the title [TM only] TTS 3.0 TTS 3.0 May 17, 2026
@Bruh-24 Bruh-24 changed the title TTS 3.0 TTS 3.0, - (aka new tts backend from Iamgoofball) May 17, 2026
@Bruh-24 Bruh-24 merged commit 12d8037 into master May 17, 2026
19 of 43 checks passed
@Iamgoofball

Copy link
Copy Markdown
Contributor

great work on the adjustments; can I ask where the repo is for the adjustments made to the TTS api? i want to integrate some of the changes you've made to the base repo but I don't see the fork on my dependency graph at https://github.com/Iamgoofball/tgtts-qwen3

@Bruh-24

Bruh-24 commented May 17, 2026

Copy link
Copy Markdown
Contributor Author

I've responded on Discord. I'll create the fork with all the neccessary changes as soon as possible! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.