Chat TTS plugin for Dalamud. Has support for triggers/exclusions, several TTS providers, and more!
/tttconfig: Opens the configuration window./canceltts: Cancel all queued TTS messages./toggletts: Turns TTS on or off./disabletts: Turns TTS off./enabletts: Turns TTS on.
TextToTalk supports custom lexicons to modify how words are pronounced. For more information, please join our community lexicons discussion.
Direct links to information will be added here eventually.
- System (Windows)
- Megaphone
- Websocket
- AWS Polly
- Azure (Microsoft Cognitive Services)
- Google Cloud
- ElevenLabs
- OpenAI
- Fish Audio
- Kokoro
- Uberduck
TextToTalk can optionally open a WebSocket server to serve messages over.
There are currently three JSON-format messages that can be sent (see
IpcMessage):
TTS prompt:
{
"Type": "Say",
"Payload": "Firstname Lastname says something",
// Will replace the logged-in player's name with {{FULL_NAME}}, {{FIRST_NAME}}, or {{LAST_NAME}} as appropriate.
// Does not currently apply to players other than the logged-in player.
"PayloadTemplate": "{{FULL_NAME}} says something",
"Voice": {
"Name": "Gender"
},
"Speaker": "Firstname Lastname",
// or "AddonTalk", or "AddonBattleTalk"
"Source": "Chat",
"StuttersRemoved": false,
// or null, for non-NPCs
"NpcId": 1000115,
// "Hyur", "Elezen", "Lalafell", "Miqo'te", "Roegadyn", "Au Ra", "Hrothgar", "Viera", or null
"Race": null,
// "Unknown", "Youth", "Adult", "Elder", or null
"BodyType": null,
// "None", "Male", "Female", or null
"Gender": null,
// Refer to https://dalamud.dev/api/Dalamud.Game.Text/Enums/XivChatType
"ChatType": 10,
// Refer to https://dalamud.dev/api/Dalamud/Enums/ClientLanguage
"Language": "English",
// Game voice volume level (0.0-1.0)
"Volume": 1.0
}TTS cancel:
{
"Type": "Cancel",
"Payload": "",
"PayloadTemplate": "",
"Voice": null,
"Speaker": null,
// or "Chat", "AddonTalk", or "AddonBattleTalk"
"Source": "None",
"StuttersRemoved": false,
"NpcId": null,
"ChatType": null,
"Language": null
}{
"Type": "Event",
// or "Chat", "AddonTalk", or "AddonBattleTalk"
"Source": "AddonTalk",
// "NpcDialogueSessionStarted" or "NpcDialogueSessionEnded"
"EventType": "NpcDialogueSessionStarted",
// Unique identifier for the session
"EventSessionId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
// Reason for the event: "TextReceived", "AddonShown", "DialogueContextEnded",
// "TerritoryChanged", "LoggedOut", or "PluginStopped"
"EventReason": "TextReceived"
}A dialogue session starts when NPC or battle dialogue text arrives (or the Talk/BattleTalk addon becomes visible) and ends when all dialogue signals are absent for 3 consecutive frames, or immediately on territory change/logout/plugin shutdown.
Refer to the wiki for dev documentation.






