Instructions to use Reza2kn/Gooya-RizehPizeh-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Piper
How to use Reza2kn/Gooya-RizehPizeh-v2 with Piper:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
Gooya RizehPizeh v2
Persian (Farsi) single-speaker Piper/VITS2 voice fine-tuned on approved Gemini TTS Wikipedia audio. The model uses a case-sensitive Negara-style phonetic/Finglish frontend and produces 22,050 Hz mono audio.
Selected checkpoint
This release selects the checkpoint at global step 50,000 (val_mel = 0.3951). Training continued to 100,000 global steps, but later validation was worse, so the terminal state is intentionally not promoted.
- Generator parameters: approximately 23.7M
- Full trainable checkpoint:
checkpoint/gooya-rizehpizeh-v2-step50000-val_mel0.3951.ckpt - Checkpoint SHA-256:
0c2d22718894e20fb6361c7bf2d75ee54d61db3a167983ce5d843ff6ed438938 - Browser/Piper model:
gooya-rizehpizeh-v2.onnx - Browser/Piper model SHA-256:
675c557524a325cc014e27acb7bb9f7eab584d3247216f934e8a378b709a2d3b - Sample rate: 22,050 Hz
- Speakers: 1
- Phoneme type:
text - Symbol inventory: 256 IDs
Model lineage
The original v1.5 production ONNX did not have a matching resumable checkpoint. A trainable hybrid checkpoint was reconstructed by copying all 350 inference-time generator tensors from the production ONNX into a compatible Mana Piper training checkpoint. Training-only branches absent from ONNX came from that Mana template.
Before fine-tuning, a fresh ONNX round-trip matched the production model on 19/19 deterministic test rows:
- Worst maximum absolute error:
1.0348856449127197e-05 - Minimum SNR:
110.0768 dB - Minimum correlation:
0.999999999995
The complete recovery and parity receipts are under training/.
Fine-tuning data
The parent corpus came from approved rows in Reza2kn/Wikipedia-FA-EN-DeepSeek-V4-Flash-0731.
- Requested parent clips: 4,186 (
3,517train,669sealed eval) - Successfully aligned parents: 4,116
- Rejected during alignment: 70
- Materialized segments: 30,965
- Training segments consumed: 26,053
- Sealed eval segments, not consumed by training: 4,912
- Total materialized duration: 68.9853 hours
- Segment duration: mean
8.0203s, min0.6307s, max21.6656s
Audio timing came from AvaSanj v1 CTC forced alignment. Training phoneme labels came from Negara v7.1. Parent-level train/eval boundaries were preserved.
Training
- Precision: BF16 mixed precision
- Generator learning rate:
1e-5 - Discriminator learning rate:
5e-6 - Batch size: 1
- Selected validation metric:
val_mel - Selected checkpoint: global step 50,000,
val_mel = 0.3951
The 100K run was resumed from a successful 2K signal checkpoint. The sealed 669-parent eval split was not used for checkpoint selection.
ONNX and browser validation
The selected checkpoint was exported twice with Piper's ONNX exporter. Both exports were byte-identical. The published ONNX is self-contained and has no external tensor-data file.
- File size:
63,516,051bytes - Inputs:
input(int64,[batch, phonemes]),input_lengths(int64,[batch]),scales(float32,[3]) - Output:
output(float32, dynamic audio length) - ONNX Runtime CPU probes: 19/19 finite, positive-length outputs
- Gouya.app
onnxruntime-web@1.27.0WASM smoke test: passed using the application's realrizehPhoneTextToIdsmapping
Machine-readable receipts are in browser/.
Inference and long-form use
Input must already be case-sensitive Negara-compatible phonetic text. Example:
echo "zurxAneye vahdat yek makAne varzeSi dar Sahre borujerd ast." | \
piper --model gooya-rizehpizeh-v2.onnx \
--config gooya-rizehpizeh-v2.onnx.json \
--output_file output.wav
For long-form narration, do not send an article as one model input. Split at semantic sentence/clause boundaries into substantial spans, synthesize each span independently, trim quiet waveform edges, and join with boundary-aware pauses. The final output duration can be arbitrarily long even though each model invocation remains bounded.
Limitations
- Lower validation mel loss did not guarantee universally better pronunciation. Human listening found some words, including proper nouns, better at the earlier 2K checkpoint or the original v1.5 model.
- G2P/Finglish quality remains the dominant source of pronunciation errors.
- Very long single-pass phoneme sequences can collapse or omit content; use chunked synthesis.
- Overly small chunks sound breathy and robotic. Prefer substantial semantic spans instead of fixed tiny fragments.
- Browser export validation does not by itself constitute live Gouya.app promotion; the deployed consumer path must still be tested after rollout.
License
MIT. See LICENSE.
- Downloads last month
- -