Skip to main content

narrate-gpt

Project description

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.

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

narrate_gpt-0.2.0.tar.gz (175.4 kB view details)

Uploaded Source

Built Distribution

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

narrate_gpt-0.2.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file narrate_gpt-0.2.0.tar.gz.

File metadata

  • Download URL: narrate_gpt-0.2.0.tar.gz
  • Upload date:
  • Size: 175.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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}

File hashes

Hashes for narrate_gpt-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e3c8d53fad816193f23a2f07289e191d7504e851c87a863c31c6b39e2c41e4a0
MD5 7df73570a64465f53f1e4e7a1f03a1f9
BLAKE2b-256 9eef882623429257fdb7ffe84cff137526a8288872401101078907b4b41cbb90

See more details on using hashes here.

File details

Details for the file narrate_gpt-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: narrate_gpt-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","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}

File hashes

Hashes for narrate_gpt-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a1a0d493fe9aff251602abc91db40048d62ffccc86e56db601787c0f3415da3
MD5 45557f0664215524583d75f9e7382da7
BLAKE2b-256 036c27b7d67c84908e24c6b7090bb9ad5f3814e664683ea39bfdc27a7c9890b5

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