This is a complete, buildable VoiceMaster project with all dependencies:
VoiceMaster_Complete_With_Dependencies/
├── VoiceMaster.sln ← Open this in Visual Studio
├── VoiceMaster/ ← Main plugin project
│ ├── VoiceMaster.csproj
│ ├── Plugin.cs
│ ├── Helper/
│ │ └── Addons/
│ │ ├── AddonTalkHelper.cs (NPC dialogue gating)
│ │ ├── AddonSelectStringHelper.cs (Player choices)
│ │ └── ...
│ └── ...
└── OtterGui/ ← UI dependency
├── OtterGui.csproj
└── OtterGuiInternal/ ← UI internal dependency
└── OtterGuiInternal.csproj
VoiceMaster.sln in Visual Studio 2022VoiceMaster\bin\x64\Release\VoiceMaster.dllcd VoiceMaster_Complete_With_Dependencies
dotnet restore
dotnet build VoiceMaster.sln -c Release
Output will be in VoiceMaster\bin\x64\Release\
After building:
Copy these files to %AppData%\XIVLauncher\devPlugins\VoiceMaster\:
VoiceMaster.dllVoiceMaster.jsonbass.dll (audio library)In FFXIV, type /xlplugins to open the plugin installer
Click "Dev Tools" tab
Scan for dev plugins or restart the game
Key Components:
Plugin.cs - Main entry point, plugin lifecycleHelper/Addons/ - Dialogue gating core (from Echokraut)
AddonTalkHelper.cs - NPC dialogue (speak-on-change)AddonSelectStringHelper.cs - Player choices (repeatable)AddonCutSceneSelectStringHelper.cs - Cutscene choicesBackends/ - TTS backend integration (Alltalk)Windows/ - UI windows (config, debug, etc.)Helper/Functional/ - Core functionalityDataClasses/ - Data structuresUI utility library used by VoiceMaster for custom UI components like:
ClippedSelectableCombo<> - Dropdown selectorsContains: OtterGuiInternal subdirectory (low-level ImGui wrappers)
Once loaded in-game:
/vm - Open main configuration/vmtalk - Talk window TTS settings/vmbtalk - Battle talk TTS settings/vmbubble - Speech bubble TTS settings/vmchat - Chat TTS settings✅ Speaks once per unique dialogue
✅ No repeats on identical text
✅ Resets when Talk window closes
✅ Works in world and cutscenes
How it works:
private static AddonTalkState lastValue;
private void Mutate(AddonTalkState nextValue)
{
if (lastValue.Equals(nextValue))
return; // Skip duplicate
lastValue = nextValue;
HandleChange(nextValue);
}
// Reset on window close
if (!visible && wasTalking)
{
lastValue = new AddonTalkState();
}
✅ Always speaks when selected
✅ Fully repeatable (same choice can be reselected)
✅ Separate pipeline from NPC
✅ Works in regular + cutscene dialogues
How it works:
PreFinalize event (when player confirms selection)"OtterGui could not be found"
<ProjectReference Include="..\OtterGui\OtterGui.csproj" />"Properties namespace does not exist"
Missing bass.dll
Plugin doesn't load
/xllogNo TTS audio
/vmThis is pure Echokraut with branding changes:
✅ Echokraut → VoiceMaster (all namespaces)
✅ /ekt → /vm (all commands)
✅ File names updated
✅ OtterGui properly integrated
Zero functional changes - dialogue gating is identical to proven Echokraut implementation.
To add features:
Helper/Addons/) unchangedRecommended approach:
Based on Echokraut by Ren Nagasaki
Original: https://github.com/RenNagasaki/Echokraut
License: AGPL-3.0-or-later
OtterGui by Ottermandias
License: MIT
For issues:
This package includes everything needed to build VoiceMaster successfully.
C#
99.9%
This is a complete, buildable VoiceMaster project with all dependencies:
VoiceMaster_Complete_With_Dependencies/
├── VoiceMaster.sln ← Open this in Visual Studio
├── VoiceMaster/ ← Main plugin project
│ ├── VoiceMaster.csproj
│ ├── Plugin.cs
│ ├── Helper/
│ │ └── Addons/
│ │ ├── AddonTalkHelper.cs (NPC dialogue gating)
│ │ ├── AddonSelectStringHelper.cs (Player choices)
│ │ └── ...
│ └── ...
└── OtterGui/ ← UI dependency
├── OtterGui.csproj
└── OtterGuiInternal/ ← UI internal dependency
└── OtterGuiInternal.csproj
VoiceMaster.sln in Visual Studio 2022VoiceMaster\bin\x64\Release\VoiceMaster.dllcd VoiceMaster_Complete_With_Dependencies
dotnet restore
dotnet build VoiceMaster.sln -c Release
Output will be in VoiceMaster\bin\x64\Release\
After building:
Copy these files to %AppData%\XIVLauncher\devPlugins\VoiceMaster\:
VoiceMaster.dllVoiceMaster.jsonbass.dll (audio library)In FFXIV, type /xlplugins to open the plugin installer
Click "Dev Tools" tab
Scan for dev plugins or restart the game
Key Components:
Plugin.cs - Main entry point, plugin lifecycleHelper/Addons/ - Dialogue gating core (from Echokraut)
AddonTalkHelper.cs - NPC dialogue (speak-on-change)AddonSelectStringHelper.cs - Player choices (repeatable)AddonCutSceneSelectStringHelper.cs - Cutscene choicesBackends/ - TTS backend integration (Alltalk)Windows/ - UI windows (config, debug, etc.)Helper/Functional/ - Core functionalityDataClasses/ - Data structuresUI utility library used by VoiceMaster for custom UI components like:
ClippedSelectableCombo<> - Dropdown selectorsContains: OtterGuiInternal subdirectory (low-level ImGui wrappers)
Once loaded in-game:
/vm - Open main configuration/vmtalk - Talk window TTS settings/vmbtalk - Battle talk TTS settings/vmbubble - Speech bubble TTS settings/vmchat - Chat TTS settings✅ Speaks once per unique dialogue
✅ No repeats on identical text
✅ Resets when Talk window closes
✅ Works in world and cutscenes
How it works:
private static AddonTalkState lastValue;
private void Mutate(AddonTalkState nextValue)
{
if (lastValue.Equals(nextValue))
return; // Skip duplicate
lastValue = nextValue;
HandleChange(nextValue);
}
// Reset on window close
if (!visible && wasTalking)
{
lastValue = new AddonTalkState();
}
✅ Always speaks when selected
✅ Fully repeatable (same choice can be reselected)
✅ Separate pipeline from NPC
✅ Works in regular + cutscene dialogues
How it works:
PreFinalize event (when player confirms selection)"OtterGui could not be found"
<ProjectReference Include="..\OtterGui\OtterGui.csproj" />"Properties namespace does not exist"
Missing bass.dll
Plugin doesn't load
/xllogNo TTS audio
/vmThis is pure Echokraut with branding changes:
✅ Echokraut → VoiceMaster (all namespaces)
✅ /ekt → /vm (all commands)
✅ File names updated
✅ OtterGui properly integrated
Zero functional changes - dialogue gating is identical to proven Echokraut implementation.
To add features:
Helper/Addons/) unchangedRecommended approach:
Based on Echokraut by Ren Nagasaki
Original: https://github.com/RenNagasaki/Echokraut
License: AGPL-3.0-or-later
OtterGui by Ottermandias
License: MIT
For issues:
This package includes everything needed to build VoiceMaster successfully.
C#
99.9%