Skip to content

A TTS Dalamud Plugin that breaks the silence! For self hosted TTS Services.

License

Notifications You must be signed in to change notification settings

RenNagasaki/Echokraut

Repository files navigation

Discord

Echokraut

Breaking the silence! That is the goal of this plugin for Dalamud. Unlike the official Dalamud Plugin TextToTalk, this plugin is meant for local/self hosted high quality TTS for those wanting a rich experience without paying an arm and a leg for it.

Dislaimer:

  • Since this plugin is dependent on AllTalk_TTS it is important to note that at the moment on Windows only Nvidia GPUs are supported. On Linux AMD should work as well. In the future this will expand.
  • The plugin is only tested in german, but should work in every client language. (Report an issue if not 😘)
  • Self hosted TTS is currently heavily dependent on a strong GPU. It's recommended to have at least a RTX 3060 (or AMD equivalent on Linux) with 6+GB VRAM built into the system hosting AllTalk_TTS for inference. (Keep in mind thats just for inference. If you want to play FFXIV on the same machine I guess 3080 is minimum) For training I'd recommend at least 12 GB of VRAM but the more the better.
  • This plugin is still in it's early stages of development, feel free to report any issues here or on my Discord (preferred)

Commands

  • /ek - Opens the configuration window.
  • /ekttalk - Toggles dialogue voicing
  • /ektbtalk - Toggles battle dialogue voicing
  • /ektbubble - Toggles bubble voicing
  • /ektchat - Toggles chat voicing
  • /ektcutschoice - Toggles cutscene choice voicing
  • /ektchoice - Toggles choice voicing
  • /ek - Opens the configuration window
  • /ekdel - /ekdel n -> Deletes last 'n' local saved files. Default 10
  • /ekdelmin - /ekdelmin n -> Deletes last 'n' minutes generated local saved files. Default 10

Features - Each feature is on/off toggleable

  • Dialogue TTS: All unvoiced Dialogues get voiced via the TTS Engine.
  • Battletalk TTS: All unvoiced Battletalks get voiced via the TTS Engine. (Battletalks are the small popup Texts in Duties or Story contents.)
  • Playerchoice TTS: Altough still in it's infant phase, the selections of the player in cutscenes get Voiced. This means you can give your own Character a voice! (Altough small in content)
  • Chat TTS: Your Chat get's Voiced in 3D Space. Meaning only people chatting around you are actually audible.
  • Bubble TTS: Like the Chat the ingame NPC Bubbles get Voiced in 3D Space. (Bubbles are the small text bubbles above random NPC's you meet on your journey)
  • Auto advance: The Text auto advances after the infered text is done speaking -> no need to click while in unvoiced cutscenes/quest dialogues.
  • Local saving/loading -> You can set the option so save generated text on your Disk so each time the text then is requested it gets loaded from disk instead of generated.(Only applies as long as the voice of the NPC doesn't change)
  • NPC voice selection: You can change the voice of every npc you met.

Features - Fixed

  • Ingame volume: This plugin uses the ingame volume for all generated TTS, meaning the infered(generated) audio should be close or equal to normal voiced cutscenes
  • Auto voice matching: The plugin tries to match an NPC via his name to a existing voice in your TTS. If none are found it tries to match to specified 'NPC' voices per race of NPC or lastly the narrator voice. AllTalk_TTS has the option to inform you of all available voices.

Planned Features

  • I'm currently looking in getting emotions to work for TTS meaning that people could use [angry] in their chats and the voice would sound angry. The raw dialogue text for story or quests sometimes contains stuff like for when a npc is exhausted and more. I aim to use that for more detailed voicing.
  • I'm still trying to figure out a way to identify "???" Dialogues to set the correct voice if possible. At the moment Dialogues with "???" as name get identified as a single NPC called "???" resulting in wrong voices.

Supported TTS providers

  • At the moment it only supports AllTalk_TTS which uses CoquiTTS for streaming inference. The v2_Beta of said TTS System supports Piper, VITS and more aswell.

Setup/Install

  • Setup AllTalk_TTS -> Refer to this site on how to install (Branch v2_Beta preferred. It's faster, easier to use, and more reliable).
  • (Optional) Finetune the xtts2 model to your own voices. Will sound better than simple voice cloning.
  • (Optional) To create your own trained voice model on your own FFXIV GameData, check out: Echokraut Tools
  • Add the following path to the experimental paths of Dalamud: https://raw.githubusercontent.com/RenNagasaki/MyDalamudPlugins/master/pluginmaster.json
  • Search for 'Echokraut' in Dalamud and install the plugin
  • Open the settings window either via the button or by typing /ek
  • In the 'Settings -> Backend' Tab enter the url of your AllTalk_TTS instance. (127.0.0.1:7851 should be default)
  • If clicking 'Test Connection' results in ready you're set.
  • (IMPORTANT) The naming scheme of the voices should be like this: GENDER_RACE_NAME.wav. For example: Male_Hyur_Thancred.wav for a named NPC and Male_Hyur_NPC1.wav for a random Hyur NPC. If more than one NPC voice exists then the plugin selects one randomly the first time you meet a new NPC. IMPORTANT: Number the NPCs in an increment(NPC1, NPC2 ...). Do not skip a number. This will produce problems!!!
  • There is one exception, the so called narrator voice. It gets used for all dialogues without a speaker and all NPCs where no other voice could be found (last fallback) and should be named Narrator.wav (Always should be existing).
  • For NPCs with multiple names (Nanamo Ul Namo/Lilira) or same voice actor take a look at this file: VoiceNames or the one matching your language. If there is no entry for one you're expecting feel free to add a pull request. These files are in the works while people use the plugin. (I can't fill this for other languages)
  • Small example of how the files should be named:
  • grafik

Just starting

I started this whole project as a way for me to enjoy replaying the game without having to read all of 2.0 again. It evolved from there so please bear with many features still missing. You can always request more. 😊

Thanks

  • Everyone contributing on the plugin-dev and dalamud-dev channels on the official Dalamud discord!
  • Some parts of the code are taken from/inspired by: TextToTalk. XivVoices.

About

A TTS Dalamud Plugin that breaks the silence! For self hosted TTS Services.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages