Mods / RP Text to Speech
Author: YangWenLi
Side: Both
Created: Sep 18th at 8:40 PM
Last modified: Nov 6th at 2:57 PM
Downloads: 2136
Follow Unfollow 93
Recommended download (for Vintage Story 1.21.0 and 1.21.4 - 1.21.5):
rptts.zip
1-click install
Roleplay Text to Speech
Aeiu John Madden
Welcome to Roleplay Text to Speech, a mod that adds 3D local text-to-speech support to the game's text chat.
The mod is very customizable with the ability to select your voice and pitch, alongside a variety of performance settings.
Ultimately, this mod is about inclusivity, allowing players who lack a microphone (or are otherwise shy)
to fit right in and be welcomed by role-play servers that use voice chat for communication.
Feature Highlight:
Over 5 voices to pick from!
Combined with a pitch setting, you have nearly endless combinations of unique voices to give your character.
Natural Sounding Voices & Pronunciation!
Using the latest in super-low-end-device speech synthesis technology, this mod accomplishes nearly intelligible audio!
Light on Resources!
Consumes no server resources outside of arbitrary string messages on demand
and uses only 25 megabytes of RAM client-side per concurrent voice, alongside background CPU power for synthesis.
3D Local Audio Positioning!
Sound actually come out of players, with the audio loudness based on your distance from them.
Multiplayer Ready!
This mod has been thoroughly tested to ensure stability, reliability, and performance prior to release.
The current player count record is a server with >100 users, all running the mod without issue.
※New!※ Modding API
Yo dawg, we heard you liked modding, so we put an API in our mod so your other mods can mod our mod.
Other mods (such as ones that affect the chat) can now make use of our API for cross-mod compatibility, no hard dependencies or complicated code.
High Customizability!
From your character's voice, to the amount of CPU threads you dedicate to the mod, this mod lets you tweak every detail.

Type .tts in chat to open the settings menu.
Dependencies:
To keep the mod lightweight, and modular for future expansions,
several elements have been broken into multiple dependencies, please download the following:
• Sherpa ONNX for Vintage Story
This mod is brought to you by...

