An accessible clock that announces the time on demand or automatically at regular intervals. Designed to be built from off-the-shelf components and localized to any language that has a Piper TTS voice model.
Please see the End User Manual for operation instructions.
The clock is built around a Raspberry Pi Pico running CircuitPython. Three buttons provide the entire user interface: one to announce the time, and two for navigating settings. All audio is pre-generated and stored on an SD card, making the clock fully offline with no network dependency.
The project has three main components:
| Component | Location | Description |
|---|---|---|
| Firmware | ./clock_code/ |
CircuitPython code that runs on the Pico |
| Audio tooling | ./talking-clock-audio/ |
Python CLI for generating and deploying voice packages |
| Hardware | ./circuit/ and ./enclosure/ |
Bill of materials, wiring, and laser-cut enclosure design |
This is the shortest path from parts to a working clock. Each step links to the relevant README for full details.
Build the circuit from the bill of materials and wiring diagram in the electronics README. The enclosure design is in the enclosure README and is optional -- the clock works without one.
Follow the clock firmware README to install CircuitPython 10.x on the Pico, copy the firmware files, and prepare the SD card with the bundled audio assets.
Voice packages are included in the repository. Connect the SD card to your computer and run:
cd talking-clock-audio
python -m venv venv
source venv/bin/activate
pip install -e .
tca deploySelect the SD card volume and choose the packages to copy. The default firmware configuration expects a voice package named en_US_lessac_medium. See the talking-clock-audio README for the full workflow including generating packages for other languages.
Insert the SD card and power on the clock. The firmware will create a default config.json on the SD card automatically. Press ANNOUNCE to hear the time. Hold PLUS or MINUS for 1.5 seconds to open the settings menu and set the correct time.
The clock supports any language that has a Piper TTS voice model on Hugging Face. Adding a new language requires creating a YAML phrase configuration file and generating a voice package with the tca tool. See the talking-clock-audio README for the full workflow, including an LLM-assisted tool for building YAML configurations for languages you are not fluent in.
talking-clock/
clock_code/ # CircuitPython firmware and SD card audio assets
talking-clock-audio/ # tca CLI for generating and deploying voice packages
electronics/ # Bill of materials, wiring, and schematics
enclosure/ # Laser-cut enclosure OpenSCAD design and assets
GPL-3.0-or-later
Contributions are welcome, especially new language configurations, voice model recommendations, hardware improvements, and enclosure designs. Open an issue or pull request on GitHub.