Second release candidate. It brings the fork up to date with upstream Chime TTS v1.3.1-beta1, adds the fixes below on top, and includes the two items that were held back from rc1. It's a pre-release so it can get some real-world testing before it's marked stable. In HACS, enable "Show beta versions" for this repository to see it.
Back in sync with upstream
Nimrod is actively working on Chime TTS again, and most of what this fork carried has now been merged upstream. This release takes upstream v1.3.1-beta1 as its base, so you get the new sidebar panel, Chime Sets, notification profiles from the panel, initial_delay, repeat_delay, fallback TTS caching and reporting, and the rest of the 1.3 work.
I hope to get us back to upstream for good and work out an arrangement where I can contribute directly when the owner is away for extended periods. Until then this fork stays in sync with upstream, and the fixes here are going upstream so that switching back later doesn't lose anything. Most are already open there (nimroddolev#362 through nimroddolev#370).
Fixes on top of upstream
- Panel: the panel's file endpoints now require an admin user, matching the panel itself, and the file browser is stricter about which files it will preview, rename, delete or overwrite.
- Notify profiles: saving settings no longer wipes your notify profiles when the save request leaves them out. configuration.yaml is now written atomically, so a crash or full disk can't leave it truncated. A read-only configuration.yaml gets a clear error instead of a raw errno (nimroddolev#352, nimroddolev#353).
- Event loop: FFmpeg conversions (Alexa targets, audio_conversion, speed and pitch) no longer block Home Assistant's event loop. Temp file cleanup and several panel file checks moved off the loop too (nimroddolev#318, nimroddolev#258).
- Google Cast: a Cast speaker that's already playing is stopped before the announcement volume is raised, so the current track no longer blasts at announcement volume. Players being paused for a fade are left alone so they can resume. Note that if the speaker is playing Cast group media, the whole group stops.
- Sonos: the volume change is given 200 ms to settle before playback, which fixes announcements being dropped on some models. Multiple speakers settle together, so rooms stay in step.
- Squeezebox: announcements now set their volume through
announce_volume. Players without announce support, and grouped members, still use a normal volume change. - Cache: fixed a crash when a cached file can't be decoded, and deleted cache entries no longer reappear.
- Temp folder (nimroddolev#306): on installs where
/mediaisn't a registered media folder, the default temp folder now goes under the first registered one, so audio plays without editing settings. - Google Cast lead-in: Cast targets get 2 seconds of silence at the start, so the receiver no longer clips the first word or a short chime. It's applied once, after repeat. Passing
initial_delayon a call (even 0), or setting a non-zero default, replaces it. Cover art and FFmpeg settings now apply to the final audio when repeat is used. - Clearing the www cache (nimroddolev#342):
clear_cachewithclear_www_tts_cachealso removes audio left by uncachedsay_urlcalls, as long as the www folder is the integration's ownchime_ttsfolder. Sonos www copies are no longer left behind. - External chime downloads: downloads now use Home Assistant's own HTTP session, with a 30 second total timeout, a 20 MB size limit and at most 5 redirects, so a slow or oversized URL can't tie anything up.
- FFmpeg failures: if an Alexa or cover-art conversion fails, the original audio is used instead of the call failing.
- TTS speed and pitch: a zero, negative or infinite tempo no longer hangs the conversion.
- Targets: device, area, floor and label targets now fall back to the registries on Home Assistant releases that lack the newer target helper.
Behaviour change
Upstream counts repeat as additional plays, where this fork used to count total plays. repeat: 2 now plays the audio three times. If you use repeat, lower it by one.
The fork's cast_delay field is gone. Cast targets now get the lead-in automatically, and initial_delay is the way to change or turn it off. Remove cast_delay from any automations or scripts that set it, or the action call will be rejected.
Testing
All changes are covered by the test suite on Home Assistant 2026.6 and 2025.1. I'm testing the Sonos path on my own doorbell announcements. The Cast and Squeezebox changes are covered only by tests, so reports from anyone with those speakers are very welcome.
Install (HACS custom repository)
- HACS > three dots > Custom repositories.
- Add
https://github.com/derekcentrico/chime_tts, category Integration. - Enable "Show beta versions" for Chime TTS, install, and restart Home Assistant.