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

@xVibeNot

https://t.me/+WpK3hi-LL8BjYzMy - чатик
Download Telegram
Channel created
Channel photo updated
И так...

Кажется пришла пора завести канал для всякого рода заметок.
Первый пост, и я абсолютно не знаю что тут написать, начнем с банального:
- Backend разработчик
- Пишу в основном на python
- Лет 6-7 в индустрии
- Самоучка, по образованию строитель
- В 14 лет снимал летсплеи по майнкрафту на ютуб))

О чем пойдет речь

Конечно же AI хайп не прошел мимо меня, от части о нем и будут первые посты. А точнее о пет проектах и AI/ML в них.
Стич на аватарке не просто так, он хорошо описывает подход "а-ля пощупать" - влезаем, разбрасываем все в стороны, завелось - хорошо, не завелось - ну что ж, пойдем разнесем следующую "комнату".

Дисклеймер:
Я вообще не ML-щик, и не ручаюсь за свои подходы и поделки, если тут будут проходить мимо настоящие ML инженеры, всегда рад советам.
🔥32👍2
Начнем

AI, ML, MCP, Cursor, Claude Code, модельки, бенчмарки, агенты, хайп, хайп, хайп - последний год проходит примерно так. Конечно пробуешь, щупаешь, читаешь как оно работает (ну хотя бы как применять).

И где-то в августе меня посещает навязчивая идея, собрать полный пайплайн в виде stt - llm - tts.
В какой вид он завернут, расскажу/покажу позже)
А пока надо понять что это за сокращения.


STT или ACR

Speech-to-text или Automatic Speech Recognition - из названия в целом понятно, это про распознавание речи.
То, что вы читаете под голосовухами в тг, если есть премиум.

Самая популярная модель тут - Whisper от OpenAI.
Моделька опенсорсная, есть куча модификаций на HF и туллинга на Github.
К примеру:
https://github.com/m-bain/whisperX - один из интересных тулов, внутри VAD, диаризация (разбиение) спикеров и пачка оптимизаций.


LLM

Large Language Model - самая хайповая часть.
Весь мир изучает, обучает, разбирает. Встретить можно пощупав ChatGPT или DeepSeek, тот самый искусственный интеллект, думаю все уже слышали.
Есть как огромные, которые в изначальном виде весят 1 терабайт, так и маленькие, размером в 1 гиг.
Продуктов поверх LLM тонна, материалов к изучению еще больше.


TTS

Text-to-speech - синтез речи, способ получить из текста звук. Вероятно вы слышали о ElevenLabs, они предоставляют один из самых качественных синтезов.

Вот тут и кроется проблема, модели опенсорсные есть, но поддерживающих русский язык не так уж и много, а умеющих в реалтайм еще меньше.

Все модели собрать и минимально рассмотреть постараюсь в отдельном посте, тут думаю стоит упомянуть народную XTTSv2.
Вышла еще в 2023 году (судя по коммитам на HF) и на сегодня морально устаревшая, но все еще показывает хорошие результаты, как минимум в скорости генерации.

Официальный репозиторий заброшен, но есть форк который поддерживают:
https://github.com/idiap/coqui-ai-TTS
Ну и лицензия модели не позволяет использовать ее в коммерческих целях.
👍3🔥3🌭1👨‍💻1
GigaChat 3 open-source

СБЕР дропнули в open-source 2 модели:
- Ultra Preview (702B-A36B)
- Lightning (10B-A1.8B)

Особенности:
- обучены с нуля на своем корпусе данных
- архитектуру взяли от DeepSeekV3
- MoE - Mixture-of-Experts
- MTP - Multi-Token Prediction
- MLA - Multi-Head Latent Attention
- это не reasoning модели, но умеют на базовом уровне
- лицензия MIT

GigaChat3-702B-A36B-preview - огромная модель
GigaChat3-10B-A1.8B - маленькая и быстрая, вероятно можно использовать в связке stt - llm - tts.
В бенчмарках скорости пишут TTFT (Time-to-First-Token) = 31 ms (vLLM v0.11.0, dtype bfloat16, batch_size=1), но не указано на каких картах крутили.

Github с обзором:
https://github.com/salute-developers/gigachat3

HF:
https://huggingface.co/collections/ai-sage/gigachat3
1👍3🔥2
Чтобы построить stt - llm - tts пайплайн/агента, стоит рассмотреть некоторые метрики.
Обычная скорость моделей распознавания, генерации токенов и синтеза речи нам особо ничего не дает, больше всего нас интересует latency (задержка, сколько юзер ждет ответа), именно она влияет на опыт больше всего.


Ждем ответа

Рассмотрим что должно происходить в пайплайне для получения ответа в самом простом виде:
- Речь
- Транскрибирование
- Запрос в LLM
- Синтез речи
- Воспроизведение

Если мы построим такой пайплайн, то юзер будет ждать ответа по 5-10 секунд (и больше) после того как закончил говорить, что нам абсолютно не подходит.
Тут есть места, которые мы можем улучшить.


STT/ASR

Во-первых, чтобы понять когда юзер закончил говорить мы используем VAD (Voice Activity Detection), и если пауза достаточно большая (0.5-1s к примеру) - значит речь закончилась и надо приступать к генерации ответа.
Но, нам не обязательно просто ждать пока человек договорит, мы в это время можем транскрибировать часть аудио.
Можно взять модель t-one:
https://github.com/voicekit-team/T-one
Это стриминг STT/ASR модель, принимает аудио чанками по 300ms, возвращает текст. Так к моменту окончания речи, большая часть аудио уже будет транскрибирована и останутся только последние чанки.


LLM

Тут мы ничего не можем сделать на входе, так как для генерации ответа нам нужен весь контекст (весь текст из STT/ACR). Но, чтобы не ждать полного ответа можно вызывать llm в режиме stream, llm будет возвращать часть токенов/текста по мере генерации. Это поможет нам на следующем этапе.


TTS

Тут похожая ситуация, нам нельзя ждать генерации полной аудио дорожки, так как это долго, значит нам нужна модель которая умеет отдавать синтезированное аудио чанками и со скоростью выше, чем аудио воспроизводится.
Ранее упомянутая XTTSv2 вполне с этим справляется.

Плюс, раз мы не ждем полного ответа llm, мы можем начать генерацию речи раньше, нам надо только определить минимальное кол-во текста для генерации, это зависит от модели и качества модели синтеза.

Работает это примерно так:
Мы собираем стрим из LLM, как только накопили 1 предложение, отправляем на синтез. Разбивать текст можно по предложениям или по кол-ву символов. Лучший результат я получал комбинируя эти 2 подхода, разбивал текст по предложениям, но в районе 150-160 символов (xtts имеет ограничение, максимум 180 символов для синтеза).

Итоговый пайплайн должен выглядеть примерно так:
- Начало речи
- Начало транскрибирования
- Конец речи - тут юзер начинает ждать
- Конец транскрибирования (минимальная задержка после конца речи)
- Начало запроса в LLM
- Начало синтеза речи
- Начало воспроизведения - тут получает первый ответ
- Конец запроса в LLM
- Конец синтеза речи
- Конец воспроизведения

Таким образом при получении минимального кол-ва аудио для воспроизведения, мы сразу даем ответ, а пока юзер слушает, мы генерируем оставшуюся часть.
👍2🔥2
Виды TTS моделей

Разберем text-to-speech модели, чтобы хоть немного представлять, как они устроены и их отличие.

И так, можно грубо разделить модели на:
- Авторегрессивные - предсказывают каждый следующий аудио фрагмент (спектрограмму или аудио-токен) на основе предыдущих, например: XTTS
- Неавторегрессивные - генерируют всю последовательность сразу или крупными батчами, без связи с предыдущим токеном/шагом, что существенно ускоряет инференс, например: F5, VITS
- Гибридные/Особые дизайны - встречаются архитектуры, использующие одновременно элементы авторегрессии и неавторегрессии (DualAR), например: Fish-Speech

Сама модель состоит из разных модулей, обычно их можно запустить и использовать отдельно.
Рассмотрим на примере той же XTTS (схема архитектуры в комментарии).
Основные модули:
- VQ-VAE - эта штука кодирует мел-спектрограмму в аудио токены.
- Perciever conditioner - делает нечто похожее, но отдает фиксированное кол-во ембеддингов, содержащих особенности референсного голоса, добавлен для улучшения клонирования голоса.
- BPE tokenizer - токенайзер, превращает текст в ембеддинги.
- GPT-2 - главный гость программы, получает все прошлое на вход и последовательно предсказывает аудио токены. Эта часть и есть трансформер, принцип работы такой же как у ChatGPT и прочих штук, которые вы вероятно использовали, только вместо текста работает с аудио-токенами.
- HiFi-GAN - так называемый вокодер, берет результаты от GPT-2 и ембеддинги спикера и превращает это в аудио.

Итоговый путь такой: аудио + референс + нужный текст -> мел-спектрограммы -> аудио токены -> предсказываем продолжение в аудио токенах -> декодируем аудио токены в звук.

Модели часто выходят с paper, в котором описаны подходы и решения, по классике, вот XTTS paper:
https://arxiv.org/abs/2406.04904
https://quickarxiv.org/abs/2406.04904 - если добавить quick перед доменом, то попадете в интерфейс с LLM, где можно задавать вопросы по тексту.

Схема примерно общая, но с разными деталями внутри. Некоторые модели не используют мел-спектрограммы, а используют нейро кодеки для кодирования сырого аудио и декодирования после предсказания.
🔥2
Духота...
😁1
Мы опубликовали стабильный, быстрый, качественный и доступный синтез для 20 языков России и СНГ

0️⃣ Популярные языки из 🇷🇺🇺🇦🇺🇿🇰🇿🇦🇿🇹🇯🇧🇾🇬🇪🇰🇬🇦🇲;
1️⃣ Всего 20 языков России и стран СНГ, всего 95 голосов;
2️⃣ Модели компактные и быстрые, как наши прошлые релизы;
3️⃣ Поддержка SSML, генерация аудио с SR 8000, 24000, 48000;
4️⃣ Два типа моделей - base под лицензией MIT на наших данных и ext на данных сообщества;
5️⃣ Остались непокрытыми языки Дагестана и ЧР, если хотите помочь с добавлением этих языков пишите сюда.

⭐️ Репозиторий
⬆️ Статья на Хабре
🔥1
После блокировки huggingface появилась проблема - скачивание моделей.
И вроде все знают как ее решать, надо просто включить vietnamese pho noodles и все заработает, но если ты работаешь из под wsl, то начинаются проблемы.

Мой сетап:
- win 10
- wsl2 ubuntu
- amnezia

Что я попробовал:
- купить прокси
- прокинуть wsl через амнезию виндовую
- добавлял хосты huggingface (cdn в том числе) в запрет
- пытался мобильный с vpn раздавать
- подрубал зеркало (hf_mirror) (сработало для 1 модели из 4)
- пошел качать с modelscope (китайская алтернатива), но код сильно завязан на HF

Все это у меня не получилось нормально завести.
Помогло поставить ameziawg-go в wsl:
https://github.com/amnezia-vpn/amnezia-client/issues/850

Из коробки тоже не завелось, решением было добавить в wg0.conf

[Interface]
Table = off


postUp и preDown

PostUp = ip route add YOUR_VPN_ENDPOINT_IP/32 via YOUR_ETH0_GATEWAY_IP dev eth0; ip route del default via YOUR_ETH0_GATEWAY_IP dev eth0; ip route add default dev wg0

PreDown = ip route del default dev wg0; ip route add default via YOUR_ETH0_GATEWAY_IP dev eth0; ip route del YOUR_VPN_ENDPOINT_IP/32 via YOUR_ETH0_GATEWAY_IP dev eth0


YOUR_VPN_ENDPOINT_IP - IP адрес вашего VPN сервера (например, 203.0.113.1)
YOUR_ETH0_GATEWAY_IP -  IP адрес шлюза вашей локальной сети (например, 192.168.1.1). Узнать можно командой: ip route | grep default

И на следующий день это все развалилось и перестало работать)

В итоге сработал способ прокинуть трафик из wsl через amezia на win. Но с небольшой особенностью:
https://github.com/deanmcniven/wsl2-vpn-support

При включении VPN и WSL надо стартовать powershell скрипт, который добавит роуты.
А так же добавить dns вашего vpn в /etc/resolv.conf:

nameserver 1.1.1.1
nameserver 1.0.0.1


После этого у вас останется 1 проблема, это не сработает для докера, но решить ее можно указав:
--network=host

С одной стороны неудобно, но пока такой костыльный вариант меня вполне устраивает, и так потерял тонну времени чтобы это завелось.
👍1🔥1
Nari Labs выпустили Dia2 - первую open-source TTS-модель со стриминговой генерацией в реальном времени. Не нужен полный текст, начинает синтезировать с первых слов.
Две версии: 1B и 2B параметров, полностью открыты для коммерческого использования.
Умеет только в английский язык, но интересен сам факт публикации такой модели.

Пост:
https://www.communeify.com/en/blog/dia2-opensource-low-latency-natural-english-dialogue-ai/
Github:
https://github.com/nari-labs/dia2
🔥1
VibeVoice-Realtime-0.5B

Не много прошло времени от первого open-source релиза Dia2-2B с поддержкой чанков текста на входе и вот.

Microsoft представила VibeVoice-Realtime-0.5B — новую модель для потокового синтеза речи.
Она поддерживает только английский язык и обеспечивает задержку примерно 0.3 секунды при старте генерации.
0.5 млрд параметров, что делает её значительно легче предыдущих версий (1.5B и 7B).
Клонировать голос не может, есть несколько голосов на выбор, видео демки:
линк

Веса тут:
https://huggingface.co/microsoft/VibeVoice-Realtime-0.5B
Код тут:
https://github.com/microsoft/VibeVoice
🔥1
Полный список всех актуальных open-source TTS, которые умеют в синтез на русском языке.

XTTS v2
https://github.com/idiap/coqui-ai-TTS
Клонирование голоса:
Реалтайм:
RTF (Realtime factor): 0.3-0.6 на rtx 3090

Модель может в ru изначально, но есть и файнтюны:
https://huggingface.co/tensorbanana/xttsv2_banana
https://huggingface.co/NeuroDonu/RU-XTTS-DonuModel


F5
https://github.com/SWivid/F5-TTS
Клонирование голоса:
Реалтайм:
RTF: 0.14 на rtx 3090, 0.08 на rtx 5090 при nfe=16
TTFB / Latency: > 1 сек
RU файнтюн:
https://huggingface.co/Misha24-10/F5-TTS_RUSSIAN
Демо:
https://misha24-10.github.io/Misha24-10/

ESpeech (та же F5)
https://huggingface.co/ESpeech
Относительно новый файнтюн F5, представлено несколько весов.
Мне больше всего зашли RL 1 и SFT 95k.
Релиз пост автора (внутри демо):
https://t.me/den4ikresearch/117
Доклад от автора про датасет и модели:
https://www.youtube.com/watch?v=B6kO5qVhMnw


Chatterbox
https://github.com/resemble-ai/chatterbox
Клонирование голоса:
Реалтайм:
RTF: не тестил
Демо:
https://resemble-ai.github.io/chatterbox_demopage/
HF space:
https://huggingface.co/spaces/ResembleAI/Chatterbox-Multilingual-TTS

Streaming реализация без поддержки мультиязычности:
https://github.com/davidbrowne17/chatterbox-streaming


VibeVoice
https://github.com/microsoft/VibeVoice
Клонирование голоса:
Реалтайм:
RTF: >1 для 7B модели

Большая модель, умеет клонировать голос, но о реалтайме с большой 7B моделью в базовом виде можно забыть.
HF:
https://huggingface.co/vibevoice/VibeVoice-7B
https://huggingface.co/vibevoice/VibeVoice-1.5B
Реалтайм реализация и подробности от Tensor Banana:
https://t.me/tensorbanana/1236


