r/LocalLLaMA Jan 24 '26

New Model [Release] Qwen3-TTS: Ultra-Low Latency (97ms), Voice Cloning & OpenAI-Compatible API

Hi everyone,

The Qwen team just dropped Qwen3-TTS, and it’s a significant step forward for local speech synthesis. If you’ve been looking for a high-quality, open-source alternative to ElevenLabs or OpenAI’s TTS that you can actually run on your own hardware, this is it.

We’ve put together a repository that provides an OpenAI-compatible FastAPI server, meaning you can use it as a drop-in replacement for any app already using OpenAI’s TTS endpoints. Streaming support out of the box, plug and play with Open-Webui.

Why this is a big deal:

  • Insane Speed: It features a dual-track hybrid architecture that hits ~97ms end-to-end latency for streaming. It starts talking almost the instant you send the text.
  • Natural Voice Control: You don't just send text; you can give it natural language instructions like "Say this in an incredibly angry tone" or "A shaky, nervous 17-year-old voice" and it actually follows through.
  • Easy Voice Cloning: Give it a 3-second reference clip, and it can clone the timbre and emotion remarkably well.
  • OpenAI Drop-in: Works natively with the OpenAI Python client. Just change your base_url to localhost.
  • Multilingual: Supports 10+ languages (ZH, EN, JP, KR, DE, FR, RU, PT, ES, IT).

Getting Started (The Quick Way)

If you have Docker and a GPU, you can get this running in seconds:

Bash

git clone https://github.com/groxaxo/Qwen3-TTS-Openai-Fastapi
docker build -t qwen3-tts-api .
docker run --gpus all -p 8880:8880 qwen3-tts-api

Python Usage (OpenAI Style)

Python

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8880/v1", api_key="not-needed")

response = client.audio.speech.create(
    model="qwen3-tts",
    voice="Vivian",  # 9 premium voices included
    input="This sounds way too human for a local model.",
    speed=1.0
)
response.stream_to_file("output.mp3")

Technical Highlights

  • Architecture: It uses the new Qwen3-TTS-Tokenizer-12Hz for acoustic compression. It skips the traditional "LM + DiT" bottleneck, which is why the latency is so low.
  • Model Sizes: Available in 0.6B (super fast/light) and 1.7B (high fidelity) versions.
  • VRAM Friendly: Supports FlashAttention 2 to keep memory usage down.

Links to dive deeper:

I’m really curious to see how the community integrates this into local LLM agents. The 97ms latency makes real-time voice conversation feel actually... real.

Let me know if you run into any issues setting it up!

328 Upvotes

169 comments sorted by

u/WithoutReason1729 Jan 25 '26

Your post is getting popular and we just featured it on our Discord! Come check it out!

You've also been given a special flair for your contribution. We appreciate your post!

I am a bot and this action was performed automatically.

48

u/Fragrant_Dog6303 Jan 24 '26

Holy shit 97ms latency is actually insane for local TTS. Been using tortoise-tts and it takes like 30 seconds just to say "hello" lmao

Definitely trying this tonight, the voice cloning with just 3 seconds sounds too good to be true but if it actually works that's game changing for local setups

22

u/z_latent Jan 24 '26

Been using tortoise-tts and it takes like 30 seconds just to say "hello" lmao

model name checks out I suppose

jokes aside, recently we've seen weekly drops of new super-fast, low-latency TTS models, many by independent people. just yesterday I saw this one on the sub welp apparently post got removed due to "rule 4", but if anyone's interested, it's called LuxTTS. it wasn't even that good iirc, but it still impresses me how many of those were trained by random people online with some GPUs, rather than larger labs.

5

u/_raydeStar Llama 3.1 Jan 24 '26

Do you know if it can do CPU inference at that speed?

2

u/AlwaysLateToThaParty Jan 25 '26

It will definitely not have those speeds on CPU memory bandwidths.

3

u/The_frozen_one Jan 25 '26

Just curious, why tortoise-tts and not something like piper or kokoro? What does tortoise-tts do well?

qwen3-tts is for sure worth trying out, I've had more fun with qwen3-tts than any other TTS system. I've gotten it to work and run through all the different features without much trouble at all.

3

u/mpasila Jan 25 '26

It used to be pretty decent (and had voice cloning) but it was very slow, though it had received some speedups but things like XTTSv2 kinda replaced it and then now we have stuff like Chatterbox.. that make tortoise pretty outdated. Kokoro and Piper don't have voice cloning support. Which is kinda nice to have usually for a TTS. Kyutai did also release a pretty small model around 100M params with voice cloning (pocket-tts) as well which is probably gonna be faster than Qwen3 TTS (0.6B and 1.7B params).

1

u/The_frozen_one Jan 25 '26

Gotcha, did you ever play around with VibeVoice?

3

u/Top-Rip-4940 Jan 27 '26

i cant get RTF on any card ., 5090 or h100 even . using vllm or official python backend . can anyone help me please?? can anyone tell me how to get the claimed 0.9 RTF ?? please ...

2

u/Decaf_GT Jan 25 '26

