Skip to content

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 08:30
· 83 commits to main since this release
f973dda

Highlights

  • English TTS now fetches its NLTK data automatically. On first use, Speaker.open() / PiperEngine.preflight() downloads the three NLTK resources the English phonemizer needs (averaged_perceptron_tagger, averaged_perceptron_tagger_eng, cmudict). They are stored next to the Piper voices, in $XDG_CACHE_HOME/palmimo/models/nltk_data. The archives come from a pinned upstream commit and are checked against SHA-256. This replaces the manual nltk.downloader step, and it works for apps that run under a restricted home directory. (#57)
  • Reading present positions no longer hides a dropped motor. ServoDriver.read_positions_span() returns which motors answered, which stayed silent, and which were unreached. read_positions() is unchanged. (#32)
  • Each example is now its own uv project. Every directory under examples/ has its own pyproject.toml and uv.lock, and resolves palmimo-sdk from PyPI the way a third-party app would. (#35)

Upgrade notes

  • NLTK data you already have is still used. That covers data on NLTK's own search path (NLTK_DATA, ~/nltk_data, /usr/share/nltk_data, …), zipped or unpacked. Nothing is downloaded again for it.
  • Offline machines: run the command from installation.md on a networked machine, then copy the nltk_data directory into the cache.
  • To run an example, cd into its directory and use uv run there. Each example's README has the exact commands.

Known issues

  • None new in this release.

Tested on a Raspberry Pi (aarch64, Python 3.13). A Portal-installed app synthesized English speech, and it fetched the NLTK data into its own cache with no system copy present.

What's Changed

Other changes

  • feat(io): read present positions without masking a dropped motor by @isaka1022 in #32
  • refactor: make each example a standalone uv project by @DoskoiYuta in #35
  • fix(sdk): 0.1.1 — fetch the NLTK data for English TTS automatically by @DoskoiYuta in #57

Full Changelog: v0.1.0...v0.1.1