Downloads · 30 days
71
13% of all-time downloads
scrappylabs/narrator-tts
narrator-tts is a text-to-speech model from scrappylabs. Use it when you need text read aloud. It is set up for transformers. The card lists the license as apache-2.0.
A fine-tuned Qwen3-TTS 1.7B CustomVoice model producing a warm, expressive narrator voice optimized for storytelling, audiobooks, and conversational AI.
Downloads · 30 days
71
13% of all-time downloads
All-time downloads
550
Public
Parameters
1.9B
4.5 GB on disk
Likes
3
Public
Click a slice to open those files.
.safetensors4.5 GB · 100%
From the Hugging Face model README
A fine-tuned Qwen3-TTS 1.7B CustomVoice model producing a warm, expressive narrator voice optimized for storytelling, audiobooks, and conversational AI.
This is one of the first public fine-tunes of Qwen3-TTS. We took the 1.7B CustomVoice base model and trained it on 461 curated narrator-style audio samples to produce a consistent, high-quality storytelling voice without needing a reference audio clip at inference time.
Unlike voice cloning (which requires a reference WAV each time), this finetune bakes the voice identity into the model weights — just pass text in and get narrator audio out.
Storytelling
"Once upon a time, in a forest older than memory, there lived a bear who collected stories the way other bears collected honey."
<audio controls src="https://huggingface.co/scrappylabs/narrator-tts/resolve/main/samples/storytelling.mp3"></audio>
Suspense
"The door creaked open. Inside, the room was empty, except for a single envelope on the table, addressed to no one."
<audio controls src="https://huggingface.co/scrappylabs/narrator-tts/resolve/main/samples/suspense.mp3"></audio>
Educational
"The octopus has three hearts, blue blood, and the ability to change both the color and texture of its skin in less than a second."
<audio controls src="https://huggingface.co/scrappylabs/narrator-tts/resolve/main/samples/educational.mp3"></audio>
Conversational
"Hey, you know what? Today was a good day. Not perfect, but good. And sometimes that's more than enough."
<audio controls src="https://huggingface.co/scrappylabs/narrator-tts/resolve/main/samples/conversational.mp3"></audio>
| Parameter | Value |
|---|---|
| Base model | Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice |
| Training samples | 461 WAV clips (~varied lengths, diverse content) |
| Epochs | 5 |
| Batch size | 64 |
| Learning rate | 2e-5 |
| Warmup steps | 200 |
| Precision | bf16 |
| Gradient checkpointing | Enabled |
| Block size | 10240 |
| Hardware | NVIDIA RTX PRO 6000 (Blackwell, 48GB VRAM) |
The training data consists of narrator-style speech samples covering a range of emotional expressions, pacing, and content types — from calm storytelling to dramatic narration.
| Component | Size |
|---|---|
Model weights (model.safetensors) | 3.8 GB |
| Speech tokenizer | 682 MB |
| Total | ~4.5 GB |
If you're running a Qwen3-TTS server (like qwen3-tts-server), register this as a finetuned speaker and request it by name:
import requests
response = requests.post("http://localhost:8109/v1/audio/speech", json={
"input": "Once upon a time, in a land far far away, there lived a brave little bear.",
"voice": "narrator"
})
with open("output.wav", "wb") as f:
f.write(response.content)
response = requests.post("http://localhost:8109/v1/audio/speech", json={
"input": "And then, from the shadows... something moved.",
"voice": "narrator",
"instruct": "mysterious and suspenseful, slow pace"
})
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"scrappylabs/narrator-tts",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("scrappylabs/narrator-tts")
See the Qwen3-TTS documentation for full inference code.
| Voice Clone | Finetune | |
|---|---|---|
| Reference audio needed | Yes (every request) | No |
| Voice consistency | Good | Excellent |
| Inference latency | Higher (processes reference) | Lower (voice is in weights) |
| Emotion/instruct control | Limited | Full support |
| Deployment size | Base model + WAV files | Single model checkpoint |
For production use cases where you need a consistent character voice across thousands of generations, finetuning wins.
ScrappyLabs builds open-source voice AI tools. This model powers our production TTS pipeline, serving narrator voice across our apps including Poo Bear (an AI-powered teddy bear for kids).
Apache 2.0 — same as the base Qwen3-TTS model. Use it for anything.
If you use this model, a mention of ScrappyLabs is appreciated but not required.
@misc{scrappylabs-narrator-tts-2026,
author = {ScrappyLabs},
title = {ScrappyLabs Narrator TTS: A Qwen3-TTS 1.7B Voice Finetune},
year = {2026},
url = {https://huggingface.co/scrappylabs/narrator-tts}
}