Local classroom audio transcription with projects, WER evaluation, and pluggable transcript formats
Project description
Transcribe Studio
A local, browser-based tool for classroom audio transcription. Organize work by project, split audio into timed chunks, label speakers in free text, and evaluate human transcripts against LLM output (WER + semantic WER).
Built for researchers and annotators who need millisecond timestamps and exportable data — without Label Studio complexity.
Features
- Projects — group recordings by class, session, or study
- Waveform editor — divide audio into chunks (by duration or count), overlap speakers at the same timestamp
- Chunk playback — play one chunk at a time with speed up/down (0.25×–2×, keys
,/.) - Exports — TXT, Markdown, JSON, CSV, SRT, WebVTT
- LLM evaluation — paste or upload hypothesis transcripts; strict + semantic WER
- Pluggable formats — timestamp/speaker lines, JSON segments, plain text (TOML-driven)
Quick start
With uv (recommended)
git clone https://github.com/Mishkat-Quantum-Labs/transcribe-studio.git
cd transcribe-studio
uv venv
uv pip install -e ".[dev]"
uv run transcribe-studio
With pip
pip install transcribe-studio
transcribe-studio
Options:
transcribe-studio start --port 8083
transcribe-studio --port 8083 # same as start
transcribe-studio stop # free the port if still running
transcribe-studio status
transcribe-studio start --force # stop old instance, then start
Windows: command not found?
On some Windows setups (especially Microsoft Store Python), transcribe-studio is installed but not on your PATH. Use any of these instead:
python -m app
python -m app --port 8083
Or install with pipx (adds the command to PATH automatically):
pip install pipx
pipx install transcribe-studio
transcribe-studio
Usage
- Create a project from the dashboard
- Upload an MP3/WAV/M4A/OGG/FLAC recording
- Divide the wave into chunks, then transcribe each segment
- Use Evaluation to compare your transcript against an LLM upload
- Export when done
Data is stored under ~/.transcribe-studio/ (override with TRANSCRIBE_STUDIO_DATA).
Environment variables:
| Variable | Default | Description |
|---|---|---|
TRANSCRIBE_STUDIO_DATA |
~/.transcribe-studio |
Data directory |
TRANSCRIBE_STUDIO_HOST |
127.0.0.1 |
Bind address |
TRANSCRIBE_STUDIO_PORT |
8082 |
Listen port |
Supabase: open Settings in the sidebar to add your project URL and anon key.
Deploy on AWS (free tier)
cd infra
cp terraform.tfvars.example terraform.tfvars
terraform init && terraform apply
See infra/README.md. Nginx serves port 80 → app on 8082.
Development
uv pip install -e ".[dev]"
uv run pytest
Publishing
PyPI via uv (recommended)
uv build
uv publish # uses UV_PUBLISH_TOKEN or prompts for PyPI credentials
PyPI via pip/twine
pip install build twine
python -m build
twine upload dist/*
GitHub release
git tag v0.2.0
git push origin v0.2.0
gh release create v0.2.0 dist/*
Configuration
Evaluation and transcript import settings ship inside the package:
app/config/evaluation.tomlapp/config/transcript_formats.tomlapp/config/languages/en.toml
License
MIT — see LICENSE.
Contributing
Issues and PRs welcome at github.com/Mishkat-Quantum-Labs/transcribe-studio.
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 transcribe_studio-0.2.3.tar.gz.
File metadata
- Download URL: transcribe_studio-0.2.3.tar.gz
- Upload date:
- Size: 74.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c70745ee36ce47f9214d004feb35ad7961b8ca4614d62a2ef10b3c8bf94ecde7
|
|
| MD5 |
11c3c1822d1768d4f1cd0542eec4f093
|
|
| BLAKE2b-256 |
690c0c073d273c9048c11f34c7df5da2ed2a9f1c3ec14bd4dfcfed8088eeffd2
|
File details
Details for the file transcribe_studio-0.2.3-py3-none-any.whl.
File metadata
- Download URL: transcribe_studio-0.2.3-py3-none-any.whl
- Upload date:
- Size: 92.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6798b981f27908223bc35aaf2b8a833a7f4d9c3ca21b07778669f1362efb49e9
|
|
| MD5 |
7cd5dc8771f8ef73aa96fea7b3782891
|
|
| BLAKE2b-256 |
8ac0f835a6017cbc75c044788eedc9dc1079f6c47c95461c9d8ba914367aa958
|