Local audio and video transcription using NeMo-Speech.cpp and Parakeet TDT 0.6B v3. Outputs JSON, plain text, SRT, and WebVTT.
- Python 3.10+
- FFmpeg and FFprobe
- A supported native runtime profile for managed setup
- Git, a C++17 compiler, Ninja, and CMake 3.26–3.x only for source builds
- CUDA and
nvcconly for CUDA source builds
Install the Python package from PyPI:
pipx install speechloom
# or: python3 -m pip install speechloomInstall the runtime and ASR model:
speechloom setupSpeechloom selects a usable backend from the capabilities available on the host. You can also select one explicitly:
speechloom setup --backend cudaTo install translation support (about 16 GiB of free space is needed during conversion):
speechloom setup --backend cuda --features translationSpeaker diarization uses the pinned four-speaker Sortformer model:
speechloom setup --features diarization
speechloom transcribe meeting.mp4 --diarizeMultiple optional features can be selected with
--features translation,diarization.
Setup uses the platform's standard per-user configuration, data, and cache
directories. Existing repository-local .runtime assets are imported in
place; they are not moved or deleted.
Portable installations can set SPEECHLOOM_CONFIG_HOME,
SPEECHLOOM_DATA_HOME, and SPEECHLOOM_CACHE_HOME explicitly.
Check setup state or remove setup caches with:
speechloom setup status
speechloom setup clean --allThe repository-local setup remains available for development and troubleshooting.
Check the installation:
speechloom doctorTranscribe one or more files:
speechloom transcribe recording.mp4
speechloom transcribe recordings/ --recursive --workers 2
speechloom transcribe recording.mp4 --output-dir ./outputTo translate a transcript, install the translation feature and provide the source and target languages:
speechloom transcribe russian.mp4 --source-language ru --translate-to enThe original files remain transcript.* and subtitles.*. Translated files are
named translation.en.* and subtitles.en.*.
Inspect a completed job:
speechloom inspect transcripts/<job-directory>Each job contains a manifest, canonical transcript.json, and the requested
text and subtitle formats. Completed jobs are reused unless --force is set.
Run speechloom transcribe --help for all options.
Install the optional server dependencies and allow the directories a desktop client may submit:
python3 -m pip install -e ".[api]"
speechloom serve --allow-root /path/to/mediaThe API listens on 127.0.0.1:8765; OpenAPI documentation is available at
/docs. Remote binding requires --allow-remote and a
SPEECHLOOM_API_TOKEN bearer token.
Settings are read in this order:
- command-line options
SPEECHLOOM_*environment variables- the selected INI file
- defaults
The default file is in the platform's standard user configuration directory.
--config still selects an explicit file. See config.example.ini for
available settings.
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=src python3 -m unittest discover -s tests -vReal-runtime tests are enabled by setting SPEECHLOOM_TEST_NEMO,
SPEECHLOOM_TEST_MODEL, and SPEECHLOOM_TEST_MEDIA.
The project is licensed under MIT. Models are distributed separately under their respective licenses.