RagLeap
ragleap-voice · release notes

ragleap-voice v0.2.0

Status: pre-alpha. Open, local, MIT; no paid API in the default path. No model is verified yet and none is a default (calls need allow_unverified=True). The number-word modules contributed by outside volunteers have not been reviewed by fluent speakers. No claim of being better than any other product is made; there is no such benchmark.

[0.2.0] - 2026-10-30

Status

  • Still pre-alpha. Every model is unverified and none is a default. The opt-in number-word normalizers came from an outside contributor, cite CLDR and language references, and have not been reviewed by fluent speakers; they change no benchmark result unless enabled. The energy gate is off by default: at its default floor it passed only 14 of 30 English clips, and Whisper wrote filler text on every silent or noisy clip (see benchmarks/voice/README.md). The test suite was also run on Python 3.13 by a team member (370 passed); the package classifiers are unchanged.

Added

  • ragleap_voice.bench: opt-in Malay (numbers="ms") cardinal normalization, versioned as 1+numbers-ms.1, for standalone standard forms from kosong/sifar through 999,999,999,999,999,999 (below 10^18). CLDR Malay RBNF supplies belas, puluh, ratus, implicit seribu/sejuta, and the ribu, juta, bilion, trilion, and kuadrilion scales. Scale groups must descend; malformed, repeated, zero-coefficient, and out-of-range phrases are kept intact. Explicit satu ribu is accepted per DBP's formal usage advice. DBP references also verify comma thousands grouping, decimal points, zero (sifar), and the value of kuadrilion. DBP dictionary entries record both long- and short-scale definitions of bilion/trilion; this implementation follows current CLDR Malay spellout, DBP school-mathematics definitions (bilion=10^9; trilion=10^12), and DBP's short-scale numeric example. Complete comma-grouped numeric tokens are normalized, while periods between digits are retained as decimal points. Adjacent single-word cardinals remain separate; number+fraction, ordinal, date, negative, and currency constructions are protected from partial conversion. Ordinals, fractions, dates, negative cardinals, currency, spoken decimals, dialect/inflected variants, and values at or above 10^18 are outside scope. Common cardinal homonyms such as satu in prose can still normalize; no fluent Malay speaker reviewed this implementation. References: Unicode CLDR Malay cardinal RBNF, CLDR number-formatting specification, DBP Pedoman Umum Ejaan Bahasa Melayu, DBP PRPM mathematical glossary entries for bilion/trilion, DBP PRPM definition of sifar, and DBP PRPM definitions and short-scale clarification for bilion.
  • ragleap_voice.bench: opt-in Hindi (numbers="hi") cardinal normalization, versioned as 1+numbers-hi.1, for Devanagari spellings from zero through 99 खरब (9,999,999,999,999). The lexical table follows Unicode CLDR's Hindi cardinal RBNF, accepting spelling variants attested in BIS or the grammar reference, including छै, ब्यालीस, उन्यासी, इक्यानवे, and पचानवे; composition uses descending सौ, हज़ार/हजार, लाख, करोड़, अरब, and खरब scales. Repeated, increasing, zero-coefficient, and out-of-range scale phrases remain unchanged; Hindi conjunction और and source-documented fraction markers keep unsupported phrases intact. Ordinals, fractions, negatives, spoken decimals, dates, currency, collective/aggregate forms, transliterations, and values using larger scales are excluded. The parser is context-free, so common number words such as एक in ordinary prose may still normalize. Hindi numeric punctuation uses Indian comma grouping and a decimal point; only complete valid grouped numbers are de-grouped. References: CLDR Hindi cardinal RBNF, CLDR Hindi locale number patterns, BIS IS 16500:2012, Devnagari Script and Hindi Spellings, Central Hindi Training Institute Hindi coursebook, and Hindi Cardinal Numerals grammar reference, plus its Fractional Numerals reference. CLDR, BIS, and the Hindi grammar reference differ on some number spellings; only alternatives directly attested in these sources are accepted.
  • ragleap_voice.bench: opt-in Brazilian Portuguese (numbers="pt-BR") cardinal normalization, versioned as 1+numbers-pt-BR.1, supporting standard forms from zero through 999,999,999,999,999,999 and Brazilian short-scale names through quadrilhão, including the dictionary-verified variant quatrilhão (plural quatrilhões). CLDR's Portuguese RBNF supplies cardinal spellings, agreement variants and the scale sequence; the Brazilian Portuguese locale file has no number-rule overrides. Composition, thousands periods and decimal commas were cross-checked against the Câmara Municipal de Belo Horizonte's number-writing guide and FUNAG's Manual de Revisão. The Academia Brasileira de Letras lists both quatorze and catorze; both map to 14. Malformed scale phrases are preserved, adjacent standalone cardinals remain separate, and common fraction/ordinal markers prevent partial numerator conversion. Ordinals, fractions, spoken decimals, dates, currency-specific handling, dialect forms, negatives, and values at or above 10^18 are excluded. Agreement and number-versus-prose use are context-sensitive, so common cardinals in ordinary text may still normalize. Complete period-grouped numbers are normalized only when the entire number-like token is valid; decimal commas are retained and malformed period/comma sequences are not partially combined. No external word list or runtime dependency is added. References: CLDR Portuguese RBNF, CLDR pt_BR locale data, CLDR Portuguese number-format chart, Câmara Municipal de Belo Horizonte number guide, FUNAG Manual de Revisão, “Números”, and Academia Brasileira de Letras Formulário Ortográfico, the Michaelis and Aulete dictionary entries for quatrilhão, and a USP linguistics paper on Portuguese fractions.
  • ragleap_voice.bench: opt-in Indonesian (numbers="id") cardinal normalization, versioned as 1+numbers-id.1, for standard standalone forms from zero through 999 triliun. Composition and scale names were checked against Unicode CLDR's Indonesian RBNF data, Tata Bahasa Baku Bahasa Indonesia, and Sneddon's Indonesian Reference Grammar. CLDR's Indonesian locale data defines periods for grouping and commas for decimals. An older official 2000 terminology guide assigns biliun differently, so that ambiguous scale and forms above triliun are excluded; the current CLDR rules and Tata Bahasa Baku agree on miliar (10^9) and triliun (10^12). Malformed scale sequences are preserved and adjacent standalone cardinals remain separate, including when joined by dan. Fraction markers are recognized compositionally as per- or seper- plus a supported single-word cardinal denominator, keeping the complete phrase outside cardinal conversion; EYD V documents the per- denominator convention and examples including tiga perempat, dua persepuluh, and seperenam belas. Ordinals, fractions, dates, currency, digit-by-digit kosong, and regional or older spellings are excluded; context-free matches such as ordinary-prose satu remain possible. Indonesian grouped numbers validate the full number-like token, including the comma-decimal portion, before removing periods; Italian period handling remains separately versioned as numbers-it.2. Defaults and other language modes are unchanged; no external word list is bundled at runtime.
  • ragleap_voice.bench: opt-in Italian (numbers="it") cardinal normalization, versioned as 1+numbers-it.2 to distinguish the corrected behavior from the original 1+numbers-it.1 release. Supports standard forms from zero through 999,999,999,999,999,999, including closed compounds through 999,999 and long-scale nouns through biliardo (10^15). Spellings and composition were checked against Unicode CLDR's Italian RBNF data, CLDR's Italian decimal and grouping symbols, Treccani's cardinal numeral guidance, Accademia della Crusca's spelling guidance, and the University of Messina's DICO guidance on numeral forms and number composition. Treccani confirms bilione as 10^12 and biliardo as 10^15; the Crusca source describes Italy's long scale. trilione and larger scales, ordinals, dates, currency, and nonstandard/dialect forms are excluded; adjacent standalone numbers remain separate, decimal commas are retained, and complete period groups are normalized as thousands separators. Defaults and other language modes are unchanged; no external word list is bundled at runtime.
  • ragleap_voice.bench: opt-in German (numbers="de") cardinal-number normalization, versioned as 1+numbers-de.1. Standard standalone forms through Billiarde (10^15), compounds below one million, and German long-scale groupings are checked against CLDR's German RBNF rules and Duden's large-number spelling guidance. Malformed scale sequences are preserved. Defaults and other language paths are unchanged; no external word list is bundled at runtime.
  • ragleap_voice.bench: opt-in Spanish (numbers="es") cardinal-number normalization, versioned as 1+numbers-es.1. Standalone cardinal forms and combinations are checked against the RAE's cardinal-numeral reference, definitions of millardo, billón, trillón and cuatrillón, and CLDR's Spanish RBNF data. The general Spanish long scale is supported; the US short-scale variant is outside scope. Repeated or increasing scale sequences are preserved, adjacent standalone numerals are normalized separately, and Spanish decimal commas are not removed as thousands separators. Defaults and the English and Turkish paths are unchanged; no external word list is bundled at runtime.
  • transcribe() adds a note when the whole output equals a filler phrase Whisper wrote for silence and noise in the gate benchmark ("thank you", "thanks for watching", "you"), or when the output is empty. A note only: the text is never changed. The list is short, English only and not a general detector of invented text.
  • Energy gate for transcribe() (gate="off" by default, or "energy", with gate_options): when no 20 ms frame is speech-like the engine is not run and the result is empty text with a note giving the levels. Standard library only. The thresholds (floor -46.8 dBFS from the older voice channel, 30 dB relative, 5 frames) are unmeasured starting points, a level gate cannot tell loud noise from speech, and no protection against invented text is claimed until a benchmark exists.
  • Audio helpers without audioop (ragleap_voice.audio, standard library only, not exported yet): mu-law decode and encode, 20 ms framing, RMS and peak in dBFS, gain and level normalisation, 2:1 resamplers. The mu-law encoder is not verified against the G.711 standard (it differs from audioop and from ffmpeg by one code on 0.6% and 1.3% of inputs); A-law is not implemented; the resamplers' effect on recognition accuracy is not measured.
  • ragleap_voice.bench: opt-in Turkish ordinal normalization for standalone and composed number words, plus standard digit-plus-ordinal-suffix spellings. Supports both katrilyoncu and katrilyonuncu. The Turkish normalizer version is now 1+numbers-tr.2; defaults and the English path are unchanged. TDK's number spelling guidance covers ordinal writing conventions and digit suffixes; lexical examples are authored for the tests and cross-checked against Turkish references.

Install: pip install ragleap-voice==0.2.0 (engines are optional extras, e.g. ragleap-voice[whisper]).
Package: https://pypi.org/project/ragleap-voice/0.2.0/

View on GitHub Package page All releases
← v0.1.1v0.3.0 →

Release notes mirrored from GitHub Releases.