xVibeNot
173 subscribers
7 photos
6 files
31 links
vibecode - why not?

@xVibeNot

https://t.me/+WpK3hi-LL8BjYzMy - чатик
Download Telegram
Особенности CosyVoice3

Главные преимущества модели в качестве, это управление синтезом через промпт и специальные токены для кашля, смеха, вздохов и тд.
Вместе с текстом для синтеза в модель надо подавать промпт, в формате:

{instruction}<|endofprompt|>{audio_transcription}

где instruction и есть этот промпт для управления стилем

You are a helpful assistant. Please say a sentence as loudly as possible.

В токенайзер добавлены специальные токены:

[breath]
[noise]
[cough] - кашель в примере output_02.wav
[laughter] - смех в примере output_03.wav
[clucking]
[accent]
[quick_breath]
[hissing]
[sigh]
[vocalized-noise]
[lipsmack]
[mn]
<strong> </strong>
<laughter> </laughter>


Bi-stream из анонса пока не работает с 3 версией, только с 2, но вероятно допилят.

streaming input text is only implemented for CosyVoice2 and do not support vllm!


Что касается скорости и реалтайма - будет отдельный пост.
🔥3
output_17.wav
187.6 KB
еще немного тестов [laughter]
😁4🔥1
CosyVoice 3 ускоряемся

Если взять инференс из коробки, то он получается не особо быстрый и не влезает в реалтайм:
https://github.com/FunAudioLLM/CosyVoice

Меня интересует именно стриминг режим, поэтому все ниже происходит с параметром stream=True. Оффлайн инференс происходит быстрее, так как отсутствует оферхед на переключение между моделями каждый чанк.
Все тесты и замеры проводил на RTX 3090.

Ориентироваться будем в основном на 3 метрики:
TTFB (Time to first byte) - задержка до первого чанка готовой речи, как быстро можем начать воспроизводить речь.
RTF (Realtime factor) - отношение времени генерации речи к длине ее воспроизведения. Если 8 секунд речи получили за 4 секунды, значит RTF = 0.5.
TPS (Tokens per second) - касается только LLM части модели, сколько токенов в секунду успевает генерировать LLM.


Что имеем

Модель внутри состоит из 3-х модулей:
LLM (Qwen2 0.5B)
FLOW (DiT)
HIFT (vocoder)

Добавляем логи на каждый шаг, замеряем время/скорость и начальные значения:
LLM работает где-то 6 секунд
FLOW отрабатывает 3 секунды
HIFT 1 секунда

TTFB: 2.2 sec
RTF: 1.5
TPS: 16

Это то что имеем из коробки, без каких-либо оптимизаций.


Вайб

Конечно же сразу отправляем Cursor (Opus-4.5) искать в чем затык, сами лезем глазами смотреть как устроен инференс, вдруг что-то заметим.
Из коробки можно включить fp16 и tensorRT, включаем.

Cursor возвращается с проблемами и их решением:
forward_one_step - вытаскиваем весь hidden state (долго), нужно только последнее состояние.
nucleus_sampling - бегаем в цикле обычным питоном (долго).

Запускаем, видно +20-30% ускорения, но все еще RTF > 1 в двух из трех кейсах.

Больше всего съедает времени LLM, на нее и будем смотреть.
Мы включили fp16, это должно было дать в идеале х2, включился ли он?
Да, но только для FLOW.
Исправляем, включаем fp16 для LLM части, получаем примерно +10-20%, TPS 20-24 - х2 vs х1.2 странно?


Бенчмарк LLM

Курсорим бенчмарк, где загружаем только LLM часть, она самая долгая, поэтому экспериментировать будем с ней.
Тут я отключил TensorRT для FLOW, для чистоты эксперимента.

Решаю попробовать комбинации:
fp16 - всегда включен
sdpa - дефолтное внимание
flash attension 2 - попробуем его
sdpa + torch.compile - база

Запускаем:
sdpa: ~49 TPS
flash attention 2: 30-35 TPS - стало хуже
sdpa + torch.compile: 95-105 TPS - вот это нам и надо


Докручиваем

Применяем fp16 + sdpa + torch.compile (default mode, другие у меня под wsl не завелись), запускаем полную генерацию:
TTFB: 1.5 sec
RTF: 0.8
TPS: ~35

Уже лучше, но в бенчмарке мы видели TPS 100, что-то поджимает LLM и не дает ей работать.
Еще раз анализируем библиотеку, находим цикл while и внутри time.sleep(0.1).

Код написан так, что мы ждем первые 25 токенов от LLM, потом запускаем FLOW и HIFT на эти токены, получаем чанк аудио. Но если LLM сгенерировала 24 токена, то мы ждем еще 100ms, а пока работает FLOW и HIFT, LLM стоит на месте и ждет.
Разнести модели по разным контекстам можно, но это позже, мы тут вайбкодим вообще-то. Поэтому просто уменьшаем паузу с 0.1 до 0.005.

Запускаем генерацию:
TTFB: 1.4 sec
RTF: 0.7
TPS: ~45

Вспоминаем что выключали TensorRT (он ускоряет FLOW, а по коду LLM ждет FLOW), включаем обратно, запускаем:
TTFB: 0.8 sec
RTF: 0.42
TPS: ~65

Такие метрики уже вкуснее, для начала думаю хватит.


Итого

Генерация трех фраз:
Средний TTFB: 0.796 сек
Средний RTF: 0.427
Общая длительность: 23.160 сек
Общее время: 9.897 сек

TTFB: 2.2 -> 0.8 sec
RTF: 1.5 -> 0.4 sec

Исправленный инференс я планирую закинуть на github, будет отдельный пост.
Думаю можно ускориться еще, так как LLM зажимается последовательностью пайплайна, а в бенчмарках мы получили 100 TPS.
Предполагаю еще +30% за счет нормального распараллеливания можно найти.
🤯3🔥2
Канал конечно новый и маленький, но тул прикольный

Provided by tg-wrapped
1👍4🔥3
FastCosyVoice

Выше я писал как получилось разогнать CosyVoice3 для реалтайм синтеза. Немного причесав эксперименты, собрал на гитхаб.

Отличия от оригинала:
- uv в качестве пакетного менеджера
- исправлены несколько тяжелых вычислений
- fp16 применяется к llm тоже, а не только к flow (DiT)
- исправлена конвертация в onnx + trt для flow
- поддержка tensorRT-LLM
- разделены stream и offline режимы
- добавлены примеры инференса и референсный голос для клонирования, чтобы сразу пощупать модель
- добавлен отдельный класс FastCosyVoice и сохранен оригинальный инференс

На RTX 3090 удалось получить такие метрики в стрим режиме:
TTFB: 0.470 sec
RTF: 0.245

В оффлайн режиме:
RTF: 0.1

Линк на гитхаб:
https://github.com/Brakanier/FastCosyVoice

Велкам пощупать - ишьюсы, пул реквесты, звезды приветствуются.
🔥7
Сделал еще несколько апдейтов для FastCosyVoice, хочу немного подсветить:

Теперь можно установить проект через uv add git+, в pypi еще не знаю, имеет ли смысл публиковать, ведь код не столько библиотека, сколько тулинг под одну конкретную модель.

Все методы теперь возвращают raw PCM bytes, так удобнее, их можно сразу отправить в стрим на воспроизведение или в ответ на api запрос.

Добавлен run_instruct.py - пример с оригинальным инференсом, как модель следует инструкциям.
Скажу сразу поддерживает не много инструкций, а инструкции на китайском добавляют акцент к голосу.
Шепот не работает, если просить whisper, но работает, если просить soft voice, пример будет под постом.

Исправил съедание vram, trt + trt_llm вариант занимал 8gb, теперь 4gb. Проблема была в больших инпутах и огромном kv-cache для llm части.

Поправил проблему c fp16=False, trt llm просто не собирался.

И завел теги и релизы, чтоб можно было зафиксировать у себя конкретную версию:
https://github.com/Brakanier/FastCosyVoice/releases
🔥6🤔1
🎄 Telegram Chat Recap 2025

Кажется, в этом году стало особенно модно делать всякие рекапы и итоги года.

А ещё мне этот год запомнился таким явлением как vibe coding - хоть сейчас это уже не так круто и все стали context engineer'ами, я всё же решил совместить эти штуки.

Представляю вашему вниманию тул для создания рекапа любого вашего чата в Telegram

https://brakanier.github.io/tgrecap/

По ссылке вы можете загрузить экспорт сообщений вашего чата (инструкция внутри) и получить итоги за 2025 (любой) год.

🔒 Приватность: Все данные остаются у вас в браузере, никуда не отправляются. Код полностью открыт.


🎉 Всех с наступающим новым годом!
🔥92
Добавил поддержку ударений в FastCosyVoice

Модель понимает юникод символ ударения \u0301.
Выглядит это так: замо́к
Но поскольку расставлять его неудобно, добавил общепринятый + перед ударной гласной, он автоматом конвертируется в "акут" (название символа) после ударной гласной.

Добавил параметр auto_stress (по дефолту False).
Он использует silero-stress для расстановки ударений по всему тексту.

Но есть проблема, модель явно не обучалась с ударениями на русском языке, а генерализировала их по примерам из других языков. В итоге ситуация такая, если расставлять ударения прям в каждом слове, то становится хуже, чем без ударений совсем.
Поэтому рекомендую ставить ударения только там, где модель сама не справляется. Часто это какие-то необычные слова или имена собственные, а-ля сестры Б+ене-Г+ессерит.

Примеры с ударениями под постом в комментариях.

https://github.com/Brakanier/FastCosyVoice/releases/tag/0.1.2
🔥8
Добавил поддержку Blackwell (50xx серия) архитектуры.
Да, оказывается ее не было, и у меня не было девайса потестить, а теперь есть, но об этом будет отдельный пост.

Поправил немного бенчмарки, прогрев моделей, убрал логирование vram pytorch (не видит tensorrt/tensorrt-llm потребление, в итоге бесполезно).

Поправил автозагрузку моделей.

И главное добавил результаты бенчмарков на rtx 5060ti.
И они немного спорные, точнее спорные результаты 3090, но дело в cpu и wsl.

Все уже доступно на github:
https://github.com/Brakanier/FastCosyVoice/releases/tag/0.1.3
5👍1
LEMAS TTS

Появилась еще одна tts с поддержкой русского языка.
Построена поверх f5 с изменениями, отличия от f5 можно почитать в их paper:
https://arxiv.org/abs/2601.04233

Поддерживает 10 языков:
- Chinese
- English
- Spanish
- Russian
- French
- German
- Italian
- Portuguese
- Indonesian
- Vietnamese

Представлено 2 варианта весов, базовая модель и prosody вариант, который понимает извлеченные из референса просодии.

По качеству синтеза на русском, мне кажется хуже файтюнов f5 от misha24-10 и ESpeech.
Конечно же в комментариях можно послушать примеры.

Github:
https://github.com/LEMAS-Project/LEMAS-TTS
HF:
https://huggingface.co/LEMAS-Project/LEMAS-TTS
Демки:
https://lemas-project.github.io/LEMAS-Project/
https://huggingface.co/spaces/LEMAS-Project/LEMAS-TTS


Но это не все, в релизе есть еще такая штука - система редактирования речи.
Она позволяет заменять отдельные слова или предложения в речи.

Можно сделать свой вариант fabric details, пример в комментариях.

Github:
https://github.com/LEMAS-Project/LEMAS-Edit
HF:
https://huggingface.co/LEMAS-Project/LEMAS-Edit
Демки:
https://lemas-project.github.io/LEMAS-Project/ (внизу страницы)
https://huggingface.co/spaces/LEMAS-Project/LEMAS-Edit
🔥4
Qwen3-TTS

Сегодня дропнули веса Qwen3-TTS и там есть поддержка русского языка.

Полный список языков которые поддерживает модель:
- Китайский (Chinese)
- Английский (English
- Японский (Japanese)
- Корейский (Korean)
- Немецкий (German)
- Французский (French)
- Русский (Russian)
- Португальский (Portuguese)
- Испанский (Spanish)
- Итальянский (Italian)

Внутри 5 весов для разных целей, но интересны только 3, пойдем по порядку.

Qwen3-TTS-12Hz-1.7B-CustomVoice

Предназначена для использования со встроенными голосами (таблица голосов в комментариях), но поддерживает instruct, через который можно задать эмоции/интонацию/управлять настроением.
Есть младшая версия 0.6B параметров.

Qwen3-TTS-12Hz-1.7B-VoiceDesign

Тоже поддерживает instruct, но уже для другой цели. Позволяет создать голос по описанию.

Qwen3-TTS-12Hz-1.7B-Base

И по классике, моделька просто умеющая клонировать голос.
Ее и пощупаем первой.
Тоже есть младшая версия 0.6B параметров.


Прогретые модели (1.7B) из коробки дают RTF ~1.9 на RTX 3090. Конечно без каких-либо оптимизаций, код взят с HF, используется только, bfloat16 как в примерах.
Принимает на вход 24kHz, отдает такую же частоту.
Ударения иногда путает, расставлять не пробовал.
С длинными аудио какие-то проблемы, можно услышать в примере.

Примеры синтезов с клонированием - как всегда в комментариях.

Github:
https://github.com/QwenLM/Qwen3-TTS
HF:
https://huggingface.co/collections/Qwen/qwen3-tts
Демка:
https://huggingface.co/spaces/Qwen/Qwen3-TTS
🔥51
С формальной частью покончили, переходим к интересностям.

CustomVoice - инструкции действительно влияют на синтез, не как у CosyVoice3, а прям заметно, любые описания, писал инструкции на английском. Но только встроенные голоса, хотя они достаточно качественные.

Но самая прикольная штука - это VoiceDesign, она конечно давно есть у alibaba в API, но не думал, что мне так зайдет генерить штук 40 голосов с разным описанием и слушать что получилось.
Генерит не всегда хорошо, напоминает работу с картинками, надо сразу штуки 4 примера по описанию создавать и выбирать более подходящий.
И кажется это может очень зайти инди разработчикам, генеришь голоса для персонажей, потом клонируешь под нужные реплики.

Тонна примеров эмоций (по 2 на каждый голос) с встроенными голосами CustomVoice и еще одна тонна примеров голосов с VoiceDesign - конечно же в комментариях.
🔥4
Хайп хайп хайп

clawdbot.com
https://github.com/clawdbot/clawdbot

В общем пощупал я этого clawdbot'а и чет Hytakoe.
Возможно если поставить его прям в систему и отдать все права, то он сможет что-то сделать, но у меня по планам еще использовать этот пк, а не отдать на растерзание эйай слопу.

Поднял в докере, вроде натыкал всяких скиллов, думал они поставятся автоматом, так как есть отдельный docker-setup.sh для этого и есть онбординг, чтобы все настроить.
Но увы, скиллов не появилось, кое-как настроил телегу, добавил в чат, там попросили сделать rm -rf ./* ./.*, он уточнил, ему сказали точно сделай (раза 3), все, больше ничего не произошло. И нет, он не удалил себя, просто заигнорил.
Внутри настроил GLM, так как взял подписку на z.ai, там скидочки до конца января, не реклама, просто дешево за ведро токенов.

Попросил создать скилл, он сказал, что прочитал скилл "как создавать скиллы" и готов, что за скилл создать. После описания скилла просто проигнорил и ничего не создал.

Но он точно смог написать в файл заметку и потом прислать файл в телегу.
А еще показать файлы которые у него есть в воркспейсе. Победа.

Получается либо сидеть и долго настраивать, ставить руками скиллы, может каких-то агентов, интеграции и тд, либо не юзать.
Я думал наконец наступил век агентов и он сам себя благополучно настроит - ну в чате говорить ему что ставить, что не ставить, склонировать документацию с гита, чтобы он грепал по ней и понимал что делать, но пока увы.

Если у кого получилось завести эту чудо машину и она прям полезная, поделитесь пожалуйста кейсами в комментах.
🔥4
VibeVoice

Наконец-то добрался пощупать VibeVoice от Microsoft, флагман в open-source по размеру, а может и по качеству.

Релиз модели был еще в конце августа 2025, а уже 4 сентября 2025 репозитории с моделью удалили.

Причина:
VibeVoice is an open-source research framework intended to advance collaboration in the speech synthesis community. After release, we discovered instances where the tool was used in ways inconsistent with the stated intent. Since responsible use of AI is one of Microsoft's guiding principles, we have disabled the repo until we are confident that out-of-scope use is no longer possible.


Получилось слишком хорошо и без watermark-ов или иных вариантов защиты от deepfake.
Позже репозитории восстановили, но только с 1.5B моделью и пачкой ограничений.
Но, что попало в интернет, там и остается, поэтому есть комьюнити форк и веса 7B модели, которая нас и интересует.

В декабре 2025 еще релизнули 0.5B модель для реалтайм синтеза, с заявленным TTFB 300ms, но не дали encoder от acoustic tokenizer, только 1 голос и создать клон голоса не получится.

В итоге имеем 1.5B и 7B модели для оффлайн синтеза.

Запускаем, по классике, на RTX 3090:

Model:           vibevoice/VibeVoice-1.5B
RTF: 1.224
Audio duration: 41.867 sec
Total time: 51.249 sec

Model: vibevoice/VibeVoice-7B
RTF: 1.247
Audio duration: 38.533 sec
Total time: 48.039 sec


Из коробки получаем одинаковую скорость, перепроверил, ошибок не нашел.
По качеству 1.5B явно хуже 7B, дальше гонял только 7B модель.

Заметил, что по дефолту включен flash attention, но его не было в зависимостях, падало на sdpa, поставил, немного лучше - RTF: 1.0504.
Попробовал torch.compile, ничего не дало, убрал.

Идем искать и пробовать кванты:

Results (Full precision bfloat16):
Generation time: 11.20s
Audio duration: 10.67s
RTF: 1.0504
Peak VRAM allocated: 17.50 GB

Results (8-bit INT8 quantization - fabio):
Model: FabioSarracino/VibeVoice-Large-Q8
Generation time: 70.05s
Audio duration: 17.60s
RTF: 3.9802
Peak VRAM allocated: 11.01 GB

Results (8-bit INT8 quantization):
Model: marksverdhai/vibevoice-7b-bnb-8bit
Model load time: 125.74s
Generation time: 42.81s
Audio duration: 13.33s
RTF: 3.2105
Peak VRAM allocated: 11.44 GB

Results (4-bit NF4 quantization):
Model: marksverdhai/vibevoice-7b-bnb-4bit
Model load time: 6.28s
Generation time: 28.47s
Audio duration: 15.20s
RTF: 1.8731
Peak VRAM allocated: 8.70 GB


Кванты динамические, да они съедают меньше VRAM, но слои восстанавливают точности при генерации, это накладные расходы, получаем замедление.
Если у вас мало VRAM, 12-16 gb - это вариант, но 4-bit квант уже заметно сказывается на качестве, не советую.

Посмотрел еще раз примеры и README, есть возможность генерировать сразу до 4-х разных спикеров, значит у нас есть некий батчинг из коробки и нам ничего не мешает заменить 4 спикера на 4 одинаковых спикера.

Идем тестить:

BATCHING SUMMARY (Full precision bfloat16)
Number of samples: 4
Sequential time: 19.08s
Batched time: 8.63s
Speedup: 2.21x
Throughput improvement: +140.4%
VRAM increase: +1.6%
Sequential throughput: 0.80x realtime
Batched throughput: 1.91x realtime


Получается для оффлайн синтеза больших текстов нет смысла синтезировать весь текст или чанки одним спикером. Просто бьем текст на 4 чанка, подаем на вход 4 раза один и тот же голос и получаем результат гораздо быстрее. Останется только склеить 4 сэмпла.
Кванты в батчинге посыпались, у меня почему то именно во втором сэмпле на выходе артефакты в виде музыки или каких-то посторонних шумов.

Еще что интересно, даже если подавать в батчинг тексты разной длинны, он все равно хорошо отрабатывает, как по скорости, так и по качеству - лог с подробностями будет в комментах.
🔥6💩1
Качество синтеза достойное, можете сами послушать. Примеры, как всегда, в комментариях под постом.
Ударения пока не проверял.
Минус лишь в размере, не в каждую видеокарту влезет.

Есть еще реалтайм реализация от Tensor Banana, подробности в посте:
https://t.me/tensorbanana/1236
Ее не щупал, так как не рассматриваю VibeVoice для реалтайм задач.

Оригинальный github:
https://github.com/microsoft/VibeVoice
Github комьюнити форка (вам нужен именно это репозиторий):
https://github.com/vibevoice-community/VibeVoice
HF от комьюнити со всеми весами:
https://huggingface.co/vibevoice
HF кванты:
https://huggingface.co/marksverdhai/vibevoice-7b-bnb-8bit
https://huggingface.co/FabioSarracino/VibeVoice-Large-Q8
🔥4👍3💩1
Немного интерактива 😏
Какая запись сгенерена нейронкой? (ответ завтра вечером)
Final Results
43%
1
22%
2
35%
Обе
Вас обманули и роботы захватят мир (или только ed tech), правильный ответ "Обе"
1 - cosy voice
2 - vibe voice
5🔥31🤯1