Skip to main content

clicue

Speech-Driven Live Teleprompter Scroller for Screenplays & Scripts

clicue is a lightweight, high-performance terminal teleprompter that list-scrolls Fountain screenplays and markdown documents live as you speak. Powered by local speech recognition engines and rapid fuzzy matching, clicue anchors your reading position with zero line reflow and ultra-low latency.


✨ Features

  • 🎙️ Speech-Driven Auto-Scrolling: Follows your voice live in real-time as you read your script.
  • 🔒 100% Private & Local: Runs entirely on your local machine CPU using local C++ engines (Faster-Whisper via CTranslate2 or Vosk). Zero audio data is sent to external servers.
  • 📜 Fountain & Markdown Parser: Native support for Fountain screenplay formatting (Scene Headings, Character Cues, Parentheticals) and Markdown (*italics*, _italics_, **bold**, `code`).
  • 📺 Zero-Reflow Line-Anchored TUI: Displays 1 line of previous context at the top and maximizes upcoming line visibility for an unobstructed reading experience.
  • ⚡ Instant TUI Hotkeys: Non-blocking keyboard controls for instant restart (r), pause (Space), seeking (Left/Right), and real-time latency debug overlay (d).
  • 🔁 Last-Script Memory: Re-open and continue your active script instantly with clicue -c.
  • 📊 Performance Telemetry: Built-in high-resolution performance logger (clicue logs) with automatic 7-day date-stamped file auto-purge.
  • 🔄 Built-in Self-Updater: Keep clicue up-to-date with clicue self-up.

🏗️ Local Audio Processing Pipeline Architecture

All audio capture and speech recognition run 100% locally on your machine.

flowchart LR
    A["🎙️ Mic Input (sounddevice 16kHz)"] --> B["⚡ 0.001ms RMS Silence Gate"]
    B -- Silence (rms < 0.003) --> C["Discard Silence (0% CPU)"]
    B -- Active Speech --> D["🎚️ Peak Gain Normalization"]
    D --> E["🧠 Local Neural STT Engine (Faster-Whisper int8 / Vosk)"]
    E --> F["🎯 Fuzzy String Aligner (rapidfuzz)"]
    F --> G["🖥️ Zero-Reflow TUI Scroller (Rich Live)"]

Pipeline Workflow:

  1. Microphone Capture: Captures 16kHz float32 audio blocks locally via sounddevice.
  2. RMS Energy Silence Gate: A 0.001ms instantaneous root-mean-square (RMS) check filters out ambient noise and room silence before invoking the neural network, keeping idle CPU usage < 0.5%.
  3. Peak Gain Normalization: Dynamically normalizes low-volume speech, boosting recognition accuracy for quiet speakers or low-gain USB microphones.
  4. Local Neural STT: Speech buffers pass through local C++ inference models (Faster-Whisper quantized int8 CPU engine or Vosk Kaldi engine).
  5. Sub-Millisecond Fuzzy Alignment: Utterance text is matched against script words using rapidfuzz with a distance-penalized locality window (~0.06ms per match).
  6. Memoized Line-Anchored TUI: Rendered via rich Live display with memoized line wrapping to prevent unnecessary Python allocations.

🚀 Installation

Install clicue globally using uv or pipx:

# Recommended (using uv):
uv tool install clicue

# Using pip:
pip install clicue

To update clicue to the latest PyPI release at any time:

clicue self-up
# or
uv tool upgrade clicue

📖 Usage & Examples

# Open a Fountain script (.fountain, .fountain.md, or .md) with default Vosk STT engine:
clicue script.fountain

# Use Faster-Whisper neural STT engine:
clicue script.fountain --whisper

# Open a Fountain markdown script:
clicue script.fountain.md

# Re-open and continue the last-used script:
clicue -c

# Continue last script with Faster-Whisper and live latency debug header:
clicue -c --whisper -d

# Inspect downloaded speech recognition models:
clicue models

# Inspect date-stamped performance log sessions:
clicue logs

🎮 Live TUI Keyboard Controls

