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-Whispervia CTranslate2 orVosk). 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
clicueup-to-date withclicue 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:
- Microphone Capture: Captures 16kHz float32 audio blocks locally via
sounddevice. - 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%.
- Peak Gain Normalization: Dynamically normalizes low-volume speech, boosting recognition accuracy for quiet speakers or low-gain USB microphones.
- Local Neural STT: Speech buffers pass through local C++ inference models (
Faster-Whisperquantizedint8CPU engine orVoskKaldi engine). - Sub-Millisecond Fuzzy Alignment: Utterance text is matched against script words using
rapidfuzzwith a distance-penalized locality window (~0.06ms per match). - Memoized Line-Anchored TUI: Rendered via
richLive 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clicue-0.1.48.tar.gz.
File metadata
- Download URL: clicue-0.1.48.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07ea13d8295ebd2f0ea414b3ee792828344ffcc37cb4a77923ca47de2b45279b
|
|
| MD5 |
acecbb6c4e6846f7b170a4bd0f9af3f5
|
|
| BLAKE2b-256 |
fe35a399f7803acab726de1d5d2a165ff40d51f41b2d7194c4801b8b6440e411
|
Provenance
The following attestation bundles were made for clicue-0.1.48.tar.gz:
Publisher:
publish.yml on bizkite-co/clicue
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clicue-0.1.48.tar.gz -
Subject digest:
07ea13d8295ebd2f0ea414b3ee792828344ffcc37cb4a77923ca47de2b45279b - Sigstore transparency entry: 2333165732
- Sigstore integration time:
-
Permalink:
bizkite-co/clicue@ca86f0e599ad7635c3fcc64e6721b562acc585f9 -
Branch / Tag:
refs/tags/v0.1.48 - Owner: https://github.com/bizkite-co
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca86f0e599ad7635c3fcc64e6721b562acc585f9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file clicue-0.1.48-py3-none-any.whl.
File metadata
- Download URL: clicue-0.1.48-py3-none-any.whl
- Upload date:
- Size: 27.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
497eae8a27b1c53b611e38117899fbac374f4c06cef662a409ea8c94a127cf64
|
|
| MD5 |
802c27583008ae79bc46c662b7fe145d
|
|
| BLAKE2b-256 |
73136043379f17f8e54e2313c0b1de9cb8d3b218d20b759e569192a0b7285a36
|
Provenance
The following attestation bundles were made for clicue-0.1.48-py3-none-any.whl:
Publisher:
publish.yml on bizkite-co/clicue
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clicue-0.1.48-py3-none-any.whl -
Subject digest:
497eae8a27b1c53b611e38117899fbac374f4c06cef662a409ea8c94a127cf64 - Sigstore transparency entry: 2333165763
- Sigstore integration time:
-
Permalink:
bizkite-co/clicue@ca86f0e599ad7635c3fcc64e6721b562acc585f9 -
Branch / Tag:
refs/tags/v0.1.48 - Owner: https://github.com/bizkite-co
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca86f0e599ad7635c3fcc64e6721b562acc585f9 -
Trigger Event:
push
-
Statement type: