ttsready
ttsready analyzes canonical SSMD 0.9 documents and .ssmdbook bundles, reviews speech decisions, and can materialize approved changes back into SSMD. It does not ingest EPUB, PDF, Markdown, HTML, or plain-text source files directly, and it does not generate audio.
Python 3.10 or newer is required. The CI matrix targets Python 3.10 through 3.14. See the documentation for the installation guide, quickstart, and workflows.
The interchange boundary is the SSMD artifact:
source formats -> ssmdconvert -> canonical SSMD -> ttsready review/materialization
|
v
reviewed SSMD for downstream TTS
ssmdconvert owns source extraction, conversion, chapter identity, and book-bundle integrity. ttsready owns SSMD speech analysis, review, reproducibility, and reviewed SSMD changes. Downstream renderers consume the resulting SSMD document or book. There is no runtime API coupling between ttsready and a renderer.
Supported inputs
ttsready accepts:
- standalone
.ssmdand.ssmd.mddocuments; .ssmdbookdirectory bundles;.ssmdbook.zipbundles.
Inputs must contain valid SSMD 0.9. Convert EPUB, PDF, Markdown, HTML, text, or other supported sources with ssmdconvert first:
ssmdconvert book convert novel.epub -o novel.ssmdbook
ssmdconvert convert manuscript.md -o manuscript.ssmd
Install
python -m pip install ttsready
The package depends on ssmd and ssmdconvert for canonical parsing and book loading. It does not install independent EPUB or PDF readers. Optional extras provide lexical evidence and speaker suggestions:
python -m pip install 'ttsready[lexical]'
python -m pip install 'ttsready[speakers]'
Quickstart
From the repository root, run the included example through the main CLI workflows:
python -m pip install -e .
ttsready preflight examples/basic.ssmd.md
ttsready report examples/basic.ssmd.md
ttsready preview examples/basic.ssmd.md
ttsready export examples/basic.ssmd.md --format txt -o /tmp/basic.txt
The same input can be loaded with the Python API. See examples/basic_preview.py for a complete runnable example.
Review workflow
Create a report to inspect Spokenform candidates and their SSMD source spans:
ttsready report novel.ssmdbook -c 5-17
ttsready report novel.ssmdbook --format json -o novel.report.json
Reports persist analysis snapshots. context looks up an existing cached finding and does not rerun conversion or Spokenform. Use --refresh on report to request fresh analysis:
ttsready context novel.ssmdbook chg:v1:8d1b2d540c6d995a51ac
ttsready report novel.ssmdbook -c 5 --refresh
An exact reviewed pronunciation can be materialized as an SSMD sub annotation. By default, the command writes a separate .reviewed artifact. Use --write only to explicitly replace the source:
ttsready override novel.ssmdbook chg:v1:8d1b2d540c6d995a51ac \
--spoken 'habitat, commercial, industrial'
Speaker review uses logical IDs from the sidecar registry. Accepted or manual decisions can be materialized as SSMD voice annotations. Provider voice names remain a downstream rendering concern:
ttsready speakers novel.ssmdbook --config novel.ttsready.yaml --jev
ttsready speaker-set novel.ssmdbook --config novel.ttsready.yaml \
--utterance utt:v1:0123456789abcdef0123 --speaker alice
ttsready speaker-materialize novel.ssmdbook --config novel.ttsready.yaml \
--utterance utt:v1:0123456789abcdef0123
Reproducibility and output
Create and verify a strict lock for canonical content, runtime, normalization profile, and prepared output. freeze writes a separate SSMD artifact with the selected automatic transformations materialized:
ttsready lock novel.ssmdbook -o novel.ssmdbook.ttsready.lock.json
ttsready verify novel.ssmdbook --lock novel.ssmdbook.ttsready.lock.json
ttsready freeze novel.ssmdbook -o novel.frozen.ssmdbook
preview prints prepared speech. export writes plain TXT from the same structured TTS plan. TXT applies speech substitutions but cannot preserve SSMD-only structure such as logical voice annotations:
ttsready preview novel.ssmdbook -c 5
ttsready export novel.ssmdbook --format txt --layout chapters -o novel-txt/
Use ttsready --help and command-specific --help for the complete CLI options.
Python API
from ttsready import load, prepare_tts_plan, render_preview
canonical = load("novel.ssmdbook")
plan = prepare_tts_plan(canonical, language="en")
preview = render_preview(plan)
For SSMD text already held in memory, use load_ssmd():
from ttsready import load_ssmd
document = load_ssmd(ssmd_text, section_id="chapter-0001")
prepare_tts_plan() returns structured segments and a report without rendering audio. render_preview() renders that plan as plain text. The report, preview, and TXT export share the same preparation result.
Ownership boundary
ssmdconvertconverts supported source formats to canonical SSMD and owns.ssmdbookloading, validation, and writes.ttsreadyreviews canonical SSMD and writes explicit reviewed semantics such assuband logicalvoiceannotations into SSMD.- Downstream tools consume canonical or reviewed SSMD. Tools exchange content through SSMD documents, not through a
ttsreadyruntime integration API. - The existing
ssmdconvert.speechAPI remains available for compatibility. It is separate from thettsreadyreview and materialization workflow.
License
ttsready is licensed under the Apache License 2.0. See LICENSE for the full text.
Metadata
Release files for ttsready 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ttsready-0.1.0.tar.gz | 98.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ttsready-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.4 kB
Release files / ttsready-0.1.0.tar.gz
| Download URL | ttsready-0.1.0.tar.gz |
|---|---|
| Size | 98.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
47640ec74ff11fc40037ed798a9c583b448ca8a83d4fab0a3287c6db9b76eb41
|
|
BLAKE2b-256 checksum How to use checksums |
7f38ea7b01e87cb79aec31eb336b9123d7cce5117bc50d36c50953a399bc509d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / ttsready-0.1.0-py3-none-any.whl
| Download URL | ttsready-0.1.0-py3-none-any.whl |
|---|---|
| Size | 65.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
825bcee90d69806ba81e207556b458e95cba978526d4744dede65e315b646499
|
|
BLAKE2b-256 checksum How to use checksums |
f12a6506383d74b1050d621debb6a747f915b8eb79d4e54976c5c07f51826c0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|