Добавил стриминг в Qwen3-TTS
На днях вышла Qwen3-TTS, но стриминг туда не завезли. Пришлось писать самому.
Ситуация интересная - В тех. репорте Qwen хвалятся "Extreme Low-Latency Streaming Generation", в репо лежат бенчмарки стриминга - а самого стриминга нет =) Разрабы переложили это на vLLM Omni, которые тоже пока не сделали online inference для Qwen3-TTS.

Поэтому я еще в день выхода сам написал native стриминг, благо архитектура позволяет
Как это работает
При обычном инференсе модель генерирует все токены -> декодер превращает их в аудио -> получаем wav.
Я добавил стриминг в классическом представлении: каждые N фреймов декодер отдаёт готовый кусок аудио наружу. Первый звук получаем через ~0.5-1 сек вместо ожидания всей фразы.
Что добавил:
stream_generate_pcm() - real-time PCM streaming
stream_generate_voice_clone() - streaming с voice cloning
На 5090 первый чанк аудио через 0.17с. вместо ожидания полных 12.58с RTF < 0.5
Форк: github.com/dffdeeq/Qwen3-TTS-streaming
Пример: examples/test_streaming.py
Бенчмарки (на 5090)
Обычный инференс:

Стриминг:

P.S. Писал для себя, но увидел, что люди интересуются, а реализации до сих пор нет, так что решил поделиться. Добавил еще доп. оптимизаций по типу torch.compile и CUDA graphs на декодер, torch.compile для CodePredictor и скорректировал проверки EOS для предотвращения синхронизации cpu, что дало ещё х3 к скорости инференса.