The Unofficial Vintage Story Modding Co-op, click here to join.
As modders, we can help each other make even better stuff. Plus we have dedicated channels for better organization.
Special Thanks: The Entire RPVoiceChat Team, Dewbay, Dr. Able, Button, Capra and Enigma
| Mod Version | Mod Identifier | For Game version | Downloads | Released | Changelog | Download | 1-click mod install* |
|---|---|---|---|---|---|---|---|
| 1.1.7 | rptts | 510 | Nov 6th at 2:44 PM | rptts.zip | 1-click install | ||
| |||||||
| 1.0.2 | rptts | 378 | Sep 19th at 10:03 PM | rptts.zip | 1-click install | ||
|
* Added Capra and Enigma to the credits, they were part of the final test and trailer recording. | |||||||
| 0.0.121 | rptts | 11 | Nov 6th at 2:57 PM | rptts.zip | 1-click install | ||
|
1.1.7 equivalent for net 7 | |||||||
Would be cool to have something like this for trader / npc dialogue, and some of the lore books.
None at the moment, unfortunately, -since it's an entirely different mode of speech synth.
what settings would make the voice sound like the classic aeiu?
Indicate, as in per-word? Nope, unfortunately the way audio is generated does not permit for such finite control without resulting in a strong impact on performance.
Maybe if I ever do a DECTalk version, it'll be possible.
Is there a way to indicate pitch in the text-to-speech yet, like in Moonbase Alpha? I think it would be funny, even if it were a toggleable thing. I wouldn't blame any server owner for not wanting that madness on their server.
Hi GrimVisage, currently not. I plan to include a way to do range-less tts in a future version, but that's for after the next big update.
Until then, if you're willing to get a bit down and dirty for the friendgroup, you could make a custom build of the mod (it's open source), should be as simple as changing: `HearingRange` and `TTSMaxDistance`.
Something like
float.PositiveInfinitymight work, and 2147483647.Usually, for such small edits, I'd offer to compile it myself, but I got a metric ton of random stuff already in my todo list 😭
Is there a way to remove the distance limit on this mod? I tried setting the distance for hearing to 99999999 or 0 but it didn't seem to change much. Trying to use it for just a small group but want to be able to hear the text even if I am thousands of blocks away from the person typing it. Love the mod so far otherwise thanks!
Not at the moment. But it will be in the future.
Originally, I had imagined that if someone has a microphone, they'd simply not type and use TTS.
Is there a way to mute other player voices as we are running also running the rpvoice mod for those who have mics
Love this mod : 3
Got it, thank you for the understanding Cruto! Once the big features get in (which, again, are mostly done, just waiting for some coordination stuff), that'll be next on the list.
YangWenLi
Correct, disabling user voice for all other players. We've got a growing handful of players on my server that are having issues with the TTS just due to the limited nature of it where it doesn't sound how they would want, so they'd rather just disable their own voice entirely and stick to text-chat.
I'll let them know that its a possibility but no ETA. Thank you for the response!
Hey Cruto there already is an option to stop hearing yourself, do .tts and disable "Hear yourself".
Or if you are speaking about disabling your voice for all players, it might be doable through a setting/command that'll be introduced in a future version. It'll be part of an update that adds closer support to mods like BASIC, though I can't give an ETA yet as to when that'll be, unfortunately. The code is mostly written but, there's some organizational things to sort out.
Currently, the next version will just mostly be stability improvements and other stuff.
from what Cruto is asking, i'd see an option in the voice selector where theres a Mute Voice (doesnt speak)
still, if doable
Hi! I've seen it mentioned earlier but I wanted to also request a button to toggle off playing voices, specifically your own. For some people it's taking them out of character when their voice sounds really weird so they'd rather stick to just the text with no TTS while allowing other people's TTS to speak to them. Is this doable?
Hello Paeddy, other languages are not currently supported. But it is planned for the future (I'm currently stretched thin between work, bug fixes, other mods, etc).
There's only data for English, as I understand it, the other files are just to be able to parse other languages, but not pronounce them.
Hey, funny mod. I noticed that you got serveral language models in there but how to switch to them, I could not find the config file for configuration or anything really.
Sounds good. Thanks for the info.
Hello neobit, not yet.
But I do plan for it in the future. That'll come in another big update that detaches the TTS itself from the mod's core code, like how it was done with Sherpa which is now a dependency.
I don't have an ETA for when exactly but It'll be after I do some smaller QoL additions like adding more/better tools for servers to manage TTS abuse.
Great mod, thanks for it.
Is it possible to have other languages than English?
The new update will be out in a few minutes.
There's three highlights to this update:
Mods can now dynamically call an API function to make speak requests, with extended functionality such as gain and falloff modifiers. Perfect for roleplay-focused text chat mods.
Check the new guide included with each (new) release or the source code tab for more information.
For servers on older builds of the game, use the new "0.0.125" version for compatibility.
Killing a player now shuts them up, expect from their own POV.
Big update tonight.
Hello Origin_Alpha_43, that's a requested feature, and I'll indeed be working on it (though it will introduce client-side latency to do so for technical reasons).
As for Willcario, that'll have to be a future project... In the far future. Unfortunately, I have my hands pretty full at the moment.
do you think you could actually port moonbase alpha's text to speech so i can create horrible demonic screeching when i type EST MST WST EST MST WST because thats a core memory i have of the game
any ways for servers to turn off every players announcing themselves when they join?
Good idea Aspenizcool, I'll do that now.
I've been relying on the auto-downloader, but it seems to cause some minor issues in Windows 11.
you may want to list the mods dependancies on the mod page lol
Now all we need is compatibilty with mods like The Basics for it's proximty chat features. Imagine yelling at someone in a different language SS13 style from across a river.
Hello Dead_Nettle, not currently. The message is there both to know the mod is working, but it also performs the secret task of initializing the TTS model for the first time, to ensure it does not lag the first time a real message is sent. Like a car engine, it starts cold the first time, and needs to be warmed up so it can work faster in subsequent runs.
I am looking into removing this sanity check from future versions by passing the model a silent string to initialize with.
Is there any way to disable/change the message your character says when you join a world? (Also I'm loving this mod so far, I feel like it's gonna be huge for multiplayer youtubers)
Hi, Kiroshiko, I've added you on discord as a friend. Message me when you recieve it.
Hello WatermelonFrogy, could you provide some more details as to when the crash happens? Is this when loading into an old single-player world? New world? Server? Either way, add me on discord (cortellhugo, or find me in the VS Co-op) and I can try and see if I can debug the situation regardless.
Hello again Andronikos, you can disable your own voice from the settings. If you want to disable the mod as a whole, you can do so in the mods tab of the game.
If you're talking about being able to disable the mod client-side despite it being a server requirement, there's currently no means (I had not considered the possibility that someone might want to do this). I could add a command to ignore TTS requests, though keep in mind that this won't stop the mod from keeping data in memory, though it would stop it from using resources to generate messages.
As for proximity chat, I don't have any plans to add support for this mod or others like it yet. My current focus is fixing the Linux crashes and working on another mod I have. I might come back and add support for such mods in the future.
The mod currently uses a single variable (BaseTTSVolume) to adjust PCM gain, supporting per-message gain modulation would mean extra data to send over the network and handle locally, totally doable, but currently not a re-work that I'm particularly keen on making.
Thank you for the reply, YangWenLi! It 's a rather complicated subject given certain circumstances. 😓 But that's neither here nor there;
Another question in regards to it; I've done some quick testing on the mod and noticed a few things; what is the possibility of incorporating disabling its use in-game with a toggle?
Another thing; we utilize the proximity chat mod. (https://news.kalataka.ru/thebasics) Initial testing has shown that it voices over environmental messages, normal speech but not yelling or whispering-- at least from initial, cursory testing. Is there a possibility of a compatibility patch?
YangWenLi of course! I'd be more than happy to help with the mod development. Here's my discord, since i can't seem to find yours: miniloff. That's the nickname.
Seems to just soft crash with no logs on 1.20.12 :(
Hello Kiroshiko, I'll research that next thing in the morning, thank you for the log.
My preliminary guess from the error is that Linux is trying to load the natives from an incorrect path.
If that is the case, solving it will require a bit of trial and error. If you want to help with that, feel free to add me on discord, and I'll send you testing builds.
Looking forward to the future DECTalk mod!
Any idea how I could fix it?
Hey! Nice mod, but I seem to have an issue with it on my Steam Deck OLED. It crashes on the client after loading into the world with this log:
20.9.2025 23:34:10 [Warning] [rptts] [ERROR] TTS invoke error: System.DllNotFoundException: Unable to load shared library 'sherpa-onnx-c-api' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/app/extra/vintagestory/sherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/sherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/sherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/extra/vintagestory/libsherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/libsherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/libsherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/extra/vintagestory/sherpa-onnx-c-api: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/sherpa-onnx-c-api: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/sherpa-onnx-c-api: cannot open shared object file: No such file or directory
/app/extra/vintagestory/libsherpa-onnx-c-api: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/libsherpa-onnx-c-api: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/libsherpa-onnx-c-api: cannot open shared object file: No such file or directory
at SherpaOnnx.OfflineTts.SherpaOnnxCreateOfflineTts(OfflineTtsConfig& config)
at SherpaOnnx.OfflineTts..ctor(OfflineTtsConfig config)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
20.9.2025 23:34:10 [Fatal] Game Version: v1.21.1 (Stable)
9/20/2025 11:34:10 PM: Critical error occurred
Loaded Mods: americanfrontiersman@1.8.4, biggerpockets@1.0.0, buzzwords@1.8.0, catchledge@0.5.8, cavesymphony@1.2.0, chickenfeed@1.1.9, cbr@1.0.0, chiseltools@1.15.1, crawlanddive@0.2.1, crockmod@2.1.1, fastpicklencure@1.2.0, hangingoillamps@1.0.5, immersivelanterns@0.1.1, juicyores@1.0.1, lightrifts@1.1.0, longtermfood@0.2.3, millwright@1.2.8, morehanceforhfs@1.0.14, crockenheimer@2.1.5, overhaullib@1.9.1, pigfeed@1.0.9, primitivesurvival@3.9.6, prospecttogether@2.1.1, rstick@0.0.3, rtrullywoods@0.1.24, rptts@1.0.2, soaplyeandbloom@1.3.4, sonitorecipepin@1.0.0, spyglass@0.5.2, temporalsymphony@2.2.1, torchholdersmithingplus@1.0.0, translocatorengineeringredux@1.6.0, game@1.21.1, vsimgui@1.1.12, wlts@1.0.1, wildfarmingrevival@1.4.0, animalcages@4.0.1, apegrapes@1.3.1, attributerenderinglibrary@2.3.0, backpackpackplusexpanded@1.2.5, bedspawnv2@1.6.2, betterfirepit@1.1.6, bettertraders@0.1.0, blacksmithenhancements@1.1.4, blocksoverlay@4.5.3, butchering@1.10.3, carryon@1.10.9, chestorganizer@1.2.3, combatoverhaul@0.9.4, commonlib@2.8.0, configlib@1.10.2, electricalprogressivecore@2.3.1, extrainfo@1.10.0, farseer@1.3.2, foodshelves@2.3.0, fromgoldencombs@1.9.2-rc.2, genelib@2.0.0-rc.1, itempickupnotifier@1.7.3, jaunt@2.1.0-rc.1, knapster@3.0.0, krpgenchantment@1.2.0, maketeaforked@0.7.1, maltiezcrossbows@1.5.3, maltiezfirearms@1.2.3, mobsradar@2.1.12, opdoorpack@0.0.1, petai@4.0.0, purposefulstorage@1.4.1, rebuildablebloomery@1.0.3, redspecstrashslot@1.0.0, reedbuff@1.1.1, rubberbandaid@1.0.0, smithingplus@1.8.0-rc.3, statushudcont@3.3.1, stepupcontinued@0.0.1, stonebakeoven@1.2.0, tanningredux@1.0.2, terraprety@7.0.8, th3dungeon@0.4.4, versionchecker@1.2.2, creative@1.21.1, survival@1.21.1, windchimes@1.3.2, armory@1.2.1, draconis@1.1.0-rc.2, electricalprogressivebasics@2.3.0, equus@1.2.0-rc.5, em@3.3.0, extraoverlays@1.6.0, fastbreeding@0.0.24, playercorpse@1.12.0, quiversandsheaths@0.3.3, shearlib@1.2.0, stonequarry@3.5.1, wolftaming@4.0.1, electricalprogressiveqol@2.3.0, tailorsdelight@2.0.0, wool@1.7.1, electricalprogressiveequipment@2.2.1
System.DllNotFoundException: Unable to load shared library 'sherpa-onnx-c-api' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/app/extra/vintagestory/sherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/sherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/sherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/extra/vintagestory/libsherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/libsherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/libsherpa-onnx-c-api.so: cannot open shared object file: No such file or directory
/app/extra/vintagestory/sherpa-onnx-c-api: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/sherpa-onnx-c-api: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/sherpa-onnx-c-api: cannot open shared object file: No such file or directory
/app/extra/vintagestory/libsherpa-onnx-c-api: cannot open shared object file: No such file or directory
/app/lib/dotnet/shared/Microsoft.NETCore.App/8.0.19/libsherpa-onnx-c-api: cannot open shared object file: No such file or directory
/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Cache/unpack/rptts.zip_ef72ca655fe2/libsherpa-onnx-c-api: cannot open shared object file: No such file or directory
at SherpaOnnx.OfflineTts.SherpaOnnxDestroyOfflineTts(IntPtr handle)
at SherpaOnnx.OfflineTts.Cleanup()
at SherpaOnnx.OfflineTts.Finalize()
Crash written to file at "/home/deck/.var/app/at.vintagestory.VintageStory/config/VintagestoryData/Logs/client-crash.log"
20.9.2025 23:34:12 [Notification] Exiting game now. Server running=True. Exit reason: Game crashed
20.9.2025 23:34:12 [Notification] Destroying game session, waiting up to 200ms for client threads to exit
Hey Andronikos, I gave a more detailed breakdown in an earlier Reddit thread some time ago, but the short of it is that it's using a ML synthesizer called KittenTTS.
It runs entirely locally (so there's no dependency on any cloud service, nor privacy concerns), and afaik all data was sourced ethically.
The primary reason to go with something like this was because traditional solutions don't deliver natural sounding speech.
They sound like robots unless you're willing to either tune the phonemes manually, or download a very large data library. But there were other reasons such as file size, technical feasibility, and legal restrictions that factored in too.
DECTalk has a variety of legal and implementation issues around it, so I decided to leave an actual DECTalk mod for the future.
What system did you use for the voices? Something similar to a software variant of DECTALK? I'm rather curious about it! I take it it does not use generative AI for voice modulation?
Hey Nicklos, those are very good suggestions, I'll work on adding server admin commands for the next update (might be in a bit since I need to catch up with work and I promised to update my other mod first, but do know that I'll be on it).
Indeed, having server-wide messages for important information and a server-defined max message length is probably a good idea. I'll also look into why the voice does not go away on death (it should on paper, but I guess that escaped testing).
'I used other peoples towels to wipe my ass on' -Enigma
John Madden John Madden John Madden
-The best game ever made
Really fun mod just wish it had two things - a booming voice everyone hears when admin makes a message and better cap on long messages, I had a pesky player copy paste a wikipedia article into chat and even after he was eviscerated by the others his voice message spread like a funny little virus until enough people logged out for the phantom phrase to dissapear into the ether.
mama mia, papa pia...
Aeiou
Aeiou