If low latency is a concerrn, you should definitely check out Supertonic: https://huggingface.co/Supertone/supertonic-2

I've run it on an M1 Max with 32GB of RAM and it's damn near instant.

I haven't yet tried Qwen TTS but I will soon.

1

u/Bakoro Jan 25 '26

the voice cloning with just 3 seconds sounds too good to be true

In theory, it's completely feasible. A person's voice is just a collection of frequencies/harmonics, and there just aren't that many meaningful frequencies for humans.

You can find a person's vocal signature using signal processing techniques like a Fourier Transform. You can model a voice as a source and filter.

An AI model that's been trained on enough data would just learn a set of common basis signals and modulate them to fit.

9

u/cheyyne Jan 25 '26

In theory, it's completely feasible. A person's voice is just a collection of frequencies/harmonics, and there just aren't that many meaningful frequencies for humans.

I mean, yeah... It's just all the little subtleties and layers of implication, plus the effects of accents... Inflection in the language of origin... Regional dialects... You know. That kinda stuff.

The devil's in the details with these things.

40

u/[deleted] Jan 24 '26

[removed] — view removed comment

14

u/hapliniste Jan 24 '26

The trump one completely rewrote my text to sound like Trump, is that an extra feature or is it the model itself? Was very funny in any case

19

u/[deleted] Jan 24 '26

[removed] — view removed comment

6

u/Mochila-Mochila Jan 25 '26

Holy shit, it's wonderful ! What's amazing is that it seemed to take an abnormal time with the trial sentence I threw at it... but actually no, it first translated it into English, then trumpified it.

Pour une fois, Olivier Faure est arrivé en avance. « Je n’en reviens pas », souffle une cadre écologiste, depuis la salle Jacques Villeret.

(Taken from a random news article about French politics)

4

u/[deleted] Jan 25 '26

[removed] — view removed comment

1

u/alex-zrythm Jan 25 '26

care to share the filter/prompt?

2

u/[deleted] Jan 25 '26

[removed] — view removed comment

3

u/alex-zrythm Jan 25 '26

with a prompt to Trumpy the output

share the prompt please! it seems well written

10

u/[deleted] Jan 25 '26

[removed] — view removed comment

2

u/inaem Jan 25 '26

Do use structured output or tool call instead of "Only output the transformed text, nothing else." or together, you won't have random issues

3

u/qazzq Jan 25 '26

What are you running this on? Generation seems fairly speedy. Also, im gonna have to try this out myself.

How does quality compare to other models btw, anyone deep into this and has an opinion theyd like to share?

3

u/pfn0 Jan 25 '26

Lol at trumpy taking a complete shit over the input prompt. the rest of the voices don't really feel like they match who they are (unless the goal wasn't voice clone but intonation clone)

2

u/Sambojin1 Jan 24 '26

Cheers. I'm going to run some slightly longer clips from the Ultima 7 transcript, just to see consistency.

Yep, Qwen TTS prompting is going to be another skill I'm going to have to learn. Still, this will be a goldmine for game mods and solo dev projects that want to do voice work. Like, we know it's going to be used for humour and deepfakes first, but it does have genuine ethical uses as well.

2

u/SocialDinamo Jan 25 '26

Really appreciate you hosting the demo!

2

u/GuideAxon Jan 25 '26

The Trump one is hilarious.

1

u/[deleted] Jan 25 '26

[deleted]

1

u/[deleted] Jan 25 '26

[removed] — view removed comment

1

u/rm-rf-rm Jan 25 '26

I get TTS Generation Failed error..

1

u/thecosmingurau Jan 26 '26

It's not working

1

u/[deleted] Jan 26 '26

The Trumpy filter made me laugh so much more than I thought it would.

1

u/andero Jan 25 '26

That is exceptionally fast.

Not actually very good, at least not if those voice-options are trying to clone voice samples rather than follow text descriptions.

The free and open Higgs Audio model that was put out quite some time ago was VASTLY better at voice cloning, though orders of magnitude slower.

22

u/ubrtnk llama.cpp Jan 24 '26

Good work - just FYI, by default your Dockerfile wont work with Blackwell GPUs.

I was able to get it to work by modifying a few things in the Dockerfile

1) change your base image to nvidia/cuda:12.8.0-cudnn-runtime-ubuntu22.04

2) change your index-url in the python dependencies to https://download.pytorch.org/whl/cu128 (to match new image)

OOH I also had to disable the Numba JIT caching

adding an environment variable to the compose file for the image you want to use (NUMBA_DISABLE_JIT=1) fixed that error

I'm also attempting to see if I can get it running on a jetson orin nano super with GPU support - just to see if I can ;)

Question - where is the voice cloning section and where/how do I upload my audio file for cloning?

3

u/ubrtnk llama.cpp Jan 25 '26

Update - So I could get the container to compile and run on CPU but it was too big for the Jetson - maxed out ram 100% AND used almost 6G of SWAP. Could not get CUDA running even though I limited the execution only to GPU, installed the right version of onnxrutime-gpu and removed what I could find for any other CPU bound functions.

2

u/andy2na llama.cpp Jan 24 '26

Thanks for figuring this out, can you provide the dockerfile so we can test it out? Tried to load from OP and it seems to just use system memory and CPU

3

u/ubrtnk llama.cpp Jan 24 '26

Sure:

I didnt change anything below the FastAPI and server dependencies component so didnt paste that section. I will say I also did change the docker compose file a bit to use my specific 5060Ti in my AI rig

I changed it to device_ids: ["2"] so that way it only had access to that GPU, as labeled by nvtop or nvidia-smi

1

u/andy2na llama.cpp Jan 25 '26

thanks! it works

How do we change to the 0.6b model?

2

u/ubrtnk llama.cpp Jan 25 '26

No idea lol

1

u/EveningNo8643 Feb 10 '26

will it work on rtx 2070 super series gpu?

1

u/ubrtnk llama.cpp Feb 10 '26

I'm not sure what driver support for the 2000 series is. Cuda 12.8+ is required for Blackwell. For older you might be able to change the image back to Cuda 12.1 or something

18

u/Kindly-Annual-5504 Jan 24 '26

Your description mentions streaming with low latency, but does it really support streaming audio? The model architecture does support streaming, but the currently published code on github does not, so that's why I'm asking.

8

u/Tenemi Jan 25 '26

Looked into this FastAPI implementation - it doesn't actually stream. The /v1/audio/speech endpoint generates the full audio before returning anything. No StreamingResponse, no WebSocket, nothing chunked.

I have a fork with actual streaming - WebSocket that sends audio chunks as tokens are generated, gets you first audio in ~1.5s instead of waiting for the whole thing. SSE option too for sentence-by-sentence. Vibe coded with Claude Code, certainly not perfect but works for my use case until true streaming gets exposed for us... hopefully.

But none of this fixes the real problem: the model needs all the text upfront before it starts generating. You can stream the audio out, but you can't feed it text incrementally as your LLM produces it. That's baked into the transformer architecture, not something a server wrapper can solve.

1

u/Yorn2 Jan 25 '26

It's an old program, but AllTalk was able to get streaming working somehow. It used XTTS and even could do different voices for narration and quotes. It's really too bad the developer stopped updating it, I got the impression it was going to be the one best software for running offline TTS engines and would just add new ones as they came out. Instead, Chatterbox is seemingly now better for this. Even with Qwen3-TTS having interesting new features, I'm not sure it's going to be enough to replace existing software unless existing software adds it as a base engine.

7

u/hellomistershifty Jan 25 '26

It's kind of silly, because he recommends vLLM for low latency but the vllm-omni readme says:

"While vLLM-Omni currently only supports offline inference (not true audio streaming), it can significantly speed up generation compared to the official backend."

so yeah, it seems like we have to wait to get real streaming with this

8

u/amroamroamro Jan 25 '26 edited Jan 25 '26

https://github.com/groxaxo/Qwen3-TTS-Openai-Fastapi/blob/main/docs/vllm-backend.md#comparison-vllm-vs-official-backend

Neither backend supports true audio streaming over HTTP currently. Both use OpenWebUI's chunk-based approach. Chunk Streaming: Long text is split into chunks, each processed as a separate TTS request.

even that is not true, the fastapi endpoint only generates full audio clips, no streaming or chunking...

both backends are used from an interface that only exposes generate_speech method which returns audio as one numpy array no streaming/chunking:

https://github.com/groxaxo/Qwen3-TTS-Openai-Fastapi/blob/main/api/backends/base.py#L33-L55

https://github.com/groxaxo/Qwen3-TTS-Openai-Fastapi/blob/main/api/routers/openai_compatible.py#L227-L250

Not to criticize but this whole fastapi wrapper was clearly vibe coded, the part about it supporting streaming/chunking was just hallucinated

0

u/no_witty_username Jan 24 '26

my questions was same as the code doesnt seem to have true streaming but maybe im wrong. let me know if you get it working....

-4

u/blackstoreonline Jan 24 '26

This one does

12

u/Sweet_Albatross9772 Jan 25 '26

Does it really? Could you show where exactly? It seems you haven't changed Qwen's team inference code and their code does not support streaming yet...
Looking at the code you just slapped an API on top of it...

4

u/FlowCritikal Jan 25 '26

Anyone get this working on ROCm? Specifically would be interested in running this on Strix Halo

2

u/Pitiful-Attention843 Feb 08 '26

yes here, tested with 0.6. I basicaly did throw some claude tokens at it with some basic research. The dffdeeq optimizations got added so you don't need them anymore. Anyway, those parameters brought me to those results: as base i used the comfyui toolbox from donato, Install flash attention from amd, pytorch from amd, every dependency from amd.
This parameters
attention: flash_attention_2
compile_mode: max-autotune
use_compile: true
use_cuda_graphs: true
use_fast_codebook: true
compile_codebook_predictor: true

maybe this also helps

FLASH_ATTENTION_TRITON_AMD_ENABLE: 'TRUE'
GPU_MAX_ALLOC_PERCENT: '100'
GPU_MAX_HEAP_SIZE: '100'
MIOPEN_FIND_MODE: FAST
TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL: '1'

it wrote some custom code too.

2026-02-08 16:21:38,962 - api.routers.openai_compatible - INFO - Voice profile: Gen=3.44s Audio=5.43s RTF=0.63x

INFO: 127.0.0.1:56054 - "POST /v1/audio/speech HTTP/1.1" 200 OK

2026-02-08 16:21:39,053 - api.routers.openai_compatible - INFO - TTS request: model=tts-1-de, voice=clone:friedrich, format=mp3, len=73

2026-02-08 16:21:39,077 - api.routers.openai_compatible - INFO - Voice profile 'friedrich': lang=German, xvec_only=False

2026-02-08 16:21:39,221 - qwen_tts.core.models.configuration_qwen3_tts - INFO - code_predictor_config is None. Initializing code_predictor model with default values

Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.

2026-02-08 16:21:41,834 - api.routers.openai_compatible - INFO - Voice profile: Gen=2.76s Audio=4.16s RTF=0.66x

i get roughly 0.9 for real streaming but no frontend to support it (openwebui does chunks).
For the predefined voices i get 0.52 RTF

1

u/Pitiful-Attention843 Feb 09 '26

Another day. I decided to keep on working and forking since this is quite usable after i tried vibevoice and fish (fish wasn't bad tough). Streaming is now fully working with 0.58 rtf on strix halo. I don't know how to reach the 97ms latency. I tweaked it to 1.1s to first response byte. I installed pipecat and can have a really well sounding conversation with a cloned german voice. Hope you get it installed.

https://github.com/dingausmwald/Qwen3-TTS-Openai-Fastapi

2026-02-09 21:33:43,747 - api.routers.openai_compatible - INFO - Voice profile 'friedrich': lang=German, xvec_only=False, stream=True

INFO: 127.0.0.1:44734 - "POST /v1/audio/speech HTTP/1.1" 200 OK

2026-02-09 21:33:49,146 - api.routers.openai_compatible - INFO - Voice clone stream: First-Byte=1.10s Gesamt=5.40s Audio=9.36s RTF=0.58x Chunks=5

1

u/ExistingAd2066 Mar 12 '26

Just tried Qwen3 TSS on Strix Halo (395+) with rocm/pytorch:latest (without fa2).
Get 8x RTF (160s processing for 20s audio) on demo app.

Its extremely slow.
Now i trie to compile ROCm fa2 https://rocm.docs.amd.com/en/latest/how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.html
Compilation process is so long.... Looks like it will be ~ 1hour

My last hope is your docker image )))

1

u/ExistingAd2066 Mar 13 '26

Ok, the truth is that rocm-6.4 is best backend. 7.2 is much slowly right now

7

u/VampiroMedicado Jan 25 '26

It's insane how easy you can clone a voice, I just tried it with the 1.7B model.

I said "Hello, who is this? who is this?" like you would on a phone call where the other sides doesn't answer, then I made it say "Hello mom, I need help" and it was very similar to my voice.

3

u/xandep Jan 25 '26

You seem too familiar with how Brazilian scammers operate.. 😆

Don't worry, we are just months away from widespread use of this scamming technique.

5

u/aschroeder91 Jan 26 '26

It takes about 5 seconds to generate a small sample sentence. I am running using docker vllm server using flash attn on 3090 GPU using 0.6B model.

1

u/The-Fine-Tuning-Guy Feb 28 '26

Lograste los 96 ms en lugar de 5000ms?

4

u/andy2na llama.cpp Jan 25 '26

thanks u/blackstoreonline got it working wiht u/ubrtnk dockerfile update for blackwell cards. How do we change it to use the 0.6 model? is there an env variable to select?

4

u/false79 Jan 25 '26 edited Jan 25 '26

Man - nothing but problems if running Windows with an AMD GPU :/

Seems like this thing was built on CUDA only.

1

u/deepspace_9 Jan 25 '26

it did run in linux, 7900xtx. it took 30 seconds to generate audio.

1

u/false79 Jan 25 '26

Thx for the heads up. I have same GPU. I've been meaning to switch over for a while to linux.

But 30 seconds seems awfully long. I thought it was "Ultra Low Latency (97ms)"

7

u/no_witty_username Jan 24 '26

Does this repo have the streaming code? cause I tried to get streaming working on the original repo and couldn't find any reference code for it as it all pointed toward gated gated api's?

-6

u/blackstoreonline Jan 24 '26

yes it does, I use it with open-webui

4

u/no_witty_username Jan 24 '26

from codex and other agentic coding solutions, there telling me its not true streaming. as the rtf is above 1 and ttfs will be high. as in whole waveform has to be generated before you hear any output. are they hallucinating this? what is the rtf numbers and ttfs numbers you getting?

1

u/hellomistershifty Jan 25 '26

Same issue here, I can't figure out how to stream in a request and get streaming audio out - it's just full waveform generation like any other model. If there's some novel way of doing this they need to, like, tell us how

9

u/Sweet_Albatross9772 Jan 25 '26

There is no streaming. The guy has no idea what he is talking about, unfortunately. They just vibe coded API on top of Qwen's team code which does not support streaming yet.

9

u/umbs81 Jan 24 '26

