Text-to-Speech
ONNX
GGUF
Chinese
English
onnxruntime
tts
on-device
jetson
telephony
vits
mb-istft-vits
multi-speaker
mandarin
taiwanese-mandarin
imatrix
conversational
Instructions to use Luigi/PrimeTTS with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Luigi/PrimeTTS with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Luigi/PrimeTTS:F32 # Run inference directly in the terminal: llama cli -hf Luigi/PrimeTTS:F32
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Luigi/PrimeTTS:F32 # Run inference directly in the terminal: llama cli -hf Luigi/PrimeTTS:F32
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Luigi/PrimeTTS:F32 # Run inference directly in the terminal: ./llama-cli -hf Luigi/PrimeTTS:F32
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Luigi/PrimeTTS:F32 # Run inference directly in the terminal: ./build/bin/llama-cli -hf Luigi/PrimeTTS:F32
Use Docker
docker model run hf.co/Luigi/PrimeTTS:F32
- LM Studio
- Jan
- Ollama
How to use Luigi/PrimeTTS with Ollama:
ollama run hf.co/Luigi/PrimeTTS:F32
- Unsloth Desktop
- Docker Model Runner
How to use Luigi/PrimeTTS with Docker Model Runner:
docker model run hf.co/Luigi/PrimeTTS:F32
- Lemonade
How to use Luigi/PrimeTTS with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Luigi/PrimeTTS:F32
Run and chat with the model
lemonade run user.PrimeTTS-F32
List all available models
lemonade list
- Atomic Chat
| #!/usr/bin/env python3 | |
| """Assemble the v3 training manifest: existing clean corpus + new diverse mix + entity/name clips, | |
| with EVERY text passed through text_norm.normalize so the manifest's phonemization matches the audio | |
| (the teacher read the same spoken form). Idempotent on already-normalized entity rows. Usage: | |
| python build_corpus_v3.py --out corpus_v3.norm.jsonl <manifest1.jsonl> <manifest2.jsonl> ... | |
| """ | |
| import argparse, json, os | |
| import text_norm as T | |
| def main(): | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("--out", required=True) | |
| ap.add_argument("manifests", nargs="+") | |
| a = ap.parse_args() | |
| seen, n_in, n_out = set(), 0, 0 | |
| with open(a.out, "w", encoding="utf-8") as o: | |
| for mf in a.manifests: | |
| if not os.path.exists(mf): | |
| print("SKIP missing", mf); continue | |
| for l in open(mf): | |
| if not l.strip(): continue | |
| r = json.loads(l); n_in += 1 | |
| wav = r.get("target_audio") | |
| if not wav or not os.path.exists(wav): continue | |
| if wav in seen: continue | |
| seen.add(wav) | |
| r["text"] = T.normalize(r.get("text", "")) | |
| if len(r["text"]) < 2: continue | |
| o.write(json.dumps(r, ensure_ascii=False) + "\n"); n_out += 1 | |
| print(f"BUILD_CORPUS_V3 in={n_in} out={n_out} -> {a.out}") | |
| if __name__ == "__main__": | |
| main() | |