MkDocs plugin for generating and serving Piper text-to-speech page audio
Project description
mkdocs-piper-tts
An MkDocs plugin that generates Piper text-to-speech audio for pages and adds
an HTML audio control through the piper_tts_button template helper.
Install
pip install mkdocs-piper-tts
For CUDA synthesis, install the CUDA extra on a compatible CUDA 12 system:
pip install 'mkdocs-piper-tts[cuda]'
The plugin invokes ffmpeg to encode MP3 files, so ffmpeg must be available
on PATH when generating audio.
Piper Version Policy
This package intentionally pins piper-tts==1.2.0. That release is MIT
licensed and is compatible with this package's MIT license. Do not upgrade
Piper without first reviewing the license of the target release and its
runtime dependencies.
Configure
Store Piper .onnx models and their JSON configuration files outside the
published documentation source, then enable the plugin in mkdocs.yml:
plugins:
- piper-tts:
model_dir: models/piper-tts
asset_dir: assets/piper-tts
audio_dir: audio
use_cuda: true
batch_size: 2
languages:
en:
model: en_US-amy-medium.onnx
label: Listen
de:
model: de_DE-thorsten-medium.onnx
label: Vorlesen
Set lang in a page's front matter. The plugin caches generated MP3 files and
sidecar metadata under <docs_dir>/<asset_dir>/<audio_dir>. Cached files are
reused when both page source and plugin code are unchanged.
Set generate_audio: false, or PIPER_TTS_GENERATE_AUDIO=false, for
cache-only builds. In this mode, missing or stale audio fails the build instead
of initializing Piper; use it in CI after restoring a verified audio cache
artifact.
Render the control in an MkDocs template with:
{{ piper_tts_button(page) }}
Example And Tests
examples/simple-site is a complete, minimal MkDocs
project. It is in the source repository, not the published wheel. Put a Piper
model and matching .onnx.json file in examples/simple-site/models, then run:
cd examples/simple-site
mkdocs build --strict
The example uses CPU synthesis by default. Set use_cuda: true in its
mkdocs.yml after installing the CUDA extra on a system with a compatible GPU.
The repository's end-to-end tests build the example once with CPU and once with
CUDA. They download a cached test voice unless PIPER_TTS_TEST_MODEL_DIR names
a directory containing a model and matching configuration:
pip install -e '.[test]'
pytest -m 'not cuda'
PIPER_TTS_TEST_MODEL_DIR=/path/to/models pytest -m cuda
The CUDA test skips when ONNX Runtime cannot create a CUDA execution provider.
ffmpeg must be available on PATH for either test.
Published Example
Every release rebuilds the CPU example from an empty generated-output directory, runs its CPU end-to-end test, and deploys the result to GitHub Pages. The deployed site includes an E2E Build Status page with the release tag and build timestamp. The workflow deliberately does not cache models, generated audio, or site output.
Releases
Tags named v* build and publish a wheel and source distribution with PyPI
trusted publishing. For each release, update the version in pyproject.toml,
commit it, and push a matching tag such as v0.2.0. PyPI versions are
immutable, so never reuse a published version or tag.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mkdocs_piper_tts-0.2.0.tar.gz.
File metadata
- Download URL: mkdocs_piper_tts-0.2.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
884b5b54837d336d922fda49ca0f1591df105ad40dc61bb48ffd3f3daca960bc
|
|
| MD5 |
488c59bb5bef995ca96852dfb7510479
|
|
| BLAKE2b-256 |
4d71600f6b36e9c8e00230f76112b16dd1457fd5ab4e532ce59d9d69320e459d
|
Provenance
The following attestation bundles were made for mkdocs_piper_tts-0.2.0.tar.gz:
Publisher:
publish-pypi.yml on risajef/mkdocs-piper-tts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mkdocs_piper_tts-0.2.0.tar.gz -
Subject digest:
884b5b54837d336d922fda49ca0f1591df105ad40dc61bb48ffd3f3daca960bc - Sigstore transparency entry: 2180436713
- Sigstore integration time:
-
Permalink:
risajef/mkdocs-piper-tts@52a1bfcd0dffbd5ba9f8bed5a4fac089b992eb18 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/risajef
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@52a1bfcd0dffbd5ba9f8bed5a4fac089b992eb18 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mkdocs_piper_tts-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mkdocs_piper_tts-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee30ed5fafaf74d22b0377f0af024a8d7257d4dbaa7a611c0f31016e732cb4f0
|
|
| MD5 |
2cdddafdd7776aace15d97f6b3b5d86a
|
|
| BLAKE2b-256 |
6390c1b7a275aa0ad73a327d4853a2168191dd61e707b1d69735666b4645e462
|
Provenance
The following attestation bundles were made for mkdocs_piper_tts-0.2.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on risajef/mkdocs-piper-tts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mkdocs_piper_tts-0.2.0-py3-none-any.whl -
Subject digest:
ee30ed5fafaf74d22b0377f0af024a8d7257d4dbaa7a611c0f31016e732cb4f0 - Sigstore transparency entry: 2180436774
- Sigstore integration time:
-
Permalink:
risajef/mkdocs-piper-tts@52a1bfcd0dffbd5ba9f8bed5a4fac089b992eb18 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/risajef
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@52a1bfcd0dffbd5ba9f8bed5a4fac089b992eb18 -
Trigger Event:
push
-
Statement type: