Skip to main content

narrate-gpt

A simple TTS CLI tool for narrating text snippets in natural-sounding language.

Usage

# Read from clipboard
narrate-gpt -c

# Provide text directly
narrate-gpt "Hello world"

# Disable automatic cleanup or transcript formatting
narrate-gpt -c --no-clean
narrate-gpt -c --no-format

# Choose an LLM formatter model
narrate-gpt -c --llm-model openai/gpt-5.1

Environment Variables

By default, narrate-gpt uses Inworld for TTS and OpenAI for LLM text formatting, so both keys are required:

export OPENAI_API_KEY="your-openai-api-key"
export INWORLD_API_KEY="your-inworld-api-key"

I very strongly recommend Inworld TTS, as it is very cheap and competitive with SOTA voice realism at the time of writing (Feb 2026). If you only want to use OpenAI for TTS (via the --tts-provider openai flag), you can skip the Inworld key and just set:

export OPENAI_API_KEY="your-openai-api-key"

Install

pip install "narrate-gpt @ git+ssh://git@github.com/fkodom/narrate-gpt.git"

# Install all dev dependencies (tests etc.)
pip install "narrate-gpt[test] @ git+ssh://git@github.com/fkodom/narrate-gpt.git"

# Setup pre-commit hooks
pre-commit install

Tooling

Tool Description Runs on
black Code formatter - git commit (through pre-commit)
- git push
- pull requests
ruff Code linter - git commit (through pre-commit)
- git push
- pull requests
pytest Unit testing framework - git push
- pull requests
mypy Static type checker - git push
- pull requests
pre-commit Pre-commit hooks - git commit
twine $\dagger$ PyPI package uploader - New release (git tag)

$\dagger$ Requires enabling the publish.yaml workflow. To activate, move the file from .github/disabled-workflows/publish.yaml.disabled to .github/workflows/publish.yaml, and set a valid PyPI token as PYPI_API_TOKEN in the repo secrets.

Then tag a new release of this repo, and GHA will automatically build and publish a Python wheel (.whl) to PyPI.

Metadata

Release files for narrate-gpt 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for narrate-gpt 0.2.1
File Size Uploaded Provenance Actions
narrate_gpt-0.2.1.tar.gz 177.9 kB Without provenance Details for narrate_gpt-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for narrate-gpt 0.2.1
File Interpreter ABI Platform Actions
narrate_gpt-0.2.1-py3-none-any.whl Python 3 none any Details for narrate_gpt-0.2.1-py3-none-any.whl

Total release size: 192.0 kB

Release files / narrate_gpt-0.2.1.tar.gz

Download URL narrate_gpt-0.2.1.tar.gz
Size 177.9 kB
Tags Source
SHA-256 checksum
How to use checksums
60d4c3d7ec63eecf12d03673a22eed55a572eb4e555f796f5f467815ee46759f
BLAKE2b-256 checksum
How to use checksums
08b759a8ecfbbfe5cbc1eb0d06935f444f530e7c73a3148b41a6ebadd0f8205b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / narrate_gpt-0.2.1-py3-none-any.whl

Download URL narrate_gpt-0.2.1-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b06def0b1b188ee60bd50c12104553a324f351186505144a7ee8671c22bf43df
BLAKE2b-256 checksum
How to use checksums
ee4b5df270572b59485f1d97c25da980087888721834b67df2bc6a28a79a184e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for narrate-gpt 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page