TTS für Sub/Bits-Donations¶
Bei Subs und Bits liest Speaker.bot die Message automatisch vor. Klassisches "ehrenvolles Donation-Acknowledgement".
Voraussetzung: Speaker.bot verbunden (siehe setup.md) Patterns: Twitch-Event-Trigger + Speak Sub-Action Sub-Actions: 1-3
Sub-Message vorlesen¶
Twitch Subscription mit Resub-Message → TTS liest die Message vor.
Action: [Event] Sub TTS¶
Trigger: Twitch → Subscriptions → Subscription ODER Twitch → Subscriptions → Resubscription
[Event] Sub TTS
├── 1. If/Else: %message% Is Null or Empty
│ └── Break (kein Text → nichts vorlesen)
└── 2. Speak:
Voice Alias: Default
Message: "Sub-Message von %user%: %message%"
Pass Through Bad Word Filter: ❌
Resub-Messages haben oft Text — eine schöne Bestätigung wenn Bot das vorliest.
Bits-Message vorlesen (ab Threshold)¶
Action: [Event] Bits TTS¶
Trigger: Twitch → Chat → Cheer mit Min 100
(Nur bei mind. 100 Bits, sonst spammt's bei kleinen Cheers.)
[Event] Bits TTS
├── 1. If/Else: %message% Is Null or Empty
│ └── Break
├── 2. If/Else: %isAnonymous% Equals true
│ ├── Set Argument: speaker = "Anonymous"
│ └── (kein Break — weiter zur Speak)
├── 3. Set Argument: speaker = "%user%" (only runs if not anonymous — siehe Pattern set-argument-fallback)
└── 4. Speak:
Voice Alias: Default
Message: "%bits% Bits von %speaker%: %message%"
Gift-Sub-Notification per TTS¶
Action: [Event] Gift Sub TTS¶
Trigger: Twitch → Subscriptions → Gift Subscription
[Event] Gift Sub TTS
├── 1. If/Else: %fromGiftBomb% Equals true
│ └── Break (Bomb wird separat behandelt, nicht jeden Sub einzeln)
├── 2. If/Else: %anonymous% Equals true
│ ├── Speak: "Anonymous gifted a sub to %recipientUser%"
│ └── Break
└── 3. Speak: "%user% gifted a sub to %recipientUser%"
Variante: Voice je nach Sub-Tier¶
[Event] Sub TTS
├── 1. Set Argument: voiceAlias = "Default"
├── 2. If/Else: %tier% Equals (Ignore Case) "tier 3"
│ └── Set Argument: voiceAlias = "Special" (z.B. eine ElevenLabs-Premium-Voice)
├── 3. Speak:
│ Voice Alias: %voiceAlias%
│ Message: "%user% (%tier%) sagt: %message%"
T3-Subs bekommen die schicke Voice, T1 die Standard.
Variante: Chat-Command für Mods¶
Mod kann beliebigen Text vorlesen lassen — gut für Custom-Donation-Reads:
Action: [Cmd] !tts¶
[Cmd] !tts
├── 1. If/Else: %rawInput% Is Null or Empty
│ ├── Send Message: "@%user% nutze !tts <text>"
│ └── Break
└── 2. Speak:
Voice Alias: Default
Message: %rawInput%
Pass Through Bad Word Filter: ❌
Command-Settings:
| Feld | Wert |
|------|------|
| Grant Type | Allow |
| Groups | Moderators |
| Global Cooldown | 5 |
| User Cooldown | 15 |
Variante: Channel-Point-Reward für TTS¶
Reward "Lass den Bot deinen Text vorlesen" für 500 Channel-Points:
[Reward] TTS-Reward
├── 1. If/Else: %rawInput% Is Null or Empty
│ ├── Update Redemption Status: Cancel
│ ├── Send Message: "@%user% — Reward braucht Text. Refund."
│ └── Break
├── 2. Speak:
│ Voice Alias: Default
│ Message: "%user% sagt: %rawInput%"
│ Pass Through Bad Word Filter: ❌
├── 3. Send Message: "🔊 @%user% hat TTS getriggert"
└── 4. Update Redemption Status: Fulfilled
Reward in SB anlegen mit User Input Required = true.
Anti-Spam-Filter¶
Damit nicht alle 2 Sekunden TTS läuft (Stream-Hölle):
- Cooldown im Reward/Command — 30+ Sekunden Pro-User
- Length-Limit in der Message: nur erste 200 Zeichen vorlesen via
$substr(%message%, 0, 200)$ - Blacklist von Wörtern — bessergesagt Speaker.bot's Bad-Word-Filter aktivieren
- TTS-Disable per !shutup Command:
Eine Sekunde alles TTS abbrechen.
Häufige Fallen¶
- TTS-Queue voll — wenn 10 Cheers in 5s, hängt TTS minutenlang fest.
Clear PendingSub-Action als Backup - Bad Words werden gefiltert — wenn dein Stream OK ist mit Profanität, Toggle "Pass Through Bad Word Filter" aktivieren (Verantwortung deine)
- Audio-Routing fehlt — Wenn TTS nur auf deinen Speakern und nicht im Stream-Audio: Speaker.bot Audio-Output auf Virtual Audio Cable, OBS holt sich's da
- Bot hängt im TTS — ein Sub-Restart (oder
Stop Speaking) hilft
Quellen¶
- Speak Sub-Action: https://docs.streamer.bot/api/sub-actions/speakerbot/speak
- Speaker.bot Setup: setup.md