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.1.tar.gz (177.9 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.1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: narrate_gpt-0.2.1.tar.gz
  • Upload date:
  • Size: 177.9 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for narrate_gpt-0.2.1.tar.gz
Algorithm Hash digest
SHA256 60d4c3d7ec63eecf12d03673a22eed55a572eb4e555f796f5f467815ee46759f
MD5 fbdc6278405768638a899b4f085ac166
BLAKE2b-256 08b759a8ecfbbfe5cbc1eb0d06935f444f530e7c73a3148b41a6ebadd0f8205b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: narrate_gpt-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for narrate_gpt-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b06def0b1b188ee60bd50c12104553a324f351186505144a7ee8671c22bf43df
MD5 aacf17e3f5b43f22828d5a108d9ae86c
BLAKE2b-256 ee4b5df270572b59485f1d97c25da980087888721834b67df2bc6a28a79a184e

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