File size: 2,904 Bytes
c99dadd
 
 
 
 
 
 
 
 
 
9e7be68
 
c99dadd
 
 
 
 
 
 
 
 
 
 
 
 
9e7be68
 
 
c99dadd
 
 
 
9e7be68
 
c99dadd
9e7be68
 
 
c99dadd
 
9e7be68
 
 
 
 
 
 
 
 
 
c99dadd
9e7be68
 
 
 
 
 
 
 
 
 
 
 
c99dadd
 
9e7be68
 
 
 
c99dadd
 
 
9e7be68
c99dadd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
license: apache-2.0
pipeline_tag: text-to-speech
library_name: dots_tts
tags:
  - text-to-speech
  - tts
  - audio
  - speech-synthesis
  - voice-cloning
  - streaming-tts
  - double-streaming
  - autoregressive
  - meanflow
  - two-step
---

# dots.tts-mf-2steps-stts

<p align="left">
  <a href="https://github.com/studio-dots-ai/dots.tts"><img src="https://img.shields.io/badge/GitHub-studio--dots--ai%2Fdots.tts-blue?logo=github" alt="GitHub"></a>
  <a href="https://huggingface.co/spaces/dots-studio/dots.tts"><img src="https://img.shields.io/badge/Playground-Live-orange" alt="Playground"></a>
  <a href="https://studio-dots-ai.github.io/dots.tts-demo/"><img src="https://img.shields.io/badge/Demo%20Page-Live-red" alt="Demo Page"></a>
</p>

This repository provides a standalone dots.tts artifact for **fixed two-step double-streaming TTS inference**.
The sampling and streaming contracts are stored in `config.json` and selected automatically.
Sampling and streaming cadence options should be omitted.

## Quick start

```python
import torch
import soundfile as sf

from dots_tts.runtime_double_streaming import DotsTtsRuntimeDoubleStreaming

runtime = DotsTtsRuntimeDoubleStreaming.from_pretrained(
    "dots-studio/dots.tts-mf-2steps-stts",
    precision="bfloat16",
    optimize=True,
    max_generate_length=500,
)

text = "Hello from two-step double streaming."
text_token_ids = runtime.model.tokenizer.encode(text, add_special_tokens=False)

session = runtime.start_double_streaming(
    prompt_audio_path="/path/to/reference.wav",
    prompt_text="The exact transcript spoken in the reference audio.",
)

chunks = []
for token_id in text_token_ids:
    chunk = session.push_text_token(token_id)
    if chunk is not None:
        chunks.append(chunk.detach().cpu())

for chunk in session.finish_text():
    chunks.append(chunk.detach().cpu())

audio = torch.cat(chunks, dim=-1).float().squeeze().numpy()
sf.write("double_streaming.wav", audio, runtime.sample_rate)
```

For a complete command-line example, see
[`scripts/example_double_streaming.py`](https://github.com/studio-dots-ai/dots.tts/blob/main/scripts/example_double_streaming.py).

Passing incompatible sampling values raises an error. Streaming cadence is selected from the artifact configuration.

## Scope and limitations

This model is intended for fixed two-step double-streaming inference. Other sampling or streaming settings are not claimed.
High-fidelity voice cloning must be used only with authorization and consent; do not use it
for impersonation, fraud, or disinformation.

---

## Citation

```bibtex
@article{dotstts2026,
  title         = {dots.tts Technical Report},
  author        = {dots.tts Team},
  year          = {2026},
  eprint        = {2606.07080},
  archivePrefix = {arXiv},
  primaryClass  = {cs.SD},
}
```

## License

Released under [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).