Skip to main content

Local-library audiobook playback for Huxley — pause, resume, position-persist, multi-language.

Project description

huxley-skill-audiobooks

Local-library audiobook playback for Huxley. Pause, resume, position-persist; multi-language; ffmpeg-backed.

Status: bundled with the Huxley repo as a workspace member. Installed automatically by uv sync from the repo root. The on-PyPI publication path is the same as for any third-party huxley-skill-* package — see docs/skills/installing.md.

What it does

  • search_audiobooks — "do you have anything by García Márquez" — fuzzy matches title + author against the local library scan.
  • play_audiobook — "play One Hundred Years of Solitude" — resumes from the last persisted position, narrates a chime if the persona opted in.
  • pause_audiobook — "pause the book" — saves position; the next play_audiobook resumes from there.

Streaming is via ffmpeg: the framework's turn coordinator receives an AudioStream side effect from the skill's tool result and pipes the PCM16 frames out through the WebSocket as the model talks (and after it finishes).

Configure

skills:
  audiobooks:
    library_path: "audiobooks/" # resolved against ctx.persona_data_dir
    ffmpeg: "ffmpeg" # PATH lookup; override for non-standard installs
    ffprobe: "ffprobe" # ditto; only used at library scan time
    sounds_path: "sounds" # for the start-of-playback chime
    sounds_enabled: true
    i18n: # per-language tool descriptions
      es:
        search_desc: "Busca un audiolibro en la biblioteca local..."
      en:
        search_desc: "Search the local audiobook library..."

Library directory layout:

<library_path>/
├── Gabriel García Márquez/
│   ├── Cien años de soledad.m4b
│   └── El coronel no tiene quien le escriba.m4b
└── Jorge Isaacs/
    └── María.m4b

config_schema = None — i18n maps + filesystem paths don't fit JSON Schema cleanly; v2's PWA falls back to "edit YAML directly."

Requirements

  • ffmpeg and ffprobe available on the host (brew install ffmpeg on macOS; system package manager on Linux).
  • Audiobook files in M4B (preferred — preserves chapter metadata) or MP3.

Development

uv run --package huxley-skill-audiobooks pytest server/skills/audiobooks/tests
uv run ruff check server/skills/audiobooks
uv run mypy server/skills/audiobooks/src

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

huxley_skill_audiobooks-0.1.0.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

huxley_skill_audiobooks-0.1.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file huxley_skill_audiobooks-0.1.0.tar.gz.

File metadata

File hashes

Hashes for huxley_skill_audiobooks-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7207656b7cc26497b6d5950fff5ae07ddc34d1e28f79e3b13673afaf24fa78ff
MD5 a4d448744d510c1c0ec17a61af01ba74
BLAKE2b-256 88edf500687b0b2239fcaf77c1f4bbfb7023315bbaad06823332d4bffca35237

See more details on using hashes here.

File details

Details for the file huxley_skill_audiobooks-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for huxley_skill_audiobooks-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cb3dba98fe46861c931db32f140c951cefb1f5fa3dd420bfffbbc72057ef29b4
MD5 5ecd7e4eefb55bd2bf86aaf8032da795
BLAKE2b-256 d166fa81f2528c14cb510843959d197afb616744eac841cc6af86e1a7054ceee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page