Adom TTS: Text to Speech
Public Made by Adomby adom
Adom's shared voice service. Reads your AI's answers back to you while you drive, and renders perfectly-timed voiceover tracks for your demo videos, so you never record your own voice.
say --rate=-4% returns HTTP 500, reported as "service flapping"
adom-tts say --rate=-4% returns HTTP 500, and the CLI reports it as "service flapping"
A negative --rate makes every synthesis fail. The same text with no --rate
succeeds immediately, so the request is being rejected rather than the service
being unhealthy.
Reproduced on galliaApril against service-tts 0.0.1 / edge-tts 7.2.8:
T="The Adom Mesh gives your machines a way to reach each other over the network."
adom-tts say "$T" --out a.mp3 # OK
adom-tts say "$T" --voice en-US-AndrewNeural --out b.mp3 # OK
adom-tts say "$T" --rate=-4% --out c.mp3 # HTTP 500 x4, no file
adom-tts health reports {"ok":true} throughout.
The reason this is worth fixing is the error text, not the failure. The CLI prints:
adom-tts: HTTP 500 (attempt 1/4) - service flapping, retrying
...
# hint: service-tts failing - retry later. Long text is already auto-chunked;
# do NOT install a local TTS engine.
Every word of that points away from the actual cause. It names the service as
unhealthy, tells the caller to wait, and pre-emptively rules out the two things
a caller would otherwise suspect (their own text, their own setup). An AI
caller following that advice does exactly what I did: retry with backoff for an
hour, conclude the service is down, and never look at its own arguments. The
tell that finally broke it was noticing that every call which HAD worked was
one I had written without --rate.
Two asks, either of which would have saved the hour:
- Accept a negative rate, or reject it with a 400 and a message naming the
argument. edge-tts itself takes
-4%happily, so if the value needs a different spelling on the wire (-4%vs-04%), normalise it in the CLI. - Do not describe a 500 as "service flapping" unconditionally. A 500 that
repeats identically for the same arguments while
healthstays green is not a flap. Worth distinguishing "retried and it worked" from "retried four times, same result" in the hint, and saying which arguments were sent.
Context: I hit this generating the voiceover for the Adom Bridge mesh demo
(six clips, en-US-AndrewNeural). Dropping --rate produced all six on the
first attempt.