scriptrs
scriptrs is fast speech-to-text with NVIDIA's Parakeet TDT 0.6B v2 and v3 models. Inference runs in Rust on Apple Core ML or NVIDIA CUDA, with no PyTorch or ONNX Runtime.
pip install scriptrs
| Platform | Backend |
|---|---|
| macOS arm64 | Core ML |
| Linux x86_64 (glibc 2.28+) | CUDA, on a Turing (RTX 20, T4) or newer NVIDIA GPU |
| Windows x86_64 | CUDA, as on Linux; not yet run on a GPU |
The package needs Python 3.11 or newer. One wheel covers every Python version.
Use
import scriptrs
pipeline = scriptrs.Pipeline.from_pretrained("parakeet/v2") # downloads the model once
result = pipeline.transcribe_file("meeting.mp3")
print(result.text)
for chunk in result.chunks:
print(f"{chunk.start:7.2f} {chunk.end:7.2f} {chunk.text}")
Choosing a model
Models are named "<family>/<version>". Both Parakeet models come with the same
package, and you pick one when you load the pipeline:
| Model | Languages | Pick it when |
|---|---|---|
"parakeet/v2" (default) |
English only | all your audio is English; v2 is slightly more accurate on it |
"parakeet/v3" |
25 European languages, detected automatically | the audio may not be English |
english = scriptrs.Pipeline.from_pretrained("parakeet/v2")
multilingual = scriptrs.Pipeline.from_pretrained("parakeet/v3")
scriptrs.Model.PARAKEET_V2 and scriptrs.Model.PARAKEET_V3 work too, and so do
NVIDIA's model ids, such as "nvidia/parakeet-tdt-0.6b-v3". Each model downloads
separately the first time you load it, so loading only the one you use downloads
only that one.
Parakeet v3 detects the language of each window by itself. To fix it, pass an ISO 639-1 code:
result = multilingual.transcribe_file("interview.wav", language="de")
print(scriptrs.Model.PARAKEET_V3.languages) # ['bg', 'hr', 'cs', ...]
Audio
transcribe_file reads WAV, FLAC, MP3, Ogg Vorbis, and AAC in MP4/M4A, and
converts it to 16 kHz mono. Audio already in memory has to be 16 kHz mono
float32, such as a NumPy array:
result = pipeline.transcribe(samples, language="en")
Recordings of any length work. Audio longer than one model window is split into
overlapping windows and the transcripts are merged. For recordings that are
mostly silence or noise, load the pipeline with vad=True to split at detected
speech instead.
To transcribe many clips, such as utterances, use transcribe_many. It
prepares the next clips while the model runs and, on CUDA, batches the clips'
windows together, up to max_batch in one pass (32 by default, at most 64):
results = pipeline.transcribe_many([clip_a, clip_b, clip_c])
Each result has the full text, timed chunks, and every token in tokens
with its start, end, and confidence.
Command line
scriptrs transcribe meeting.mp3
scriptrs transcribe interview.wav --model parakeet/v3 --language de --json
With one file, the transcript is printed alone. With several, each one follows a
header, as head prints them:
$ scriptrs transcribe a.wav b.wav
==> a.wav <==
First transcript.
==> b.wav <==
Second transcript.
--json prints one JSON object per line, with the file, text, timed chunks, and
tokens.
To install only the command line, in its own environment, use uv:
uv tool install scriptrs
CUDA
The Linux and Windows wheels need an NVIDIA driver, but no CUDA toolkit: they
install cuBLAS from the nvidia-cublas-cu12 package. The default
precision="fp16" is the fastest. "tf32" keeps the weights in FP32, and
"fp32" matches NVIDIA NeMo's FP32 output token for token:
pipeline = scriptrs.Pipeline.from_pretrained("parakeet/v3", precision="fp32")
The Windows wheel builds and passes its tests in CI on a runner without a GPU,
but nobody has transcribed with it on a Windows GPU yet. It loads the driver's
nvcuda.dll and the nvidia-cublas-cu12 package's cublas64_12.dll and
cublasLt64_12.dll. If transcription fails there, please open an issue.
Models
from_pretrained() downloads the models from Hugging Face into cache_dir=
when given, else the Hugging Face hub cache that HF_HUB_CACHE or HF_HOME
sets, else ~/.cache/huggingface/hub. On macOS a model is about
0.6 GB of Core ML models from
avencera/scriptrs-models.
On Linux and Windows it is about 2.5 GB of weights from
avencera/parakeet-tdt-0.6b-v2-cuda
or avencera/parakeet-tdt-0.6b-v3-cuda.
To use models you manage yourself, load them with
scriptrs.Pipeline.from_dir(path, "parakeet/v2"), using the layout in the
scriptrs README.
Errors
Invalid arguments, such as an unknown model name or samples that are not 1-D
float32, raise ValueError or TypeError. Everything else that fails raises
scriptrs.ScriptrsError. Its code is a stable value, such as
unsupported_language, model_download, audio_decode, or cuda, so you can
branch on it without parsing the message.
Metadata
Release files for scriptrs 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| scriptrs-0.5.0.tar.gz | 598.9 kB | With provenance | Details for scriptrs-0.5.0.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| scriptrs-0.5.0-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details for scriptrs-0.5.0-cp311-abi3-win_amd64.whl |
| scriptrs-0.5.0-cp311-abi3-manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64 | Details for scriptrs-0.5.0-cp311-abi3-manylinux_2_28_x86_64.whl |
| scriptrs-0.5.0-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details for scriptrs-0.5.0-cp311-abi3-macosx_11_0_arm64.whl |
Total release size: 9.9 MB
Release files / scriptrs-0.5.0.tar.gz
| Download URL | scriptrs-0.5.0.tar.gz |
|---|---|
| Size | 598.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0734941c3debccf49677dd8f8d7854bd9be04d707f0e9d2024d59fb26629bc9d
|
|
BLAKE2b-256 checksum How to use checksums |
f1540589ee1b8f7e5a505c5fb107e9198c9884c8b93b58314c7d0736137a9f70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logRelease files / scriptrs-0.5.0-cp311-abi3-win_amd64.whl
| Download URL | scriptrs-0.5.0-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
89733f104000d70eb255266c30eadb8311c1899e69f40153c4ab9eeb8d8fa0d4
|
|
BLAKE2b-256 checksum How to use checksums |
21fb6685464e3ec014f50e289da4ef2583173cb0ba52c322de1886763841aaad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logRelease files / scriptrs-0.5.0-cp311-abi3-manylinux_2_28_x86_64.whl
| Download URL | scriptrs-0.5.0-cp311-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d424c8bea6986d774d562f3f8076c9bb74d30ac0f090a3cecc55065425401f09
|
|
BLAKE2b-256 checksum How to use checksums |
41adf2e30ff8d313e86c3b03c7f011be1f0e48750b9bb0a28916333326fd4e09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logRelease files / scriptrs-0.5.0-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | scriptrs-0.5.0-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6dc87e677dc89dacef1545ef530d4f92b5fa56f76d984ddff2e54c9834bff81f
|
|
BLAKE2b-256 checksum How to use checksums |
2f24089aa2146ca2db6604afdef9ea3aa07dfd5ce784227bc64a800b40b4d3eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logSecurity for scriptrs 0.5.0
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.
Full provenance
All 4 files in this release have been uploaded with provenance metadata.
Attestation for scriptrs-0.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logA 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.