FishSpeech
https://github.com/fishaudio/fish-speech
Клонирование голоса:
Реалтайм:
RTF: 0.14 на rtx 4090 (по заявлению от авторов), не тестил

Из коробки очень медленный, стриминг навайбкодить не вышло.

HF:
https://huggingface.co/fishaudio
https://huggingface.co/fishaudio/fish-speech-1.5


Silero
https://github.com/snakers4/silero-models
Клонирование голоса:
Реалтайм:
RTF: не тестил

Поддерживает много СНГ языков и акценты. Умеет в SSML.


Piper TTS
https://github.com/OHF-Voice/piper1-gpl
Клонирование голоса:
Реалтайм:
RTF: не записал

Очень маленькая и шустрая модель, умеет в русский, но не умеет клонировать голос. Пробовал завести с RVC, но достичь реалтайма не получилось (из-за RVC).
Демо:
https://rhasspy.github.io/piper-samples/demo.html
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥1
xVibeNot pinned «Полный список всех актуальных open-source TTS, которые умеют в синтез на русском языке. XTTS v2 https://github.com/idiap/coqui-ai-TTS Клонирование голоса: Реалтайм: RTF (Realtime factor): 0.3-0.6 на rtx 3090 Модель может в ru изначально, но есть и файнтюны:…»
Дополнение к прошлому посту, модели, которые теоретически скоро появятся:

Orpheus-TTS
https://github.com/canopyai/Orpheus-TTS
Клонирование голоса:
Реалтайм:
RTF: не тестил

Пишут что хороший реалтайм, русский не поддерживает.
Готовится файнтюн:
https://huggingface.co/papacliff/orpheus-3b-0.1-ft-ru
Есть готовый сетап под low latency streaming
https://github.com/taresh18/orpheus-streaming

CosyVoice 3
https://github.com/FunAudioLLM/CosyVoice
Демо:
https://funaudiollm.github.io/cosyvoice3/
Но веса не публиковали, доступна только CosyVoice 2, без поддержки русского.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Перейдем к практике, вчера сел и финально пощупал основные TTS модельки, все гонял на rtx 3090, ниже результаты.


Fish Speech
А именно openaudio-s1-mini:
https://huggingface.co/fishaudio/openaudio-s1-mini
Накурсорить стриминг инференс не получилось, все вышло далеко от реалтайма, да и качество полученного аудио сомнительное.


Chatterbox
Подход тот же, берем основной репозиторий, отправляем курсор писать стриминг реализацию (opus-4.5).
В данном случае есть форк со стримингом, но он для англ модели, а нам нужна мультиязычная.
Стриминг завелся, но очень медленный, предполагаю какая-то часть осталась на cpu, хотя перепроверял несколько раз.

Немного цифр:
Time to first chunk: 10837.61 ms
Total generation time: 20.753s
Total audio duration: 5.943s
RTF (Real-Time Factor): 3.492

Качество на выходе странное, с акцентом.


XTTS v2
Чекпоинт брал от бананы:
https://huggingface.co/tensorbanana/xttsv2_banana
Тут все отлично завелось и работает, инференс под стриминг апи писал давно и сюрпризов не было.
TTFB: 300-350ms
RTF: 0.3

Проблема одна, качество, достаточно шумное аудио на выходе.


F5 / ESpeech
Есть несколько файнтюнов на русский язык, я взял веса от ESpeech SFT 95K:
https://huggingface.co/ESpeech/ESpeech-TTS-1_SFT-95K

Для быстрой генерации выставляем nfe_steps=16
Получаем:
RTF: 0.14
TTFB: 1.8s
А все потому что диффузионная моделька генерит сразу полное аудио, предыдущие могут отдавать чанки по мере генерации.
Как вариант можно ограничить текст по длине для первого шага, чтобы быстрее получить ответ, и пока воспроизводится первый кусок, успеть сгенерировать последующие. Но скорее всего минимальное время ожидания будет около 1 секунды.

Но есть и плюсы, лучшее качество среди всех вариантов.
А также поддержка ruaccent для расстановки ударений.
1🔥3👍1
Audio
Послушать примеры для сравнения
🔥3