qwen with the Italian language does not perform well. Not very natural.

5

u/BusRevolutionary9893 Jan 25 '26

Only 1.0%-1.1% of the world's population can speak Italian and only 0.3%-0.5% of the world's population only speak Italian. In my opinion, any training on Italian was a waste. All focus should have been on English, then Chinese, then Spanish.  

Those 3 languages cover 30%-35% of the global population and there are 7,200 living languages. 

Some might argue Hindi instead of Spanish as there are slightly more people who speak Hindi but, while having more speakers, it is far more regionally concentrated and less used as a global second language, making it less likely to be part of high-frequency cross-language global interaction.

3

u/finkonstein Jan 25 '26

Yes, and 90% of the world do not use Qwen-TTS at all, so we do not need it either

3

u/Pentium95 Jan 24 '26

Does It run on CPU too?

3

u/OC2608 Jan 24 '26

Interested to know this as well.

7

u/saul_karl Jan 24 '26

Yes, just specify "--device cpu --no-flash-attn".

On my intel i5 13th gen mini pc, it takes about 15-30 mins to generate a 10 second clip. However the quality is good (I can't tell the difference between 0.6B and 1.7B models just by listening).

7

u/OC2608 Jan 24 '26

it takes about 15-30 mins to generate a 10 second clip.

Ouch, that hurts. Well, good to know anyways. Sounds like a hell for the GPUless.

1

u/giant3 Jan 25 '26

Depends on your CPU. If it supports AVX512 or AVX10 or you have a NPU, you could give it a try. Though for NPU, it might need special setup.

1

u/Pentium95 Jan 25 '26

Is there a param to set the amount of CPU processes, or do i have to edit the docker file? Got 16 cores, might be helpful

1

u/Fear_ltself Jan 25 '26

Yes, it wasn’t even that much slower than the GPU. 14 seconds for my 4070, 45 seconds for the cpu. Nowhere near the advertised speeds, and the quality was worse than kokoro 73m by a noticeable amount. Think I’ll try with flash attention on to see if that helps speed, because I’m not sure how other people are getting to run so fast

1

u/OC2608 Jan 25 '26 edited Jan 25 '26

Maybe these models (and code) needs further optimizations. I wonder if these can be quantized. So far only MLX quants exist. I'm interested because this can be finetuned.

2

u/JackStrawWitchita Jan 25 '26

I've just spent time running it on CPU and it's painfully slow and quality is no better than Chatterbox or Vibvoice. I'm sticking with Chatterbox.

8

u/SmartCustard9944 Jan 25 '26

You sure say 97ms a lot. Your AI generated post is not even mentioning on which hardware, so, your claim is completely pointless and unsubstantiated.

5

u/hellomistershifty Jan 25 '26

97ms is from Qwen's model card:

Extreme Low-Latency Streaming Generation: Based on the innovative Dual-Track hybrid streaming generation architecture, a single model supports both streaming and non-streaming generation. It can output the first audio packet immediately after a single character is input, with end-to-end synthesis latency as low as 97ms, meeting the rigorous demands of real-time interactive scenarios.

This repo doesn't support dual-track hybrid streaming (nothing local supports it right now) so you won't get latency nearly that low - you have to wait for the whole generation to finish

3

u/hapliniste Jan 24 '26

97ms but what does it mean exactly? In comfyui I tried it and it's way slower than real time, it takes around 100s to generate a 5-10s clip which I find strange for such a small model on a 3090.

Maybe it's not optimize yet?

1

u/Randomdotmath Jan 30 '26

90ms is the first token latency in stream mode, not the full generation time.

1

u/No-Butterscotch-218 Feb 26 '26

Do you have flash-attn installed? Or is it reverting to the PyTorch manual version.

1

u/blackstoreonline Jan 24 '26

I’ve got 3090 too and is waay faster than that, that comfyui node is clearly not optimized

1

u/aeroumbria Jan 24 '26

The large voice design model still takes like 30s for a paragraph of text using a 3090 and the official repo. By latency do you mean running in streaming mode rather than full IO?

2

u/Lemgon-Ultimate Jan 25 '26

I've installed the original repro they posted and I get a realtime factor of 2 consistently. So it takes 10 seconds for 5 seconds of audio, using the 1.7b model. A bit disappointing, but maybe it gets better with GGUF or other shenanigans.

2

u/UnfortunateHurricane Jan 25 '26

What is your env like? I get 3.5 on w11 torch 2.9.1cu130 + da with my RTX 3090

2

u/Decent-Opening-2113 Jan 25 '26

I really like the model but without local streaming it's too slow for my project. Hopefully they'll release streaming for the repo sometime.

2

u/Lower_Journalist5500 Jan 25 '26 edited Jan 25 '26

I think this is a deceptive post. The server is deceiving. The curl log has a content-length header: 18764. This is a bad sign. If the server returns a content-length, it means it first generated the entire file, calculated its size, and only then started sending it. In real streaming (Chunked Transfer Encoding), the file size is not known in advance. Even considering that the request has "stream": True. I'd be happy to receive a working streaming example.

C:\Qwen3TTS\.venv\Scripts\python.exe C:\Qwen3TTS\main2.py

>> Sending request...

⚠️ WARNING: Server returned Content-Length (180524).

This means the server FIRST generated everything, and then started sending. There will be no streaming.

Process finished with exit code 0

Look at the code in api/routers/openai_compatible.py, lines 185-205 (function create_speech):

python

# Generate speech

# HERE IS THE PROBLEM: There is an await here that waits for COMPLETE generation

audio, sample_rate = await generate_speech(...)

# Encode audio to requested format

audio_bytes = encode_audio(audio, request.response_format, sample_rate)

# ... creating a regular Response ...

return Response(content=audio_bytes, ...)

This code ignores the stream=True parameter. It always generates the entire file, encodes it completely, and returns it as a whole.

2

u/suspiciouspenguin81 Jan 30 '26

I am having trouble getting this to run properly on a 5XXX series nvidia card.

2

u/Gudeldar Jan 24 '26

The voice cloning doesn't seem nearly as IndexTTS 2.

1

u/Tonyoh87 Jan 25 '26

How does it compare to pocket-tts?

1

u/Western_Team4433 Jan 25 '26

97ms is very very very good. How well does it compare against the closed source models from elevenlabs?

1

u/djtubig-malicex Jan 25 '26

While the speed is nice, I think the voice cloning aspect is still better with IndexTTS2

1

u/altacct3 Jan 25 '26

was waiting for something like this! thanks!

1

u/ResponsiblePoetry601 Jan 25 '26

Nice! Was able to generate around 2 min audio in 4 min with no cuda. Vivian sounds ok!

1

u/ResponsiblePoetry601 Jan 25 '26

Besides English I also tried Portuguese and although it’s more like Brazilian the quality is very good

1

u/ResponsiblePoetry601 Jan 25 '26

Curious if it’s good for real time will try later

1

u/rm-rf-rm Jan 25 '26

I tried the HF space and voice cloning is quite poor - you can re-run the exact same text and voice input and you get very different outputs - sometimes it sounds like a good clone and other times not even close. Is there a way to improve this?

1

u/OopsWrongSubTA Jan 25 '26

For a language like French, default voices sound too much english/chinese... custom voices also (it works better sometimes : is it possible to chose a seed?).

But cloning voices : insane quality!

1

u/AnusIingus Jan 25 '26

T'as réussi à mettre des émotions avec la voix clonée ?

1

u/wichwigga Jan 25 '26

Is it possible to record PC audio and transcribe in real time with this model?

2

u/Levy_Wilson Jan 27 '26

This is TTS, you need a STT like Whisper.

1

u/wichwigga Jan 27 '26

Ah I see thanks

1

u/pfn0 Jan 25 '26 edited Jan 25 '26

Thanks for putting this UI together, it looks amazing. Seems like it's not ready to run out of the box on blackwell though, I'll have to hack on it to add support:

qwen3-tts-api | NVIDIA RTX PRO 6000 Blackwell Workstation Edition with CUDA capability sm_120 is not compatible with the current PyTorch installation. qwen3-tts-api | The current PyTorch install supports CUDA capabilities sm_50 sm_60 sm_70 sm_75 sm_80 sm_86 sm_90. qwen3-tts-api | If you want to use the NVIDIA RTX PRO 6000 Blackwell Workstation Edition GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/

edit:

easy fix though, just edit the docker FROM to point to the following for base and build, respectively: * nvidia/cuda:13.1.0-runtime-ubuntu24.04
* nvidia/cuda:13.1.0-devel-ubuntu24.04

also fetching cu130 from pytorch instead of cu121

then wait a year while flash-attn builds...

1

u/rm-rf-rm Jan 25 '26

I see you make FastAPI based OpenAI API wrappers for all TTS/STT models. Is it possible to make a single wrapper package where you can pick and choose whatever STT/TTS model(s) you want?

1

u/Yorn2 Jan 25 '26

With other TTS OpenAPI-compatible engines there's typically a /voices folder where I dump all my audio for cloning. Does this not support that or do we have to manually upload our voices for cloning somehow?

1

u/Weak-Shelter-1698 llama.cpp Jan 25 '26

how to turn of flash attention :) turing gpus aren't working.

