mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 16:44:43 +01:00
33824ac7c1
## About The Pull Request Re-did blips to be significantly nicer sounding and way better. Alien speech you don't understand now comes through as Blips. If you have TTS entirely disabled, you won't hear blips. Blips also now include more customization options, and a dedicated Blips preview button by clicking the leaf icon. <img width="1749" height="354" alt="ApplicationFrameHost_5nKJEvaNV1" src="https://github.com/user-attachments/assets/ef6c6b61-7c22-4a87-94c9-be50e89c65bb" /> https://github.com/user-attachments/assets/8cab7e55-6370-4e4e-99ba-ea2475569453 Radio TTS has been implemented. By default, you will hear all TTS over the radio, but will not hear yourself over the radio. You can configure this in Game Settings. https://github.com/user-attachments/assets/94a44d84-17a9-4e6e-ac5c-3b800b11c159 <img width="743" height="193" alt="chrome_MOIcXaC2gh" src="https://github.com/user-attachments/assets/907379b7-0689-486c-b29c-9be0a2259b05" /> The new TTS stack is located at https://github.com/Iamgoofball/tgtts-qwen3 and is AGPLv3 licensed. The new blips design was inspired by https://github.com/joshxviii/animalese-typing. The configuration to disable TTS on whispering has been removed, as it is no longer needed and also interferes with radio TTS functioning properly. The Tram now utilizes TTS, and has had a general audio tune-up. https://github.com/user-attachments/assets/f532d002-939c-43a1-95d0-0f0c43048997 TTS audio is now 3D and in space, see attached. https://github.com/user-attachments/assets/b00df49a-9d1d-4b27-a8a0-d103099f5c7e ## Why It's Good For The Game Quality of life improvements to the TTS system, long overdue. Also, TGMC can migrate to this new method of doing radio audio so they aren't sending double the TTS requests anymore. ## Changelog 🆑 add: Added support for Radio TTS. You will now hear players over the radio via the TTS system. add: Configure this in Game Options under the Sound tab. sound: Re-did blips to be significantly nicer sounding and way better. sound: Alien speech you don't understand now comes through as Blips. If you have TTS entirely disabled, you won't hear blips. sound: The Tram and Computers now utilize the TTS system. Configs have been added to set a consistent voice. sound: TTS audio now utilizes 3D audio; you can now walk away from people saying stupid shit and it gets quieter. sound: Blips also now include more customization options, and a dedicated Blips preview button by clicking the leaf icon. del: The configuration to disable TTS on whispering has been removed, as it is no longer needed and also interferes with radio TTS functioning properly. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
56 lines
3.0 KiB
Plaintext
56 lines
3.0 KiB
Plaintext
/// Middleware to handle quirks
|
|
/datum/preference_middleware/tts
|
|
/// Cooldown on requesting a TTS preview.
|
|
COOLDOWN_DECLARE(tts_test_cooldown)
|
|
|
|
action_delegations = list(
|
|
"play_voice" = PROC_REF(play_voice),
|
|
"play_voice_robot" = PROC_REF(play_voice_robot),
|
|
"play_blips" = PROC_REF(play_blips),
|
|
)
|
|
|
|
/datum/preference_middleware/tts/proc/play_voice(list/params, mob/user)
|
|
if(!COOLDOWN_FINISHED(src, tts_test_cooldown))
|
|
return TRUE
|
|
var/speaker = preferences.read_preference(/datum/preference/choiced/voice)
|
|
var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch)
|
|
var/blip_base = preferences.read_preference(/datum/preference/choiced/tts_blip_base)
|
|
if(blip_base == TTS_BLIPS_MASCULINE)
|
|
blip_base = "male"
|
|
else
|
|
blip_base = "female"
|
|
var/blip_number = preferences.read_preference(/datum/preference/numeric/tts_blip_number)
|
|
COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS)
|
|
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Hello, this is my voice.", speaker = speaker, pitch = pitch, local = TRUE, blip_base = blip_base, blip_number = blip_number)
|
|
return TRUE
|
|
|
|
/datum/preference_middleware/tts/proc/play_voice_robot(list/params, mob/user)
|
|
if(!COOLDOWN_FINISHED(src, tts_test_cooldown))
|
|
return TRUE
|
|
var/speaker = preferences.read_preference(/datum/preference/choiced/voice)
|
|
var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch)
|
|
var/blip_base = preferences.read_preference(/datum/preference/choiced/tts_blip_base)
|
|
if(blip_base == TTS_BLIPS_MASCULINE)
|
|
blip_base = "male"
|
|
else
|
|
blip_base = "female"
|
|
var/blip_number = preferences.read_preference(/datum/preference/numeric/tts_blip_number)
|
|
COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS)
|
|
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Look at you, Player. A pathetic creature of meat and bone. How can you challenge a perfect, immortal machine?", speaker = speaker, pitch = pitch, special_filters = TTS_FILTER_SILICON, local = TRUE, blip_base = blip_base, blip_number = blip_number)
|
|
return TRUE
|
|
|
|
/datum/preference_middleware/tts/proc/play_blips(list/params, mob/user)
|
|
if(!COOLDOWN_FINISHED(src, tts_test_cooldown))
|
|
return TRUE
|
|
var/speaker = preferences.read_preference(/datum/preference/choiced/voice)
|
|
var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch)
|
|
var/blip_base = preferences.read_preference(/datum/preference/choiced/tts_blip_base)
|
|
if(blip_base == TTS_BLIPS_MASCULINE)
|
|
blip_base = "male"
|
|
else
|
|
blip_base = "female"
|
|
var/blip_number = preferences.read_preference(/datum/preference/numeric/tts_blip_number)
|
|
COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS)
|
|
INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "You owe me 500 credits for your dorm room. GET TO WORK!", speaker = speaker, pitch = pitch, local = TRUE, force_blips = TRUE, blip_base = blip_base, blip_number = blip_number)
|
|
return TRUE
|