Skip to main content

CLI for speeding up long-form talks by removing silence

Project description

Talks Reducer

Talks Reducer shortens long-form presentations by removing silent gaps and optionally re-encoding them to smaller files. The project was renamed from jumpcutter to emphasize its focus on conference talks and screencasts.

Example

  • 1h 37m, 571 MB — Original OBS video recording
  • 1h 19m, 751 MB — Talks Reducer
  • 1h 19m, 171 MB — Talks Reducer --small

Changelog

See CHANGELOG.md.

Install GUI (Windows, macOS)

Go to the releases page and download the appropriate artifact:

  • Windowstalks-reducer-gui.exe
  • macOStalks-reducer-gui-macos-universal (requires macOS 10.13 High Sierra or newer). The bundle is built as a universal (x86_64 + arm64) app so it runs natively on Apple Silicon without Rosetta.

Install CLI (Linux, Windows, macOS)

pip install talks-reducer

Note: FFmpeg is now bundled automatically with the package, so you don't need to install it separately. However, if you have FFmpeg already installed on your system, it will be used instead of the bundled version.

The --small preset applies a 720p video scale and 128 kbps audio bitrate, making it useful for sharing talks over constrained connections. Without --small, the script aims to preserve original quality while removing silence.

Tip: The talks-reducer and talks-reducer-gui commands now behave the same way: launching them without arguments opens the Tkinter interface, while passing regular CLI options (for example, talks-reducer --small input.mp4) executes the command-line pipeline. You can keep a single shortcut for both workflows.

When CUDA-capable hardware is available the pipeline leans on GPU encoders to keep export times low, but it still runs great on CPUs.

macOS codesigning and notarization

Maintainers with Apple Developer credentials can optionally sign and notarize the GUI release to avoid Gatekeeper warnings on download:

  1. Export or create a keychain profile for notarytool (see man notarytool) and note the profile name.
  2. Set the following environment variables before running scripts/build-gui.sh:
    • MACOS_CODESIGN_IDENTITY — the signing identity, for example Developer ID Application: Example Corp (TEAMID).
    • MACOS_CODESIGN_ENTITLEMENTS (optional) — path to an entitlements plist used during codesigning.
    • MACOS_NOTARIZE_PROFILE (optional) — the keychain profile name to submit the archive for notarization. When present, the script zips the .app, submits it with notarytool --wait, and staples the returned ticket.

The codesigning step executes only when the variables are provided, so the build continues to work unchanged for local development.

Graphical Interface

  • Simple mode — the default experience shrinks the window to a large drop zone, hides the manual run controls and log, and automatically processes new files as soon as you drop them. Uncheck the box to return to the full layout with file pickers, the Run button, and detailed logging.
  • Input drop zone — drag files or folders from your desktop, click to open the system file picker, or add them via the Explorer/Finder dialog; duplicates are ignored.
  • Small video — toggles the --small preset used by the CLI.
  • Open after convert — controls whether the exported file is revealed in your system file manager as soon as each job finishes.
  • Advanced — reveals optional controls for the output path, temp folder, timing/audio knobs mirrored from the command line, and an appearance picker that can force dark or light mode or follow your operating system.

Progress updates stream into the 10-line log panel while the processing runs in a background thread. Once every queued job succeeds an Open last output button appears so you can jump straight to the exported file in your system file manager.

The GUI stores your last-used Simple mode, Small video, Open after convert, and theme preferences in a cross-platform configuration file so they persist across launches.

Repository Structure

  • talks_reducer/ — Python package that exposes the CLI and reusable pipeline:
    • cli.py parses arguments and dispatches to the pipeline.
    • pipeline.py orchestrates FFmpeg, audio processing, and temporary assets.
    • audio.py handles audio validation, volume analysis, and phase vocoder processing.
    • chunks.py builds timing metadata and FFmpeg expressions for frame selection.
    • ffmpeg.py discovers the FFmpeg binary, checks CUDA availability, and assembles command strings.
  • requirements.txt — Python dependencies for local development.
  • default.nix — reproducible environment definition for Nix users.
  • CONTRIBUTION.md — development workflow, formatting expectations, and release checklist.
  • AGENTS.md — maintainer tips and coding conventions for this repository.

Highlights

  • Builds on gegell's classic jumpcutter workflow with more efficient frame and audio processing
  • Generates FFmpeg filter graphs instead of writing temporary frames to disk
  • Streams audio transformations in memory to avoid slow intermediate files
  • Accepts multiple inputs or directories of recordings in a single run
  • Provides progress feedback via tqdm
  • Automatically detects NVENC availability, so you no longer need to pass --cuda

Processing Pipeline

  1. Validate that each input file contains an audio stream using ffprobe.
  2. Extract audio and calculate loudness to identify silent regions.
  3. Stretch the non-silent segments with audiotsm to maintain speech clarity.
  4. Stitch the processed audio and video together with FFmpeg, using NVENC if the GPU encoders are detected.

Recent Updates

  • October 2025 — Project renamed to Talks Reducer across documentation and scripts.
  • October 2025 — Added --small preset with 720p/128 kbps defaults for bandwidth-friendly exports.
  • October 2025 — Removed the --cuda flag; CUDA/NVENC support is now auto-detected.

Changelog

Major and minor releases are tracked in CHANGELOG.md. The log is generated from Conventional Commits that start with either feat: or fix:. Only tags in the form v<major>.<minor>.0 are included so patch releases (for example, v1.1.1) are omitted. Regenerate the file whenever you cut a release:

python scripts/generate_changelog.py

CI will fail if the generated changelog does not match the committed version, so run the script before opening a pull request that updates release tags.

Contributing

See CONTRIBUTION.md for development setup details and guidance on sharing improvements.

License

Talks Reducer is released under the MIT License. See LICENSE for the full text.

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

talks_reducer-0.3.2.tar.gz (34.4 kB view details)

Uploaded Source

Built Distribution

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

talks_reducer-0.3.2-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file talks_reducer-0.3.2.tar.gz.

File metadata

  • Download URL: talks_reducer-0.3.2.tar.gz
  • Upload date:
  • Size: 34.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for talks_reducer-0.3.2.tar.gz
Algorithm Hash digest
SHA256 8b7b72f5a2dc02efe8671b859b528d658688f46be129b10a2acf0fbd51b3e49a
MD5 5f607099b046c93a5e265a423cf70d80
BLAKE2b-256 2dfb7d6779fba8f7171510fe8ea1a08bdfad13a6fed018c31ff65bfda89f0b42

See more details on using hashes here.

File details

Details for the file talks_reducer-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: talks_reducer-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for talks_reducer-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ab48f7f39956444ee53a27f30e8cca1cdb4d71d75caa108f95eec8ac7adb4f58
MD5 0bcecf1e58dfa9cb58c23a3377ba5c8e
BLAKE2b-256 7d47a0702b62f8c5c366a5bd7178cfc4d4f2b758420501facce262b91e698417

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