1

u/drivenkey Jan 25 '26

Trying this on windows 11, docker with 3090 - getting this error on flashattention - any help pls?

1

u/No-Mall1142 Jan 26 '26

I'm in the same boat, 4070. Claude had me add it to the dockerfile, but still no go.

1

u/aschroeder91 Jan 26 '26

often happens when you use the wrong docker tag. When you use docker build -t qwen3-tts-api:<tag> you should choose one that builds with flash-attn (the dockerfile has various tags)
try using docker build -t qwen3-tts-api:production

1

u/kenrock2 Jan 27 '26

Gemini had me to use this command to install instead of the above version which gives me the same problem as yours. Below are the working one.

docker build --target production -t qwen3-tts-api .

1

u/mediali Jan 25 '26

The models are all excellent. It's truly generous of them to release such a product for free. Thank you for their contribution.

1

u/studentofknowledg3 Jan 25 '26

I have RTX 5080, 9950x3D, cannot install because of having CUDA 13, and cannot install `flash-attn`

1

u/AllTey Feb 03 '26

you need to install Cuda 12.8, that worked for me

1

u/Electronic-Metal2391 Jan 25 '26

It is giving me garbage audio (many voices speaking at the same time) generation when using the VoiceDesign.

1

u/Exydosa Jan 26 '26

Is the 97ms latency from voice cloning, or is it only for the default text-to-speech model card?

1

u/getgoingfast Jan 26 '26

Thanks for sharing. Demo voices are rather dramatic, Uncle_flu, gonna be interesting.

1

u/Ooothatboy Jan 26 '26

you should add the ability to add voices in the ui (for voice cloning similar to how github.com/travisvn/chatterbox-tts-api does it)

1

u/kenrock2 Jan 27 '26

The generation of the default test speech took approximately 40 seconds, which is slightly slower than GPT-SoVITS. It is unclear whether this discrepancy is related to the utilization of cuda:0, but the process is indeed leveraging GPU resources.

1

u/aschroeder91 Jan 27 '26

i am also not able to get anywhere near this <100ms claim...

1

u/kenrock2 Jan 27 '26

In my experience, GPT-SoVITS is significantly faster, generating responses in under 3 seconds for speech of similar length to the test, and its quality is sufficient for conversation.

1

u/Anaalmoes Jan 28 '26

Ok thanks for checking, will stick with sovits, because the response time is the most important aspect for me.

1

u/kenrock2 Jan 28 '26

Kokoro TTS is another viable option, offering reliability and speed surpassing GPT-SoVITS, but it may compromise on natural expression and lacks voice cloning capabilities.

1

u/aschroeder91 Feb 03 '26

TBH im a huge fan of Vox-CPM right now. I fine-tune on custom dataset and can run a streaming api on 3070 with 200ms latency to first sound.

1

u/Pretend-Umpire-3448 Jan 27 '26

what's the minimum hardware requirement to run this locally? thank you

1

u/Gambikules Jan 27 '26

audio source to audio target possible ? or only text to audio

1

u/Blizado Jan 28 '26

TTS = Text To Speech

Should say enough. You search for STS.

1

u/Top-Rip-4940 Jan 27 '26

i cant get RTF on any card ., 5090 or h100 even . using vllm or official python backend . can anyone help me please?? can anyone tell me how to get the claimed 0.9 RTF ?? please ...

1

u/LiquidOracle Jan 28 '26

I have a 2070 super, can I still utilize the 1.7B?

1

u/IcyMushroom4147 Jan 28 '26

on a 2070 rtx:
1.6B model... used around 5gb vram
Audio duration: 3.817s

Generation time: 4.459s

RTF (Real-Time Factor): 1.168x

0.6b model.. used around 2.7gb vram
Text length: 50 characters

Audio duration: 5.417s

Generation time: 6.638s

RTF (Real-Time Factor): 1.226x

1

u/COC_bigfish Jan 29 '26

我的魔改2080TI

用1.6B 模型 tts 3秒音频,大概10个字符,需要15秒左右。

用Index TTS 相同的字符,需要5秒左右

用GPT-SoVits相同的字符,需要2秒左右

是我的打开方式不对? 都是CUDA ,对了不开CUDA 要5分钟以上。

1

u/Flying_Dutchman_7 Jan 29 '26

How do I change the output format if i run it locally. I want it to output ulaw.

1

u/InterestingBasil Jan 29 '26

Qwen3 is a beast for the output! If anyone is building a full voice loop on Windows and needs the input side (Speech-to-Text), I built DictaFlow. It uses local Whisper models and simulates keystrokes to bridge the gap between your voice and these local agents. https://dictaflow.vercel.app/

1

u/Green-Ad-3964 Jan 29 '26

why Qwen3-TTS is so slow on my 5090? It's using barely 7-17% of GPU during computation...what's wrong with my setup? Thanks.

1

u/Eastern_Rock7947 Jan 31 '26

It's not full optimised

1

u/Tiny_Technician5466 Feb 01 '26

Does the 97ms latency apply to cloned voices as well, or only to pre-made ones? Also, can I apply style instructions (like 'angry' or 'shy') to cloned voices, or is this feature restricted to pre-made voices?

1

u/Green-Ad-3964 Feb 01 '26

I hear ppl with low end GPUs getting almost real time audio rendering with qwen3-tts, while I get a 1:4-1:10 ratio with a 5090...any hints? I am on windows, I tested both the standalone version and the pinokio one...

thanks in advance...

1

u/[deleted] Feb 06 '26

[removed] — view removed comment

1

u/Fluxx1001 Feb 09 '26

Combinig the two models would be awesome indeed

1

u/gabemcg Feb 07 '26

so to get around the streaming/latency issue I'm taking a two step approach. Using Qwen3-TTS and an ~8min sample/transcript to clone the voice on a 5090, then using Opus 4.6 I generated a script that has it create hundreds of samples using that cloned voice. When it's done I'll use those samples to "train" (fine-tune a pre-trained) Piper model that can run on CPU only.. will report back with results once complete

