Skip to content

v1.2.0

Latest

Choose a tag to compare

@docdyhr docdyhr released this 13 Aug 07:27
· 4 commits to main since this release

Added

  • transcribe_audio accepts an optional language argument (ISO 639-1 code,
    or "auto"), passed through as --language to mw.
  • MACWHISPER_LANGUAGE_DEFAULTS env var maps directories to a default
    language (e.g. ~/Desktop/DK=da) — files in a matching directory (or its
    subdirectories) get --language automatically, most-specific match wins.
    An explicit language argument always overrides the directory default.
    Applies to both transcribe_audio and watch-folder transcriptions.
  • New engine argument on transcribe_audio ("macwhisper" default, or
    "whisper-cpp") — an independent transcription backend using a standalone
    whisper-cli binary that does not go through MacWhisper at all. New
    MACWHISPER_WHISPERCPP_BINARY / MACWHISPER_WHISPERCPP_MODEL_DIR env vars.
    v1 supports .wav/.mp3/.flac input only; see README for setup and
    limitations. list_models() now also lists whisper-cpp models when
    MACWHISPER_WHISPERCPP_MODEL_DIR is configured.

Changed

  • transcribe.py now validates the request and dispatches to a new
    engines.py module (MacWhisper and whisper-cpp backends); behavior of the
    MacWhisper path is unchanged. Test mock target for subprocess.Popen moved
    from macwhisper_mcp.transcribe to macwhisper_mcp.engines accordingly.
  • The 10 MB output cap is now a single shared MAX_OUTPUT_BYTES constant in
    config.py, imported by transcribe.py and watcher.py so the two paths
    can never enforce different limits.

Fixed

  • cancel_transcription no longer raises IndexError (surfaced to the client
    as an error) when the running transcription finishes and clears the proc
    list in the gap between cancel's non-empty check and its subscript. Cancel
    now uses a single atomic subscript and degrades to "no transcription
    running" instead.
  • __version__ is now read from the installed distribution metadata instead of
    a hardcoded literal, so it can no longer drift from pyproject.toml on
    semantic-release bumps.
  • start_watch now rejects a watch session when the "done" directory falls
    outside the configured allow-list (previously it silently wrote there). The
    done directory is overridable via the new MACWHISPER_WATCH_DONE_DIR env
    var; the default remains <incoming>/../done.