Automatic IPA alignment workspace with CLI, comparison tools, and web interface
Project description
AutoIPAAlign
Automatically transcribe audio into the International Phonetic Alphabet (IPA) and perform forced alignment. This toolkit includes a command line interface, comparison tools, and interactive web tool.
The Wav2IPA project is a collaboration between Virginia Partridge of the UMass Center for Data Science and Artificial Intelligence and Joe Pater of UMass Linguistics. Its goal is to make automated IPA transcription more useful to linguists (and others!). Please reach out to us if you have any questions or comments about our work or have related work to share! More details are on our project website.
If you use our software, please cite our AMP paper:
Partridge, Virginia, Joe Pater, Parth Bhangla, Ali Nirheche and Brandon Prickett. 2025/to appear. AI-assisted analysis of phonological variation in English. Special session on Deep Phonology, AMP 2025, UC Berkeley. To appear in the Proceedings of AMP 2025.
Basic Usage
This project is structured in multiple subpackages based on their different external dependencies:
- autoipaalign.core: Core library and command-line interface for IPA transcription and forced alignments. Always installed.
- autoipaalign.compare: Tools for comparing alignments across different ASR systems, such as whisper and the Montreal Forced Aligner. Install with
pip install autoipaalign[compare]. You should also install the Montreal Forced Aligner, see instructions under External Dependencies. - autoipaalign.web: Gradio web interface for interactive transcription. Install with
pip install autoipaalign[web].
Basic Installation
You can install the autoipaalign package with pip install autoipaalign.
We recommend first creating and working in a Conda Virtual Environment for better integration with Pytorch and the Montreal Forced Aligner.
Command-Line Interface
The autoipaalign command lets you transcribe audio and get TextGrid output files with or without forced alignment.
Run autoipaalign --help to see the full options.
# Transcribe a single audio file
autoipaalign transcribe --audio-paths audio.wav --output-target output/
# Transcribe multiple files to a directory
autoipaalign transcribe --audio-paths audio1.wav audio2.wav --output-target output/
# Transcribe multiple files to a zip file
autoipaalign transcribe --audio-paths audio1.wav audio2.wav --output-target output.zip --zipped
# Transcribe with phone alignment tier
autoipaalign transcribe --audio-paths audio.wav --output-target output/ --output.enable-phones
# Transcribe intervals from existing TextGrid
autoipaalign transcribe-intervals --audio-path audio.wav --textgrid-path existing.TextGrid --source-tier words --output-target output/
# Transcribe intervals with phone alignment tier
autoipaalign transcribe-intervals --audio-path audio.wav --textgrid-path existing.TextGrid --source-tier words --output-target output/ --output.enable-phones
# Use a custom model
autoipaalign transcribe --audio-paths audio.wav --output-target output/ --asr.model-name ginic/full_dataset_train_1_wav2vec2-large-xlsr-53-buckeye-ipa
Web Interface
python -m autoipaalign.web.app
Then open your browser to the URL shown in the terminal.
Advanced Usage
External Dependencies
- Montreal Forced Aligner (optional, for MFA-based comparisons) should be installed when working with the optional
comparepackage.# Install via conda conda install -c conda-forge montreal-forced-aligner
Comparison Tools
Compare alignments from different ASR systems (coming soon).
Development Environment
Installing the Development Workspace
This project is structured using uv workspaces based on this template.
-
Install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Clone the repository and install to set up development and testing dependencies:
git clone <repository-url> cd autoipaalign uv sync --all-extras
Running Tests
To run unit tests, you can run uv run pytest from the root of the repository or inside any of the package subfolders (e.g. packages/autoipaalign-core).
Linting
Linting and formatting checks should pass before any pull requests are merged to the main branch. Run these checks as follows:
# From workspace root
uv run ruff check .
uv run ruff format .
Building Docker image for the web application
To make it easier to deploy and run the web application on HuggingFace Spaces, the application can be packaged as a Docker image. We've provided a Dockerfile to build an image for the web app.
You can build an image named autoipaalign by running:
docker build -t autoipaalign .
Run a Docker container from this image on port 7860:
docker run -p 7860:7860 autoipaalign
You can then access the running web application at http://localhost:7860.
A Docker image is built and pushed to the UMass CDSAI Dockerhub at https://hub.docker.com/repository/docker/umasscds/autoipaalign/general each time a new version of the autoipaalign package is released.
Project details
Release history Release notifications | RSS feed
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 autoipaalign-1.0.1.tar.gz.
File metadata
- Download URL: autoipaalign-1.0.1.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a50fac086e0dc6b1e89f9fd549d02636e92933a0da14d2f4795e7316bcfd192d
|
|
| MD5 |
0c299e16aaae7fbc8f6cc3ac2cbb49d5
|
|
| BLAKE2b-256 |
17ee61cd33f9395c8d3d56a0be6a7409ca263a06ef4c2af2c4b4d7a2eca0311b
|
Provenance
The following attestation bundles were made for autoipaalign-1.0.1.tar.gz:
Publisher:
publish_to_pypi.yml on ginic/AutoIPAAlign
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoipaalign-1.0.1.tar.gz -
Subject digest:
a50fac086e0dc6b1e89f9fd549d02636e92933a0da14d2f4795e7316bcfd192d - Sigstore transparency entry: 803008400
- Sigstore integration time:
-
Permalink:
ginic/AutoIPAAlign@e5fe1bb0d1c03bbc128ad112c420d2c269428300 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/ginic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_to_pypi.yml@e5fe1bb0d1c03bbc128ad112c420d2c269428300 -
Trigger Event:
release
-
Statement type:
File details
Details for the file autoipaalign-1.0.1-py3-none-any.whl.
File metadata
- Download URL: autoipaalign-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e350c62e9f9b08e16e20dffde3ff42e0b98bc4a0480cedd9d57fe05f9fdd25a7
|
|
| MD5 |
0a8864f4b7a7a63f20efff8b72d483e6
|
|
| BLAKE2b-256 |
a73d2219172fb5533a862e42b595a07d38711e8423fc8755dc5f44a3845ca7e6
|
Provenance
The following attestation bundles were made for autoipaalign-1.0.1-py3-none-any.whl:
Publisher:
publish_to_pypi.yml on ginic/AutoIPAAlign
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoipaalign-1.0.1-py3-none-any.whl -
Subject digest:
e350c62e9f9b08e16e20dffde3ff42e0b98bc4a0480cedd9d57fe05f9fdd25a7 - Sigstore transparency entry: 803008474
- Sigstore integration time:
-
Permalink:
ginic/AutoIPAAlign@e5fe1bb0d1c03bbc128ad112c420d2c269428300 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/ginic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_to_pypi.yml@e5fe1bb0d1c03bbc128ad112c420d2c269428300 -
Trigger Event:
release
-
Statement type: