This document collects contributor and maintainer workflows for
echoalign-asr-mlx. The user-facing README stays focused on installing and
running easr.
- package name:
echoalign-asr-mlx - public CLI command:
easr - source package:
src/asr - test suite:
tests - Python target:
>=3.14,<3.15 - environment manager:
uv - CI workflow:
.github/workflows/ci.yml - PyPI publish workflow:
.github/workflows/publish-pypi.yml
Use easr in user-facing documentation. Some older planning notes may mention
asr, but the current public entry point is easr.
Install system media dependencies:
brew install ffmpegCreate/update the project environment with the MLX runtime extra:
uv sync --extra mlxVerify the CLI:
uv run --python 3.14 --extra mlx easr --help
uv run --python 3.14 --extra mlx easr --versionRun the full unit test suite:
PYTHONPATH=src uv run --python 3.14 python -m unittest discover -s tests -p 'test_*.py'Run a focused test module:
PYTHONPATH=src uv run --python 3.14 python -m unittest tests.test_authorityDry-check CLI parsing/help without the MLX extra:
uv run --python 3.14 easr --helpRun a local transcription smoke test against your own media:
uv run --python 3.14 --extra mlx easr /path/to/demo.mp4 --verbose --output-dir tmp/easr-smokeBuild source and wheel artifacts:
uv buildThe package version is derived from Git tags through hatch-vcs. A clean
release build from tag v0.2.1 produces 0.2.1 distributions.
Install a local wheel in a target environment:
python3.14 -m pip install dist/echoalign_asr_mlx-<version>-py3-none-any.whlFor full transcription runtime from a source checkout, install with the MLX extra:
python3.14 -m pip install ".[mlx]"After publishing to an index such as PyPI, end users can install with:
python3.14 -m pip install "echoalign-asr-mlx[mlx]"This repository includes a publish workflow at:
.github/workflows/publish-pypi.yml
Release flow:
- Configure a Trusted Publisher in PyPI for this project:
- project:
echoalign-asr-mlx - owner/repo: the GitHub repository
- workflow:
publish-pypi.yml - environment:
pypi
- project:
- Merge release-ready code to
main. - Create and publish a GitHub Release tagged
vX.Y.Z, for examplev0.2.1. - GitHub Actions runs tests, builds distributions with the tag-derived version, checks them with Twine, and publishes to PyPI.
The workflow also supports manual workflow_dispatch, but manual publishing
must run from a release tag such as v0.2.1.
- The provider boundary is intentionally hidden from the public CLI.
- Keep output layout stable across provider changes.
- Keep JSON exports rich enough to preserve fine-grained token alignment.
- Do not expose ASR and aligner model selection as separate public options unless the CLI contract is intentionally redesigned.
--verbosewrites metrics JSON and is the primary local optimization aid.