roxi-tts-v3 / README.md
Joshuant's picture
roxi-tts-v3: alternate IndicTTS speaker (~70min), patched code + sdpa config
1df4673 verified
|
Raw
History Blame Contribute Delete
2.59 kB
---
license: apache-2.0
language:
- en
pipeline_tag: text-to-speech
base_model: OpenMOSS-Team/MOSS-TTS-Nano
tags:
- text-to-speech
- tts
- moss-tts-nano
- indian-english
- lora
---
# Roxi-TTS v3 β€” Indian-English (alternate voice)
A second Indian-English LoRA fine-tune of [MOSS-TTS-Nano](https://huggingface.co/OpenMOSS-Team/MOSS-TTS-Nano),
on a **different IndicTTS-English speaker** than [`roxi-tts-v2`](https://huggingface.co/IOTEverythin/roxi-tts-v2)
β€” trained on **more data (~70 min)** to compare voices. 48 kHz. Includes the cross-version
compatibility fixes (loads on transformers 4.57.1 β†’ 5.x code paths; SDPA default, no flash-attn).
## v2 vs v3
| | roxi-tts-v2 | roxi-tts-v3 |
|---|---|---|
| Speaker | IndicTTS spk A (~50 min) | IndicTTS spk B (~70 min), distinct voice (0.66 sim to v2) |
| Speaker-sim to its target | 0.96 | **0.96** |
| Intelligibility WER | 0.26 | 0.29 |
| Notes | mild read voice | different timbre; fuller data β†’ fewer early cut-offs in testing |
Both are ~0.1 B models on read-speech studio data, so both still sound somewhat synthetic β€” pick
whichever voice you prefer by ear.
## Requirements & usage
**Use `transformers==4.57.1`** (this custom code misbehaves on transformers 5.x β€” NaN/noise).
```bash
pip install "transformers==4.57.1" torch torchaudio soundfile sentencepiece librosa
```
```python
import torch
from transformers import AutoModelForCausalLM
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained(
"IOTEverythin/roxi-tts-v3", trust_remote_code=True, dtype=torch.float32
).to(device).eval()
res = model.inference(
text="Welcome. Your appointment is confirmed for Monday at ten thirty in the morning.",
output_audio_path="out.wav", mode="continuation",
audio_tokenizer_type="moss-audio-tokenizer-nano",
audio_tokenizer_pretrained_name_or_path="OpenMOSS-Team/MOSS-Audio-Tokenizer-Nano",
device=device, audio_repetition_penalty=1.1, use_kv_cache=True,
)
from IPython.display import Audio; Audio("out.wav")
```
Generation is stochastic β€” if a clip cuts off, re-run (or use the retry+trim helper). Keep
sentences short for reliability.
## Attribution & license
Apache-2.0. Built on MOSS-TTS-Nano (Apache-2.0) + audio tokenizer (Apache-2.0). Training data:
IIT-Madras **Indic TTS** (English) via `SPRINGLab/IndicTTS-English`. Required notice:
*"COPYRIGHT 2016 TTS Consortium, TDIL, Meity β€” Hema A. Murthy & S. Umesh β€” IIT Madras. ALL RIGHTS RESERVED."*
Do not use to impersonate real people or for deception; disclose AI-generated audio where required.