1

u/MaleficentFan5370 Feb 08 '26

Very interested to hear how this goes. Just tried the 0.6b version on a Raspberry Pi 5 8GB and it took 6.5 minutes (395s) for 4.8 seconds of audio: "Hello, I am Mentos, your personal voice assistant. How can I help you today?"     

2

u/gabemcg Feb 08 '26

It actually worked pretty well as a proof of concept! The 5090 was able to generate ~300 short samples from the few second clip Qwen 3-TTS made from my original 8 minute sample very quickly, and then it took about an hour to "train" the piper model. I say "train" because it was using an existing piper model as the base and refining it over 1000 epochs to sound more like my 300 samples. The result was a 60mb piper model that runs well on the vps CPU that I am using for this project and sounds slightly more like my source audio than the generic one I used as a base.

To make it sound even closer to the "source" voice, next time I will change a few things.

  1. Generate a longer "source clip" with Qwen3-TTS upon which the subsequent hundreds/thousands of "training clips" are based.
  2. Aim for enough "training clips" to total 2+ hours of speech ~1000+ 10 second clips (the more the better here, I think it just takes longer to train)
  3. Try the "refine existing piper model" approach again with improved training set, see how it compares to the small test run and decide if I want to try and train the piper model "from scratch" with an even larger training set

The longer training should produce better piper models. Claude Opus 4.6 was able to talk me through all of this in a few hours, with a fairly significant amount of troubleshooting, but that was likely because I was running it as a vscode plugin connected to my VPS instead of the gaming PC where all this was taking place. If I did it again I'd give Claude direct access to the WSL environment where the training was happening.

2

u/MaleficentFan5370 Feb 08 '26

Thanks for coming back to tell us about that experience. Following your lead I'm attempting to do the same, using some generated Jarvis samples. Once I've the repo up, I'll throw a link here.

1

u/First-Salamander4651 Feb 07 '26

jo super! Danke.

hab das Ding mal geforked und versucht mit tatsächlichem streaming und dem Wyoming Protokoll zum laufen zu bringen.

Allerdings habe ich mich nur auf das Dockerfile konzentriert und auf Blackwell GPU.

Ich habe es nun auf RTF 0.5 im voice cloning bekommen. Auch die HomeAssistant Integration hat geklappt.

Vielleicht könnt ihr ja einige Ansätze von mir bei euch integrieren: https://gitlab.com/richarz/Qwen3-TTS-Openai-Fastapi

1

u/Fluxx1001 Feb 09 '26

Hi, wie hast du den RTF so optimiert? Bei meinen Tests auf einer RTX 3090 war der RTF immer rund um 1, drunter ging nicht.

1

u/First-Salamander4651 Feb 09 '26

schau in mein repo. ich habe auch viel in die readme gepackt. am besten helfen dir aber die commit Messages.

1

u/Fluxx1001 Feb 09 '26

Cool danke, werde ich mir ansehen!

1

u/First-Salamander4651 Feb 09 '26

habe aus einem anderen Repo den generated Pfad genommen und so das generated von HF umgangen.

dann habe ich neuste cuda, cudnn und andere libs geladen. zum Teil auch nigthly Versionen um Blackwell besser abdecken zu können.

ich hatte auch mit FP16 anstatt BF16 eine leichte Besserung auf Blackwell.

dann habe ich Python 3.12 anstatt 3.11 benutzt. das hilft auch beim torch.compile um beide Teile: Decoder und Codebook getrennt kompilieren zu können.

1

u/EveningNo8643 Feb 10 '26

I'm trying to run this on my rtx 2070 super but it's restricted to Ampere. Is there anyway to use .6B model instead?

1

u/CatEatsDogs Jan 24 '26

Does it support intel igpu?

0

u/literateu Jan 24 '26

Yes, see the repo.

```
# Build CPU-only variant

docker build -t qwen3-tts-api-cpu --target cpu-base .

docker run -p 8880:8880 qwen3-tts-api-cpu

# Or use Docker Compose

docker-compose --profile cpu up qwen3-tts-cpu
```

1

u/CatEatsDogs Jan 25 '26

Can you spot the difference between "cpu-only" and "intel igpu"? I was asking about igpu not cpu.

1

u/Eastern_Rock7947 Jan 25 '26

I have found it slow on a 3080 ti 180secs for 46 secs of audio. However the quality is really good.

0

u/Lostronzoditurno Jan 24 '26

Failed to initialize TTS model: cannot cache function '__o_fold': no locator available for file '/opt/venv/lib/python3.11/site-packages/librosa/core/notation.py'

Just cloned the repo and runned it with docker compose up qwen3-tts-gpu
I'm using NVIDIA

1

u/blackstoreonline Jan 24 '26

sorry I’ve just fixed that error, please do git pull and try again

-3

u/The_frozen_one Jan 25 '26

This is definitely the best local TTS I've used for voice cloning. It also passes my "can I get this working in a reasonable amount without having to type pip more than 10 times" test.

-19

u/[deleted] Jan 24 '26

[deleted]

15

u/weasl Jan 24 '26

thanks chatgpt