Skip to main content

batchalign

TalkBank CHAT processing pipeline — ASR, forced alignment, morphosyntax (%mor / %gra), utterance segmentation, translation, and compare. The user-facing Python package; the runtime is a PyO3 extension backed by the Rust crates in crates/batchalign/.

User and developer docs live in book/src/batchalign/ (the mdBook is the source of truth). See book/src/batchalign/developer/building.md for the canonical build recipe.

Install

From PyPI (stable wheels):

pip install batchalign

From source: use the just recipes — they go through Bazel, so every dep (proto codegen, Rust crates, PyO3 extension, Python wheel extras) is materialized for you. Don't reach for maturin develop or uv sync directly unless you're debugging the build itself.

just batchalign build              # build every Bazel target for batchalign
just batchalign test               # run every Bazel test target
just batchalign cli --help         # run `batchalign` via the development bridge
just batchalign pytest             # pytest (with full Bazel dep graph)
just batchalign wheel              # host-platform wheel at python/target/wheels/
just batchalign sidecar            # standalone daemon binary via PyApp
just batchalign lint               # mypy (+ ruff)
just batchalign versions           # source-of-truth version readout

just --list batchalign shows the full recipe list. The just recipes call into Bazel, so tools/bazel (the bundled wrapper) takes care of:

  • regenerating the pydantic-v2 wire types from crates/batchalign/batchalign-core/src/proto/*.rs
  • rebuilding the batchalign_core PyO3 cdylib via maturin under the hood
  • staging the binary into the wheel
  • propagating dependency changes to dependent targets

If you genuinely need bazel directly (because a recipe you want isn't wrapped):

bazel build //...           # everything
bazel test //...            # everything
bazel run //book:html       # static book HTML
bazel run //apps/batchalign/batchalign-gui:openapi   # GUI OpenAPI codegen

The base wheel ships only the lightweight runtime. Heavy ML backends are gated behind extras — install only what you use:

pip install 'batchalign[whisper]'      # Whisper ASR
pip install 'batchalign[malayalam]'    # Malayalam Wav2Vec2 XLSR ASR
pip install 'batchalign[stanza]'       # morphosyntax (%mor / %gra)
pip install 'batchalign[pyannote]'     # optional local Pyannote backend API
pip install 'batchalign[revai]'        # Rev.AI cloud ASR
pip install 'batchalign[google]'       # Gemini cloud ASR + diarization
pip install 'batchalign[cantonese]'    # Cantonese pipeline (FunASR, Tencent)
pip install 'batchalign[qwen3]'        # Qwen3 ASR + forced aligner
pip install 'batchalign[nllb]'         # NLLB translation
pip install 'batchalign[api]'          # FastAPI daemon (`batchalign daemon`)
pip install 'batchalign[all]'          # everything

CLI

batchalign --help

batchalign transcribe input_dir -o output_dir --lang eng
batchalign transcribe input_dir -o output_dir --lang eng --engine whisper --diarize --diarize-engine pyannote-ai
batchalign diarize    input_dir -o output_dir --engine pyannote-ai
batchalign align     input_dir -o output_dir --engine wav2vec
batchalign morphotag input_dir -o output_dir --language en
batchalign utseg     input_dir -o output_dir
batchalign translate input_dir -o output_dir --target eng
batchalign compare   input_dir gold_dir   -o output_dir

batchalign version                    # banner, version, git SHA
batchalign cache {path,stats,clear}   # local result cache
batchalign daemon                     # FastAPI server (needs [api])

When -o is omitted, results are written back in place. The CLI accepts either a single CHAT/media file or a folder (walked recursively).

The diarization CLI defaults to pyannoteAI cloud. Select the optional local backend with --engine pyannote (or --diarize-engine pyannote on transcribe). Configure the cloud API key in the shared Batchalign config file (or set BATCHALIGN_PYANNOTE_KEY):

[diarize]
engine.pyannote.key = YOUR_API_KEY

Programmatic API

import batchalign as ba

# Build a backend chain.
pipeline = ba.recipes.morphotag(
    stanza_backend=ba.StanzaBackend(lang="en"),
)

# Or compose your own.
asr = ba.WhisperBackend(language=ba.LanguageCode.from_iso("eng"))
utseg = ba.CHATUtteranceBackend(model="talkbank/CHATUtterance-en")
pipeline = ba.recipes.transcribe(asr_backend=asr, utseg_backend=utseg)

# Run.
inputs = [ba.media_from_path("session.wav")]
outcomes = list(pipeline.run(inputs))
for outcome in outcomes:
    outcome.write("session.cha")

Repository layout

This package is one slice of the talkbank-tools monorepo:

  • python/batchalign/ — Python package (this file).
  • crates/batchalign/ — Rust crates (batchalign-core, batchalign-engine).
  • The pinned TalkBank Chatter dependency supplies CHAT parsing, models, and transforms.
  • apps/batchalign/batchalign-gui/ — Tauri desktop GUI.
  • book/ — user + developer documentation (mdBook; source of truth).

For repo conventions, build commands, and the BA3 cutover plan, see CLAUDE.md at the repo root and book/src/batchalign/developer/landing-status.md.

Metadata

Release files for batchalign 0.10.6.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for batchalign 0.10.6.post1
File Actions
batchalign-0.10.6.post1-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details for batchalign-0.10.6.post1-cp310-abi3-win_amd64.whl
batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details for batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_x86_64.whl
batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details for batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_aarch64.whl
batchalign-0.10.6.post1-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details for batchalign-0.10.6.post1-cp310-abi3-macosx_11_0_arm64.whl
batchalign-0.10.6.post1-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details for batchalign-0.10.6.post1-cp310-abi3-macosx_10_12_x86_64.whl

Total release size: 29.0 MB

Release files / batchalign-0.10.6.post1-cp310-abi3-win_amd64.whl

Download URL batchalign-0.10.6.post1-cp310-abi3-win_amd64.whl
Size 5.6 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
06320f2fbc868d43096e7e4ec9921765e883f6833c065dd1b881bde2a9691b21
BLAKE2b-256 checksum
How to use checksums
430e3aff554a8baa61322f24d2c343a41a6e30188d477570f9fe6e20864bd783
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.15

Release files / batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_x86_64.whl
Size 5.9 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
c61a20f829a030b90a525b62c1fa517582143a0a188f0f6468a15a20501499e0
BLAKE2b-256 checksum
How to use checksums
eda229b9a138e26f8bec68c9f59e4381e8646bbba6d49e0557c51f854aa0b9b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.15

Release files / batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL batchalign-0.10.6.post1-cp310-abi3-manylinux_2_28_aarch64.whl
Size 5.5 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
54da40758603b5e13f15be98dbcb51e8b0baab9fd78f8f56614c8c5f650d4199
BLAKE2b-256 checksum
How to use checksums
7669026a021d5d66a206930253829491dc8cab51d1bc184c4f352480529ec8b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.15

Release files / batchalign-0.10.6.post1-cp310-abi3-macosx_11_0_arm64.whl

Download URL batchalign-0.10.6.post1-cp310-abi3-macosx_11_0_arm64.whl
Size 5.9 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8fbf7ff72cd6a3992d75ff6e92e816c71735981ecbb99b472d410605381e6fb6
BLAKE2b-256 checksum
How to use checksums
0909c63bcc99a17b1796a304e5c9827d056bf53425afcd975ff65fd674de0a0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.15

Release files / batchalign-0.10.6.post1-cp310-abi3-macosx_10_12_x86_64.whl

Download URL batchalign-0.10.6.post1-cp310-abi3-macosx_10_12_x86_64.whl
Size 6.1 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
66497bb94bde532eec2d1af25a972b376ff4448b05d257df396b2893251cebce
BLAKE2b-256 checksum
How to use checksums
025d832837547ad5b130efccb61efd1c4631aa32e0b6ccd385f90b7a8543bb58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.15

Security for batchalign 0.10.6.post1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.10.6.post1 This release

5 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page