Полный список всех актуальных 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
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
Дополнение к прошлому посту, модели, которые теоретически скоро появятся:
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, без поддержки русского.
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 для расстановки ударений.
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
CosyVoice 3
Выше я писал что возможно скоро дропнут CosyVoice 3 и вот этот день настал
https://t.me/xVibeNot/29
Что получаем:
- 9 языков, русский из коробки
- Нормализация текста, умеет в цифры и символы (надо смотреть подробнее как это будет работать)
- Bi-Streaming - можно подавать текст на вход частями/чанками, на выходе получаем аудио по мере генерации. Это дает минимальную задержку до первого чанка
- Поддержка инструкций - скорость, громкость, эмоции, диалекты
- Вроде еще код обучения дропнули
Github:
https://github.com/FunAudioLLM/CosyVoice
HF:
https://huggingface.co/FunAudioLLM/Fun-CosyVoice3-0.5B-2512
Демки (русских не много):
https://funaudiollm.github.io/cosyvoice3/
Выше я писал что возможно скоро дропнут CosyVoice 3 и вот этот день настал
https://t.me/xVibeNot/29
Что получаем:
- 9 языков, русский из коробки
- Нормализация текста, умеет в цифры и символы (надо смотреть подробнее как это будет работать)
- Bi-Streaming - можно подавать текст на вход частями/чанками, на выходе получаем аудио по мере генерации. Это дает минимальную задержку до первого чанка
- Поддержка инструкций - скорость, громкость, эмоции, диалекты
- Вроде еще код обучения дропнули
Github:
https://github.com/FunAudioLLM/CosyVoice
HF:
https://huggingface.co/FunAudioLLM/Fun-CosyVoice3-0.5B-2512
Демки (русских не много):
https://funaudiollm.github.io/cosyvoice3/
🔥1
Особенности CosyVoice3
Главные преимущества модели в качестве, это управление синтезом через промпт и специальные токены для кашля, смеха, вздохов и тд.
Вместе с текстом для синтеза в модель надо подавать промпт, в формате:
где instruction и есть этот промпт для управления стилем
В токенайзер добавлены специальные токены:
Bi-stream из анонса пока не работает с 3 версией, только с 2, но вероятно допилят.
Что касается скорости и реалтайма - будет отдельный пост.
Главные преимущества модели в качестве, это управление синтезом через промпт и специальные токены для кашля, смеха, вздохов и тд.
Вместе с текстом для синтеза в модель надо подавать промпт, в формате:
{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
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% за счет нормального распараллеливания можно найти.
Если взять инференс из коробки, то он получается не особо быстрый и не влезает в реалтайм:
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
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
Велкам пощупать - ишьюсы, пул реквесты, звезды приветствуются.
Выше я писал как получилось разогнать 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
Велкам пощупать - ишьюсы, пул реквесты, звезды приветствуются.
GitHub
GitHub - Brakanier/FastCosyVoice: Fast CosyVoice3 inference with tensorRT and tensorRT-LLM
Fast CosyVoice3 inference with tensorRT and tensorRT-LLM - Brakanier/FastCosyVoice
🔥7
Сделал еще несколько апдейтов для FastCosyVoice, хочу немного подсветить:
Теперь можно установить проект через uv add git+, в pypi еще не знаю, имеет ли смысл публиковать, ведь код не столько библиотека, сколько тулинг под одну конкретную модель.
Все методы теперь возвращают raw PCM bytes, так удобнее, их можно сразу отправить в стрим на воспроизведение или в ответ на api запрос.
Добавлен
Скажу сразу поддерживает не много инструкций, а инструкции на китайском добавляют акцент к голосу.
Шепот не работает, если просить whisper, но работает, если просить soft voice, пример будет под постом.
Исправил съедание vram, trt + trt_llm вариант занимал 8gb, теперь 4gb. Проблема была в больших инпутах и огромном kv-cache для llm части.
Поправил проблему c fp16=False, trt llm просто не собирался.
И завел теги и релизы, чтоб можно было зафиксировать у себя конкретную версию:
https://github.com/Brakanier/FastCosyVoice/releases
Теперь можно установить проект через 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 (любой) год.
🎉 Всех с наступающим новым годом!
Кажется, в этом году стало особенно модно делать всякие рекапы и итоги года.
А ещё мне этот год запомнился таким явлением как vibe coding - хоть сейчас это уже не так круто и все стали context engineer'ами, я всё же решил совместить эти штуки.
Представляю вашему вниманию тул для создания рекапа любого вашего чата в Telegram
https://brakanier.github.io/tgrecap/
По ссылке вы можете загрузить экспорт сообщений вашего чата (инструкция внутри) и получить итоги за 2025 (любой) год.
🔒 Приватность: Все данные остаются у вас в браузере, никуда не отправляются. Код полностью открыт.
🎉 Всех с наступающим новым годом!
🔥9❤2
Добавил поддержку ударений в FastCosyVoice
Модель понимает юникод символ ударения
Выглядит это так:
Но поскольку расставлять его неудобно, добавил общепринятый
Добавил параметр auto_stress (по дефолту False).
Он использует silero-stress для расстановки ударений по всему тексту.
Но есть проблема, модель явно не обучалась с ударениями на русском языке, а генерализировала их по примерам из других языков. В итоге ситуация такая, если расставлять ударения прям в каждом слове, то становится хуже, чем без ударений совсем.
Поэтому рекомендую ставить ударения только там, где модель сама не справляется. Часто это какие-то необычные слова или имена собственные, а-ля
Примеры с ударениями под постом в комментариях.
https://github.com/Brakanier/FastCosyVoice/releases/tag/0.1.2
Модель понимает юникод символ ударения
\u0301.Выглядит это так:
замо́кНо поскольку расставлять его неудобно, добавил общепринятый
+ перед ударной гласной, он автоматом конвертируется в "акут" (название символа) после ударной гласной.Добавил параметр auto_stress (по дефолту False).
Он использует silero-stress для расстановки ударений по всему тексту.
Но есть проблема, модель явно не обучалась с ударениями на русском языке, а генерализировала их по примерам из других языков. В итоге ситуация такая, если расставлять ударения прям в каждом слове, то становится хуже, чем без ударений совсем.
Поэтому рекомендую ставить ударения только там, где модель сама не справляется. Часто это какие-то необычные слова или имена собственные, а-ля
сестры Б+ене-Г+ессерит.Примеры с ударениями под постом в комментариях.
https://github.com/Brakanier/FastCosyVoice/releases/tag/0.1.2
🔥8