TTS: Polly go-live (operators)
Amazon Polly ships dormant. The adapter is registered on every boot but stays configured off until its AWS credentials are set, so a box with no keys behaves exactly as it did before Polly existed. Bringing it live is three moves: wire the keys, confirm the AWS account is opted out of AI training, then curate authentic Brian into the platform catalog from the admin panel.
1. Wire the AWS keys to the box
Section titled “1. Wire the AWS keys to the box”Polly authenticates with AWS SigV4 (an access key, a secret, and a region), not a bearer token. Set all three on the service environment:
TTS_POLLY_ACCESS_KEY=AKIA... # the IAM access key idTTS_POLLY_SECRET_KEY=... # the IAM secret access keyTTS_POLLY_REGION=eu-central-1 # FrankfurtUse an IAM principal scoped to polly:SynthesizeSpeech only. The region is
eu-central-1. Once all three are present, the provider reports configured and
the admin Providers panel shows Polly keyed.
2. Confirm the AWS Organizations AI opt-out
Section titled “2. Confirm the AWS Organizations AI opt-out”Amazon may otherwise use Polly request content to improve its services. An AWS Organizations opt-out policy blocks that org wide.
3. Whitelist authentic Brian, chain, and default
Section titled “3. Whitelist authentic Brian, chain, and default”Everything below happens in the TTS admin panel. No auto-seed keys Polly for you: the operator curates each voice by hand, which is the whole point of the curated catalog.
-
Open the voice catalog card and run discovery for Polly. The discovery pool lists Polly’s stock voices, each tagged with whether it is already whitelisted. Brian (en-GB) is the authentic AWS Brian.
-
Whitelist Brian with the public name
Brian. He appears in the streamer catalog immediately, provider hidden: nothing viewer facing renders the word “polly”. -
Set his backing chain to Polly, then tts.monster. The ordered chain is the authentic AWS Brian first, with the tts.monster “Brian Robot” (
0993f688-6719-4cf6-9769-fee7b77b1df5) behind him. The canonical voice id stayspolly:Brianregardless of which backing actually speaks. -
Point the platform default at
polly:Brian. Every channel that has not chosen its own default now speaks as authentic Brian. A streamer’s own voice setting is untouched.
How the fallback behaves
Section titled “How the fallback behaves”The backing chain is a graceful degrade, not a silent swap.
- Polly healthy: authentic AWS Brian speaks.
- Polly down or over its cap: the utterance falls through to the tts.monster Brian Robot and still speaks. A covered failure is not a refund, because the viewer got their audio.
- Both backings down: the utterance is refused as
voice_unavailableon the refund and explain road. The viewer is told to try another voice, a redemption’s points go back, and a points charge is refunded. Pyre never substitutes a different voice behind the viewer’s back.
What this does not do
Section titled “What this does not do”- It does not re-point any streamer who has explicitly chosen a voice. The platform default is rung two of the resolver, below a channel’s own setting.
- It does not enable other Polly voices. Only Brian is whitelisted here; the rest of the discovery pool stays uncurated until an operator adds them.
- It does not change billing wiring. Polly meters by character alongside the existing per provider caps in the Usage and caps card.