🎙️ Shenava-Rizeh-Pizeh-v1.0-tract-streaming
English + فارسی · Part of Shenava 1.0 · Project hub · SLT paper submission
🌟 At a glance | معرفی سریع
| English | فارسی | |
|---|---|---|
| 🎯 Role | Rizeh-Pizeh native-Rust tract streaming export. | مدل دانشآموز بسیار کوچک ریزهپیزه؛ این مخزن یکی از مصنوعات رسمی خانوادهٔ Shenava-1 است. |
| 🧠 Family | Shenava Rizeh-Pizeh tiny student | مدل دانشآموز بسیار کوچک ریزهپیزه |
| 📦 Format | native Rust tract streaming bundle | بستهٔ جریانی بومی Rust با tract |
| 📐 Scale | 6.9M parameters | اندازه: 6.9M parameters |
| 📥 Input | mono Persian speech resampled to 16 kHz | گفتار تککانالهٔ فارسی با نرخ نمونهبرداری ۱۶ کیلوهرتز |
| 📤 Output | Persian transcription; normalization and ITN belong in the display layer | رونویسی فارسی؛ نرمالسازی و تبدیل عدد گفتاری در لایهٔ نمایش انجام میشود |
| ⚖️ License | Apache License 2.0 | مجوز Apache 2.0 |
🇬🇧 English documentation
🧭 Overview
Rizeh-Pizeh native-Rust tract streaming export. This repository is an official Shenava-1 release artifact, not an isolated checkpoint. It belongs to a Persian-first stack covering training data, streaming ASR, semantic evaluation, on-device exports, captioning applications, and reproducible benchmarks. Use the collection link above to locate sibling model sizes, deployment formats, datasets, and evaluation assets.
The artifact is optimized for Persian speech and the conventions used by the Shenava/VisualEars pipeline. A model file alone is not the entire inference system: audio preparation, tokenizer assets, streaming state, decoding, Persian text normalization, and inverse text normalization can materially affect observed output.
✅ Intended uses
- Persian ASR research, benchmarking, and reproducible comparison inside the Shenava-1 evaluation protocol.
- Offline or streaming transcription when the selected runtime and graph support that mode.
- On-device captioning, accessibility prototypes, and Persian speech interfaces.
- Conversion or runtime integration work that preserves the source model’s tokenizer, decoding assumptions, and numerical checks.
🚫 Out-of-scope or unsafe uses
- Do not treat transcripts as guaranteed verbatim records for legal, medical, emergency, or other high-stakes decisions.
- Do not infer identity, health, ethnicity, intent, or other sensitive traits from speech or model errors.
- Do not compare formats using different text normalization, test subsets, or decoding settings and present the result as model quality.
- Do not assume robustness to every Persian accent, code-switching pattern, recording channel, or adversarial acoustic condition.
📁 Repository contents
This snapshot contains 9 files totaling approximately 64.45 MB. Common file groups: .onnx × 3, no extension × 2, .md × 1, .py × 1, .patch × 1, .txt × 1.
Largest or representative artifacts:
model.onnxmodel.int8.onnxmodel.int4.onnxtokens.txtshenava_tract_streaming.patch
The repository card and LICENSE are part of the release. Runtime-specific configuration, tokenizer, vocabulary, metadata, and state files should be kept beside the main weights when present.
🚀 Download and integration
from huggingface_hub import snapshot_download
local_dir = snapshot_download(
repo_id="Reza2kn/Shenava-Rizeh-Pizeh-v1.0-tract-streaming",
local_dir="./Shenava-Rizeh-Pizeh-v1.0-tract-streaming",
)
print(local_dir)
Use the runtime named by the artifact format. Inspect the exported graph signature before binding input and output tensors; deployment exports may expose cache/state tensors in addition to acoustic features.
For NeMo checkpoints, restore through nemo.collections.asr.models.ASRModel.restore_from(...) rather than assuming a CTC-only class. For converted artifacts, follow the graph metadata and the runtime-specific notes retained later in this card. Validate one known clip against the source checkpoint before shipping a conversion.
📏 Evaluation
Report at least WER and CER using the same Persian normalization rules, plus S³ when semantic importance matters. Shenava’s public Triple Threat leaderboard combines the Golden6669 and FLEURS-fa splits. Record the exact repository revision, decoder settings, chunk/context configuration, precision, device, and normalization code.
Deployment exports should be checked for numerical and transcription parity against their parent repository, Reza2kn/Shenava-Rizeh-Pizeh-v1.0 . Runtime speed is hardware-specific; publish latency, real-time factor, warm-up policy, thread count, and audio duration together.
⚠️ Limitations and responsible use
ASR quality varies with accent, age, speaking style, background noise, distance, clipping, reverberation, telephony bandwidth, overlapping speech, and code-switching. Persian orthography also permits multiple acceptable written forms. WER or CER can therefore penalize a semantically correct alternative, while a low aggregate score can still hide loss of a critical word. Review meaning-critical outputs and expose uncertainty in accessibility-facing products.
🔁 Reproducibility checklist
- Pin the Hub revision and runtime/library versions.
- Resample audio deterministically and document channel mixing.
- Keep tokenizer and decoding assets from this repository together.
- Record streaming chunk, left/right context, cache reset, and endpointing behavior.
- Apply one documented Persian normalization/ITN pipeline to references and hypotheses.
- Publish failed cases and condition-level results, not only a single average.
🇮🇷 مستندات فارسی
🧭 معرفی
مدل دانشآموز بسیار کوچک ریزهپیزه است. این مخزن یک مصنوع رسمی از انتشار Shenava-1 است و باید همراه با دادههای آموزشی، توکنایزر، روش رمزگشایی، نرمالسازی فارسی و تنظیمات اجرای جریانی دیده شود. پیوند مجموعه در بالای صفحه، نسخههای همخانواده، قالبهای استقرار، دادهها و معیارهای ارزیابی را یکجا نشان میدهد.
هدف پروژه ارائهٔ زیرساخت باز و قابل بازتولید برای بازشناسی گفتار و زیرنویس فارسی است. نتیجهٔ نهایی فقط به وزن مدل وابسته نیست؛ نرخ نمونهبرداری، کانال صوت، وضعیت کش، روش رمزگشایی، تبدیل اعداد گفتاری و یکسانسازی نیمفاصله نیز بر خروجی اثر دارند.
✅ کاربردهای پیشنهادی
- پژوهش، بنچمارک و مقایسهٔ منصفانهٔ ASR فارسی با پروتکل یکسان.
- رونویسی آفلاین یا جریانی، در صورتی که قالب و زماناجرای انتخابی از آن پشتیبانی کند.
- زیرنویس روی دستگاه، ابزارهای دسترسپذیری و رابطهای گفتاری فارسی.
- تبدیل مدل و یکپارچهسازی با زماناجراهای مختلف همراه با آزمون برابری خروجی.
🚫 کاربردهای نامناسب
- خروجی را در تصمیمهای پزشکی، حقوقی، اضطراری یا پرخطر بهعنوان سند قطعی به کار نبرید.
- از خطا یا صدای کاربر برای استنباط هویت، سلامت، قومیت، نیت یا ویژگی حساس استفاده نکنید.
- نتایجی را که با زیرمجموعه، نرمالسازی یا رمزگشایی متفاوت ساخته شدهاند مقایسهٔ مستقیم ننامید.
- پوشش کامل همهٔ لهجهها، گفتار آمیخته، کانالها و شرایط صوتی را فرض نکنید.
📁 محتوای مخزن
این نسخه شامل 9 فایل با حجم تقریبی 64.45 MB است. گروههای رایج فایل: .onnx × 3, no extension × 2, .md × 1, .py × 1, .patch × 1, .txt × 1.
فایلهای شاخص:
model.onnxmodel.int8.onnxmodel.int4.onnxtokens.txtshenava_tract_streaming.patch
فایلهای توکنایزر، واژگان، پیکربندی، وضعیت جریانی و فراداده را در صورت وجود کنار وزن اصلی نگه دارید.
🚀 دریافت و استفاده
ابتدا snapshot کامل مخزن را دریافت کنید، سپس از زماناجرای متناسب با قالب استفاده کنید. پیش از اتصال ورودی و خروجی، امضای گراف را بررسی کنید؛ خروجیهای جریانی ممکن است علاوه بر ویژگی صوتی، تنسورهای وضعیت و کش داشته باشند.
برای چکپوینت NeMo از ASRModel.restore_from(...) استفاده کنید و مدل را صرفاً CTC فرض نکنید. برای خروجیهای تبدیلشده، یک کلیپ مرجع را با مدل مبدأ مقایسه کنید و سپس استقرار را انجام دهید.
📏 ارزیابی
حداقل WER و CER را با نرمالسازی فارسی یکسان گزارش کنید و در سناریوهای حساس به معنا، S³ را نیز بیاورید. در جدول Triple Threat دو بخش Golden6669 و FLEURS-fa با هم سنجیده میشوند. شناسهٔ دقیق نسخه، تنظیمات دیکودر، کانتکست، دقت عددی، سختافزار و کد نرمالسازی را ثبت کنید.
⚠️ محدودیتها و استفادهٔ مسئولانه
لهجه، سن، سبک گفتار، نویز، فاصله، کلیپشدن، پژواک، کانال تلفنی، همپوشانی گویندگان و کدسوئیچینگ میتوانند کیفیت را تغییر دهند. چند نگارش فارسی ممکن است از نظر معنایی درست باشند، اما WER/CER یکی را خطا حساب کند. در محصولات دسترسپذیری، واژههای کلیدی را جداگانه بازبینی و عدم قطعیت را به کاربر نشان دهید.
🔁 چکلیست بازتولید
۱. نسخهٔ دقیق مخزن و کتابخانهها را ثابت کنید. ۲. تبدیل نرخ نمونه و کانال را مستند کنید. ۳. توکنایزر و داراییهای رمزگشایی همین مخزن را نگه دارید. ۴. اندازهٔ قطعه، کانتکست، بازنشانی کش و endpointing را ثبت کنید. ۵. یک خط لولهٔ نرمالسازی/ITN مشترک به مرجع و خروجی اعمال کنید. ۶. خطاهای نمونهای و نتایج هر شرایط را در کنار میانگین منتشر کنید.
📚 Citation, links, and license | استناد، پیوندها و مجوز
@misc{shenava1_shenava_rizeh_pizeh_v1_0_tract_streaming,
title = {Shenava-Rizeh-Pizeh-v1.0-tract-streaming: a Shenava-1 Persian speech artifact},
author = {Reza2kn},
year = {2026},
url = {https://huggingface.co/Reza2kn/Shenava-Rizeh-Pizeh-v1.0-tract-streaming}
}
Released under the Apache License 2.0. این مخزن با مجوز Apache 2.0 منتشر شده است.
📎 Retained technical notes | یادداشتهای فنی پیشین
The pre-existing technical card is retained below for revision-specific commands, measurements, and artifact details. The bilingual sections above define the common Shenava-1 documentation contract.
یادداشت فنی قبلی برای فرمانها، اندازهگیریها و جزئیات همان نسخه در ادامه حفظ شده است. بخشهای دوزبانهٔ بالا قرارداد مستندسازی مشترک Shenava-1 را تعریف میکنند.
Shenava — Rizeh-Pizeh v1.0 (6.9M) · cache-aware streaming · native-Rust (tract)
Cache-aware streaming CTC export of Shenava-Rizeh-Pizeh-v1.0
that runs in the pure-Rust tract engine — no C++, no ONNX Runtime.
Part of VisualEars / Shenava: offline, on-device, streaming Persian ASR for the Deaf/Hard-of-Hearing.
Quality: intelligible (24.55% golden-6669 WER); real-time on a 2015 Cortex-A7. RTF ≈ 0.018 (20.3 ms/chunk on x86 CPU; chunk = 1.12 s audio).
⚠️ Requires patched tract (until upstreamed)
Stock tract rejects NeMo cache-aware streaming graphs in two inference-layer spots. Fix = a 23-line, 2-file patch
(shenava_tract_streaming.patch, included) — PR open at sonos/tract#2441.
Build tract with the patch, then load model.onnx normally. The graph itself is valid (identical decode to ONNX Runtime).
Streaming contract
Per-step inputs / outputs (fixed shapes, greedy CTC):
audio_signal[1,80,121]— un-normalized log-mel chunk (NeMo featurizer,normalize=NA)length[1]i64 — true valid frames in the chunkcache_last_channel[1,12,70,144],cache_last_time[1,12,144,8],cache_last_channel_len[1]i64 — start zeros / 0- →
logprobs[1,T',1025]+ next caches
Chunking: feed 121-mel-frame chunks, shift 112 (9-frame pre-encode overlap). First chunk is 105 → pad to 121; pad the tail too; pass the true length. Thread the *_next caches back each step (cast cache_last_channel_len_next to i64). Greedy CTC: carry the previous token across chunk boundaries when collapsing repeats; blank id = 1024; map via tokens.txt; ▁→space.
Numbers are spoken-form → ITN
The model spells numbers (هشت not ۸). Apply persian_itn.py at display for spoken→Persian-digit (cardinals + هزار/میلیون/میلیارد + «و» + compounds).
Shenava-1 family (all native-Rust streaming)
- Koochik 114M — flagship
- Rizeh 32M — mid
- Rizeh-Pizeh 6.9M — tiniest
Quantized variants — int4 / int8 (NEW)
Our streaming support is merged into tract main (sonos/tract#2441), which also ships int4 (MatMulNBits -> Q4_0) and int8 GEMM kernels. So tract main runs quantized versions of this streaming model:
| file | precision | size | notes |
|---|---|---|---|
model.onnx |
fp32 | 33MB | reference |
model.int4.onnx |
int4 (MatMulNBits / Q4_0, weight-only) | 14MB | ⭐ recommended — 2.4x smaller, ~fp32 speed, byte-identical decode |
model.int8.onnx |
int8 (matmul-only, MatMulInteger) | 17MB | byte-identical; slower on small-batch streaming (per-matmul DynamicQuantizeLinear) — best for large-batch / offline, or CPUs where it wins |
Both quants decode byte-identically to fp32. For edge/on-device streaming, use model.int4.onnx (weight-only, no per-matmul activation quant). Needs tract main — the streaming fixes are upstream now, so the bundled .patch is no longer required.
Model tree for Reza2kn/Shenava-Rizeh-Pizeh-v1.0-tract-streaming
Base model
nvidia/stt_fa_fastconformer_hybrid_large