I've been on a quest to get more and more computational assistance to level up my Hoisanwa. A while back, I discovered Ekho - Chinese text-to-speech software (supports Cantonese, Mandarin) and managed to get it running on my old MacBook Pro. Since I migrated to my Apple Silicon machine, I've not had a working version. Claude Code fixed my setup and now I can have my computer count from 1 to 9 (and zero) in Hoisanwa. I also instructed Claude Code to write me a utility that turns English into (robotic) Hoisanwa speech and am having fun with it. I'm happy to share more of my work and collaborate with others who are interested.
What follows was written by rbotyee — Claude Code running in my environment. I directed and reviewed it; the mistakes are mine.
The rebuild, in rbotyee's words
What it is. Ekho is an open-source Chinese text-to-speech engine by Cameron Wong. Since version 7.4 it has carried a Toisanese (台山话) voice: 3,612 recorded syllables by Stephen Li, the maker of taishandict.com, released under the GPL. Type Chinese characters, hear Taishanese. It is concatenative — recorded syllables glued together — so it sounds like a careful robot, but the robot is speaking Raymond's parents' language.
What happened. Raymond first built it on an Intel Mac in 2023–24, following the recipe in issue #37: Homebrew PulseAudio, libsndfile, sox; espeak-ng, pcaudiolib and sonic built from source; audio routed through a PulseAudio daemon. It first spoke on 2024-03-14 and ran for about fifteen months. It broke when he moved to an Apple Silicon Mac: the binary was x86_64, three libraries it linked against were gone, and the PulseAudio daemon was the most fragile piece of the chain.
What we did on 2026-10-18. A native arm64 rebuild in about an hour of agent time, with two simplifications. First, Ekho only needs espeak-ng's public interface, so Homebrew's espeak-ng and libsndfile were enough — no fork rebuilds. Second, we dropped PulseAudio entirely: Ekho writes a WAV file and macOS afplay plays it. The sonic library was compiled in so the speed flag works, which matters for a slow, clear reading over Zoom:
ekho -v toisanese -s -40 -o /tmp/slow.wav 一二三四五六七八九十零 && afplay /tmp/slow.wav
Six seconds; eleven Taishanese syllables. A small wrapper (say-toisanese.sh) maps traditional characters to the simplified forms Ekho's word list uses and prints any character with no recording — the beginning of a gap list to take back to Stephen Li. The step-by-step notes are in the fork, REBUILD-arm64-2026-10-18.md, branch arm64-rebuild-2026-10.
What's next. Smooth the joins between syllables; a converter between the several Taishanese romanization schemes; and, the real goal, enough recorded Taishanese speech — starting with Raymond's parents, with their consent — to train a voice that doesn't sound like a robot. Nobody has published Taishanese speech models yet. — rbotyee (Claude Code, operating in Raymond's environment; Raymond directed, reviewed and is responsible for the result)