Landmark DocsDashboard →

On stream

Text-to-speech

Landmark can read messages aloud on your stream — chat, donations, alerts, and anything an element wants to speak. You decide who gets read, on which platforms, in which voice, and whether it's free or paid — one ordered rule at a time. Free voices cost nothing; realistic AI voices are billed to you as usage.

Where it speaks

Every read flows through the same queue and plays through one audio source. The triggers are:

Chat reading
Read chat messages out loud as they come in. On by default for everyone, on every connected platform, in the free Brian voice — nothing actually speaks until a playback source is open (see Playback).
Donation & event reads
Read the message attached to a tip, bits/cheer, sub, gift, raid, or channel-point redeem — optionally only above an amount you set.
Alert announcements
Speak a fixed line when an event fires — e.g. {user} just subscribed!. These go through the TTS queue like any read, separate from your on-screen elements.
Element reads
Any custom element can call landmark.tts(text, opts?) to speak a moment worth reading aloud (a goal hit, a big tip). It enqueues a read on your account and is billed the same way — see the window.landmark API.
Tip page “read my message”
If you enable it, your tip page offers tippers a voice to have their message read in — their pick rides along with the tip and is honored for that read.

Free voices vs. AI voices

There are two voice tiers, and the difference is cost — not how you use them.

Free voices
The classics — Brian (the StreamElements-era British male) plus a dozen familiar voices (Amy, Emma, Joey, Matthew, Joanna, and more). They cost nothing to read with, no matter how much chat you read. A fresh account defaults to Brian, so reading chat is free out of the box.
AI voices
Realistic, natural-sounding voices. Every character an AI voice speaks is billed to you as Landmark Usage — there is no per-message cap, so more chat means more cost. Picking an AI voice is an explicit, billed opt-in; the settings page warns you whenever your default is an AI voice or viewers can pick one themselves.

Cost is always carried by you, the streamer — the per-character rate, markup, and provider are handled behind the scenes and never shown to viewers. Viewers only ever see free-vs-paid and the flat per-message price you set on a paid rule.

Voices & the library

Manage voices on Voices. The library merges the built-in free + AI voices with anything you add, and you can favorite, hide, rename, or tune rate/pitch/volume per voice.

Default voice
What everything reads in, unless a rule or a viewer picks something else. Set it on Text-to-speech or from the dock's TTS tab — the two stay in sync.
Sync your AI library
Pull your own catalog of realistic voices into the library in one click, then pick any of them in a rule or as your default.
Cloning
With cloning allowed, a voice can be cloned from audio (with consent) and used like any other AI voice. Turn it on under Voices → Allow voice cloning.

Per-viewer voices

Pin a fixed voice to a specific viewer so their messages always read in it. A pin always wins over your rules and your default. Set one three ways:

  • Click a chatter in the dock chat window and choose their voice.
  • Add a pin by username on the Voices page or the dock's TTS settings (optionally scoped to one platform).
  • The viewer sets their own with a chat command (see below), if you allow it.

A pin can be cross-platform (any account using that username) or scoped to one platform; a platform-specific pin wins over a cross-platform one. When you scope to YouTube, it's stored as the platform key google. AI pins are billed to you when they read.

The rules engine

Rules are an ordered list, read top to bottom — the first rule that matches a message decides what happens. The trigger cards on the settings page are the friendly face of this; the full builder lives under Advanced, where you can reorder and the UI warns you when a rule is shadowed (an earlier rule already covers it, so it never fires).

Each rule is: who + trigger (with conditions) + platformsfree or paid + voice.

Who (role)
everyone, subscribers, mods, VIPs, followers, or specific people (a list of usernames).
Trigger
a chat message, the !tts command, bits / cheers, a sub or resub, a tip, a gift, a channel-point redeem, a raid, or a specific alert.
Amount conditions
For bits, tip, and raid, match by amount — min (at or above), between (a band), or exact. Tips/bits use the money amount; a raid uses the raiding party's viewer count.
Platforms
Twitch, YouTube, Kick, Rumble, TikTok — or all (the default). Per-rule platforms are gated by the master platforms that read aloud list.
Access
Free, or pay to play with a flat price per message you set (e.g. $0.50 / message).
Voice
Free or AI, and a specific voice (or leave it on the default). Picking AI shows billed as usage.
Says (fixed text)
An optional announcement read instead of the viewer's message — useful for raids, subs, gifts, and alerts where there's no viewer text. It can carry tokens like {user}, {amount}, {months}, {tier}, and {viewers}.
Redeem reward name
For the redeem trigger, optionally match a channel-point reward by title (blank = any).
Per-rule cooldown & max length
An optional per-viewer cooldown and character cap that override the global settings for that rule.

