| --- |
| 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). |
|
|