While clicue is running, the keyboard is monitored with zero-latency non-blocking input:

Key Shortcut Action
r / 0 / Home Instant Reload: Re-opens script file from disk, resets cursor to word 0, and flushes audio buffers.
q / Esc Instant Quit: Exits clicue immediately.
Space Pause / Resume: Toggles auto-scrolling pause state.
Left / b / h Seek Backward: Moves cursor back 5 words (VIM h / b).
Right / f / l Seek Forward: Moves cursor forward 5 words (VIM l / f).
p Toggle Performance Logging: Enables/disables session logging to ~/.local/share/clicue/logs/.
d Toggle Debug Overlay: Displays live STT, Aligner, and Render latency stats in header.

🛠️ CLI Options Reference

USAGE:
  clicue <script.fountain | script.md> [options]
  clicue -c | --continue [options]
  cat script.fountain | clicue [options]

ARGUMENTS & OPTIONS:
  script                Path to script file (.fountain, .fountain.md, .md, or '-' for stdin).
  -c, --continue        Re-open and continue the last-used script file.
  --whisper             Shortcut for Faster-Whisper neural STT engine.
  --engine <name>        STT engine plugin ('vosk' or 'whisper'). Default: vosk.
  --model <name>         Model shortcut ('vosk-small', 'vosk-full', 'base.en', 'tiny.en').
  -d, --debug           Display real-time STT, Aligner, and Render latency in header.
  --perf-log            Enable date-stamped session performance logging.
  --raw                 Read text literally without parsing Fountain syntax.
  self-up / self-update Self-update clicue to latest PyPI version.
  models / purge-models List or purge downloaded STT models.
  logs                  Inspect date-stamped performance log sessions.
  -h, --help            Show help message and exit.
  -V, --version         Show clicue version details and exit.

⚙️ Configuration File

clicue can be configured via a TOML file at ~/.config/clicue/config.toml:

[audio]
engine = "vosk"
model = "vosk-small"

[scroller]
window_size = 38
past_size = 9

[aligner]
max_lookahead = 20
threshold = 70.0
locality_penalty = 1.5

[debug]
perf_log = false

📄 License

MIT License. Built for creators, public speakers, and video producers.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clicue-0.1.46.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

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

clicue-0.1.46-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file clicue-0.1.46.tar.gz.

File metadata

  • Download URL: clicue-0.1.46.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for clicue-0.1.46.tar.gz
Algorithm Hash digest
SHA256 bfd9c38f6be6cef495b5f0df1aca0e592ea31bbed6c56418e9e76b1ed5b977f4
MD5 dd3af20d144d03ee1c36cda3be3a9def
BLAKE2b-256 5b5524f73389d64367ed602158947b3757d31b301f95a5feb939b662649e7e02

See more details on using hashes here.

Provenance

The following attestation bundles were made for clicue-0.1.46.tar.gz:

Publisher: publish.yml on bizkite-co/clicue

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clicue-0.1.46-py3-none-any.whl.

File metadata

  • Download URL: clicue-0.1.46-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for clicue-0.1.46-py3-none-any.whl
Algorithm Hash digest
SHA256 d64e6f84aeffe5d82d88cc1dc249361eceea2db1d705d5f9ccc0a249edc3481f
MD5 a6cc995a5e72d42a9d19b00c10ad08bc
BLAKE2b-256 4b29441935804b74053b8ee5e89813547acf5fa5b3db4302b403d1bf048cabb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for clicue-0.1.46-py3-none-any.whl:

Publisher: publish.yml on bizkite-co/clicue

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.49

2 files

0.1.48

2 files

0.1.47

2 files

This release

0.1.46 This release

2 files

0.1.45

2 files

0.1.44

2 files

0.1.43

2 files

0.1.42

2 files

0.1.41

2 files

0.1.40

2 files

0.1.39

2 files

0.1.38

2 files

0.1.37

2 files

0.1.36

2 files

0.1.35

2 files

0.1.34

2 files

0.1.33

2 files

0.1.32

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

2 files

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page