MurmurAI
Modern speech recognition with word-level timestamps and speaker diarization
MurmurAI is a fork of WhisperX with modern dependency support:
- PyTorch 2.6+ compatibility (weights_only patches)
- Pyannote 4.x support (token parameter migration)
- Torchaudio 2.9+ compatibility (audio backend fixes)
- Python 3.10-3.13 tested
Features
- Word-level timestamps via phoneme alignment
- Speaker diarization with pyannote.audio
- Batch inference for 70x realtime transcription
- VAD preprocessing (pyannote or silero)
- Multiple output formats: SRT, VTT, TXT, TSV, JSON
Installation
pip install murmurai-core
Or with uv:
uv add murmurai-core
Quick Start
Python API
import murmurai
# Load model
model = murmurai.load_model("large-v3-turbo", device="cuda", compute_type="float16")
# Transcribe
audio = murmurai.load_audio("audio.mp3")
result = model.transcribe(audio, batch_size=16)
# Align (word-level timestamps)
model_a, metadata = murmurai.load_align_model(language_code=result["language"], device="cuda")
result = murmurai.align(result["segments"], model_a, metadata, audio, device="cuda")
# Diarization (speaker labels)
from pyannote.audio import Pipeline
diarize_model = Pipeline.from_pretrained("pyannote/speaker-diarization-3.1", use_auth_token="YOUR_HF_TOKEN")
diarize_segments = diarize_model(audio)
result = murmurai.assign_word_speakers(diarize_segments, result)
CLI
Basic transcription:
murmurai-core audio.mp3
With specific model and language:
murmurai-core audio.mp3 --model large-v3-turbo --language en
With speaker diarization:
murmurai-core audio.mp3 --model large-v3-turbo --diarize --hf_token YOUR_HF_TOKEN
Output to specific format and directory:
murmurai-core audio.mp3 --output_format srt --output_dir ./transcripts
Run without installing (via uvx):
uvx murmurai-core audio.mp3 --model large-v3-turbo
Common options:
| Option | Description | Default |
|---|---|---|
--model |
Whisper model (tiny, base, small, medium, large-v3, large-v3-turbo) |
small |
--language |
Audio language (e.g., en, pt, es, fr) |
auto-detect |
--device |
cuda or cpu |
cuda |
--output_format |
srt, vtt, txt, tsv, json, all |
all |
--output_dir |
Output directory | . |
--diarize |
Enable speaker diarization | off |
--hf_token |
HuggingFace token (required for diarization) | - |
--batch_size |
Batch size for inference | 8 |
--compute_type |
float16, float32, int8 |
float16 |
Requirements
- NVIDIA GPU with CUDA support (or CPU mode)
- HuggingFace token for diarization models
Accept the license at pyannote/speaker-diarization-3.1 before using diarization.
Migration from WhisperX
# Before
import whisperx
# After
import murmurai # drop-in replacement
All APIs are identical. Just change the import.
Credits
MurmurAI builds on the excellent work of:
- WhisperX by Max Bain
- OpenAI Whisper
- Faster Whisper
- Pyannote
Made with ❤️ by Namastex Labs
Metadata
Release files for murmurai-core 1.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| murmurai_core-1.0.6.tar.gz | 16.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| murmurai_core-1.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.3 MB
Release files / murmurai_core-1.0.6.tar.gz
| Download URL | murmurai_core-1.0.6.tar.gz |
|---|---|
| Size | 16.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c914683048e004e202a16c321334bda87bcc9e7c4142111f77b8c595d68ca3c1
|
|
BLAKE2b-256 checksum How to use checksums |
f87b10da2b9bebdb141425cd87b612b223eb49d83fae6984de9a126925c15c81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / murmurai_core-1.0.6-py3-none-any.whl
| Download URL | murmurai_core-1.0.6-py3-none-any.whl |
|---|---|
| Size | 16.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d0abb5ece99dc12f98dcdda86a5a049a4d22db51b6c9ba58b11bd7bc6f446ce
|
|
BLAKE2b-256 checksum How to use checksums |
f25db1545e4e35dcbbd52cc9e68d19e120e1cbbe320d0195dae72f6887584fbb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|