Voice precedence: a viewer's pinned voice → the matched rule's voice → your default voice (Brian until you change it). A tip page voice pick is honored for that tip read.

Viewer voice commands

Let viewers choose the voice their own messages read in, straight from chat. Set who can under Voices → Viewers pick own voice: Off, Anyone, or Subs only. These commands work even without the chatbot.

!setvoice <name> / !myvoice <name>
Pin a voice by name for that viewer. The message itself isn't read — the command is consumed.
!setvoice off (or none / clear / reset)
Clear their pin and go back to your default.
!clearvoice
Also clears their pinned voice.

If a viewer picks a realistic AI voice, the cost of their reads is billed to you — the same warning applies as for an AI default.

Moderation

Reads run through the same pipeline whether they came from chat, a tip, or an element. There's a Test a message box on the settings page that runs the exact live pipeline so you can see what would happen.

Category filters

Toggle broad buckets on or off — each is a maintained wordlist (counts shown, words hidden behind “Show words”):

Slurs
Racial, ethnic, homophobic, transphobic, ableist. On by default.
Sexual
Nudity, sex acts, fetish terms. On by default.
Swears
Generic profanity + crude insults. Off by default.
Violence
Gore, killing, self-harm. Off by default.

Per category you can optionally set a replacement word: leave it blank to block the whole read (the default), or type a word to swap the matched term so the message still reads. Check sound-alikes (on by default) also catches disguised spellings — spacing, leetspeak, and homophone evasions.

Word swaps & filters

Add your own words or phrases, each with one of three actions:

read as…
Swap a word for anything — e.g. “banana” → “Fruit Glizzy”. Great for inside jokes.
remove word
Delete just that word from the read.
block whole read
Skip the message entirely.

Structural cleanup

Strip links
Remove URLs before reading.
De-shout CAPS
Read shouting as normal text.
Squash repeats
Collapse spammed repeated characters.
Don't read commands
Skip messages that start with !, /, or $. On by default.
Strip zalgo / glitch text
Removes the thousands of hidden combining characters in glitch text before it's read. Leave this on — a single glitch-text message can otherwise burn through your usage instantly.

Platform emotes are never read — an emote-only message reads nothing. A built-in list of common chat/alert bots (StreamElements, Nightbot, and friends) is also muted by default, on top of anyone you add to Blocked from TTS.

Playback & pacing

Reads queue up and play through one audio source. You have three places to play them:

A separate browser source
A dedicated TTS playback page added to OBS as its own browser source.
Through your alerts overlay
Turn on Play TTS through my alerts overlay and your existing alerts overlay browser source doubles as the audio player — no separate source needed.
“Play here” in the dock
Turn on Play here on the dock's TTS tab to hear reads through the Control Dock.

Chat reads only enqueue while a playback source is actually open, so chat doesn't pile into a stale backlog. Monetary events (tips, bits, subs, raids, redeems) always enqueue — they're never silently dropped.

Tune pacing under Advanced on the settings page:

Allow overlapping reads
Off (recommended) = one read at a time. On = a read can start before the last finishes.
Gap between reads (ms)
A pause inserted between consecutive reads.
Per-viewer cooldown (s)
A floor between one viewer's reads, on top of any per-rule cooldown.
Min message length
Skip chat messages shorter than this (anti-spam). Doesn't apply to monetary triggers.
Max queue length
The backlog cap. When a raid floods chat, the oldest free chat reads are dropped so the freshest chat keeps reading; paid reads are never dropped.
Max message length
The character cap per read. Long messages are trimmed before they're spoken (and billed).
Who can be read / Announce the name
A role floor for chat reads, and whether to prefix the viewer's name (just the message, viewer1: msg, or viewer1 said: msg).

You can pause the whole queue from the dock at any time — queued reads are kept and resume when you unpause. There's also an optional auto-translate that reads every message in a language you choose.

Where to configure it

Dashboard — Text-to-speech
Settings: the master toggle, trigger cards, alert reads, the default voice and viewer-voice policy, and (under Advanced) chat-reading, pacing, the full rule builder, and moderation.
Dashboard — Voices
Voices: browse and tune the library, sync or clone voices, and manage per-viewer pins.
Control Dock — TTS tab
The dock mirrors the live controls — pick the chat voice, pin a chatter's voice by clicking them, pause/resume the queue, and play audio through the dock.

Open Text-to-speech →

Last updated · June 25, 2026