RagLeap
Blog

ragleap-voice: find, lock and verify open speech models safely (pre-alpha, every model unverified)

ragleap-voice is a pre-alpha Python library for local-first speech tooling, with Indian languages as a priority. Every model is unverified and none is a default. Source: its README and changelog at the 0.3.6 tag.

What does ragleap-voice do today?

A command line and a small standard-library-only Python core (no runtime dependencies, Python 3.10 or newer) for finding, locking, downloading and verifying speech models safely. On top of that, transcribe() and synthesize() run a Whisper large-v3 engine (optional extra whisper) and an Indic Parler-TTS engine (an isolated worker you set up yourself). It is separate from the core RagLeap voice channel, which connects through Twilio today.

How do I find and check a model?

These are the README commands:

pip install ragleap-voice
uv pip install ragleap-voice
uvx ragleap-voice models list
ragleap-voice models list
ragleap-voice models show indic-parler-tts
ragleap-voice models check

Every manifest entry is unverified: a research lead, not an endorsement.

How does it keep model downloads safe?

  • Lock files record the size and SHA-256 of every file at a pinned revision. models verify checks a cache folder against them, offline and read-only.
  • models check rejects verified or default entries that lack a matching lock, use licences outside the allowlist, or list pickle-capable files.
  • models pull downloads from Hugging Face only: HTTPS, a host allowlist, and the token (HF_TOKEN) is sent only to huggingface.co. Every file is checked against its lock before it enters the cache, and --offline makes no network calls.
  • Nothing in the package uses the network unless you run models pull or models lock.

How fast is it?

Not measured as a benchmark. In 0.3.2 the changelog records one clip on one Colab T4 (not a benchmark): a call went from about 14 to 15 s to about 3.4 s with transcribe(), and about 0.75 s with the opt-in Transcriber. That is batch decoding, not streaming latency.

What about streaming and phone audio?

transcribe_stream is a batch adapter: it buffers the audio and runs transcribe() once, so there are no partial transcripts. synthesize_stream is chunked playback of a finished waveform. Real phone audio is not measured.

What is not verified?

  • Every model is unverified. Each engine has been run on only a few clips on one maintainer’s machine.
  • 0.3.6 adds an optional voice-activity detector, SileroGate (extra vad). It is not exported and off by default, the model file is not bundled, its weights licence and training data are not verified, and the tests use a fake backend (one manual Colab smoke test passed).
  • Benchmark results are one-run measurements with their limits stated. The install check (one Colab run, one clip each in seven more languages) is not an accuracy claim.

How can I help?

Testing is wanted: issue #960 (Whisper) and issue #990 (Parler). Our Tests page counts 32 test files and 359 test functions on the main branch (a count, not a pass count).

More: the library page, the release notes and the source.

Back to the blog