Mods / RP Text to Speech

Tags: #Other #QoL #Tweak #Utility
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 IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.1.7 rptts
1.21.4 - 1.21.5
510 Nov 6th at 2:44 PM rptts.zip 1-click install
  • Swapped LevelFinalize listener for PlayerEntitySpawn, potentially fixing some rare hardware-timing related crashes.
  • Moved server handshake onto the main thread and removed OnPlayerNowPlaying from the server's scope.
  • Verified compatibility with The Basics (Thank you Basic Bit!)
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.
* Used capital case for special thanks
* Disabled verbose fall-off debugging

0.0.121 rptts 11 Nov 6th at 2:57 PM rptts.zip 1-click install

1.1.7 equivalent for net 7


48 Comments (oldest first | newest first)

💬 Shiroken, Nov 13th at 4:46 AM

Would be cool to have something like this for trader / npc dialogue, and some of the lore books.

💬 YangWenLi , Nov 9th at 11:35 PM

None at the moment, unfortunately, -since it's an entirely different mode of speech synth.

💬 Gewalt, Nov 9th at 1:39 PM

what settings would make the voice sound like the classic aeiu? 

💬 YangWenLi , Nov 7th at 1:36 AM

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. 

💬 Simcrafter, Nov 7th at 12:44 AM

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.

💬 YangWenLi , Nov 3rd at 2:12 AM

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.PositiveInfinity might 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 😭 

💬 GrimVisage, Nov 2nd at 5:57 AM (modified Nov 2nd at 6:36 AM)

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!

💬 YangWenLi , Oct 24th at 1:09 PM

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.

💬 RDodger, Oct 24th at 12:41 AM

Is there a way to mute other player voices as we are running also running the rpvoice mod for those who have mics

 

💬 Shyral, Oct 22nd at 2:27 PM

Love this mod : 3

💬 YangWenLi , Oct 14th at 9:01 PM

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.

💬 Cruto, Oct 14th at 3:54 PM

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!

💬 YangWenLi , Oct 13th at 11:01 PM

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. 

💬 Origin_Alpha_43, Oct 13th at 5:25 PM

from what Cruto is asking, i'd see an option in the voice selector where theres a Mute Voice (doesnt speak)
still, if doable

💬 Cruto, Oct 13th at 5:12 AM

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?

💬 YangWenLi , Oct 8th at 3:41 PM

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.

💬 Paeddy, Oct 7th at 6:28 PM

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.

💬 neobit, Sep 29th at 1:38 PM

Sounds good. Thanks for the info. 

💬 YangWenLi , Sep 29th at 12:15 PM

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.

💬 neobit, Sep 29th at 8:06 AM

Great mod, thanks for it.
Is it possible to have other languages than English?

💬 YangWenLi , Sep 29th at 12:55 AM

The new update will be out in a few minutes.

 

There's three highlights to this update:

  • Modding API:
        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.

  • Net 7 Compatibility:
       
    For servers on older builds of the game, use the new "0.0.125" version for compatibility.

  • No Lingering Messages on Death:
        Killing a player now shuts them up, expect from their own POV.

 

💬 YangWenLi , Sep 28th at 9:58 PM

Big update tonight.

💬 YangWenLi , Sep 24th at 12:50 PM

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.

💬 Willcario, Sep 24th at 6:38 AM (modified Sep 24th at 6:38 AM)

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

💬 Origin_Alpha_43, Sep 24th at 12:49 AM

any ways for servers to turn off every players announcing themselves when they join?

💬 YangWenLi , Sep 23rd at 1:30 PM

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.

💬 Aspenizcool, Sep 23rd at 8:06 AM

you may want to list the mods dependancies on the mod page lol

💬 Coda_Vanistok, Sep 23rd at 4:03 AM

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.

💬 YangWenLi , Sep 22nd at 11:34 AM

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.

💬 Dead_Nettle, Sep 22nd at 3:39 AM

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)

💬 YangWenLi , Sep 21st at 6:45 PM

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.

💬 YangWenLi , Sep 21st at 6:42 PM

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.

💬 Andronikos, Sep 21st at 9:05 AM (modified Sep 21st at 10:07 AM)

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?

💬 Kiroshiko, Sep 21st at 7:53 AM (modified Sep 21st at 7:53 AM)

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.

💬 WatermelonFrogy, Sep 21st at 2:59 AM

Seems to just soft crash with no logs on 1.20.12 :(

💬 YangWenLi , Sep 20th at 11:22 PM

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.

💬 Novarleeir, Sep 20th at 9:49 PM

Looking forward to the future DECTalk mod!

💬 Kiroshiko, Sep 20th at 8:47 PM

Any idea how I could fix it?

💬 Kiroshiko, Sep 20th at 8:38 PM

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:

Crash Report

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

💬 YangWenLi , Sep 20th at 8:36 PM

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.

💬 Andronikos, Sep 20th at 5:53 PM

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?

💬 YangWenLi , Sep 20th at 2:39 PM

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). 

💬 EnigmaticStudent, Sep 20th at 9:00 AM

'I used other peoples towels to wipe my ass on' -Enigma

💬 Blaeky, Sep 20th at 7:52 AM

John Madden John Madden John Madden

-The best game ever made

💬 Nicklos, Sep 20th at 4:53 AM

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.

💬 Parf, Sep 20th at 4:38 AM

mama mia, papa pia...

💬 YangWenLi , Sep 20th at 3:26 AM

Aeiou

💬 WasatchWind, Sep 20th at 1:41 AM

Aeiou

 (edit comment delete)
Основной веб-сайт | Почтовый сервер | FTP сервер | Административная панель | API интерфейс | Content Delivery Network | Статические файлы | Ресурсы сайта | Изображения | Файловое хранилище | Блог | Интернет-магазин | Техническая поддержка | Справочная система | Документация | Форум | Новости | Загрузки | Демонстрация | Тестовая среда | Приложение | Медиа контент | Разработка | Промежуточная среда | Бета версия | Безопасная зона | Вход в систему | Панель управления | Портал | Система управления контентом