Ориентировались на создание полностью воспроизводимой TTS-системы (открытые данные, код, веса), сопоставимой с проприетарными аналогами.
Raon-OpenTTS-Pool, крупнейший открытый мультиисточниковый набор для TTS, включает 615K часов английской речи и 240M сегментов (из 10 открытых датасетов и обработанного YouTube Commons). Подмножество Raon-OpenTTS-Core (510K часов, 194M сегментов) отфильтровали по WER (ошибка транскрипции), DNSMOS (качество звука) и Speech Ratio (доля речи), удаляя нижний 15-й процентиль по комбинированному рангу. Бенчмарк устойчивости Raon-OpenTTS-Eval (6K пар промт-текст) из 12 датасетов разбит на 4 акустических режима, таких как Clean (чистая речь), Noisy (шумная), Wild (спонтанная и реальная) и Expressive (эмоциональная).
Фильтрация (15% комбинированная) дала наилучший средний ранг по сравнению с отсутствием фильтрации или агрессивной (50%), при этом мультиисточниковый пул при равном объёме (47K ч) превосходит одиночный Emilia по WER и SIM, а добавление YouTube-Commons улучшает WER и SIM в большинстве режимов, кроме Noisy.
Вклад состоит из крупнейшего открытого мультиисточникового речевого корпуса (615K ч), эффективного пайплайна фильтрации для TTS, бенчмарка устойчивости Raon-OpenTTS-Eval и открытых весов с кодом конкурентоспособных TTS-моделей.
В результате Raon-OpenTTS-1B достиг WER 1.78% (2-е место среди открытых моделей) и SIM 0.749 (1-е место) на Seed-TTS-Eval, превосходя все открытые аналоги, уступая лишь Qwen3-TTS и CosyVoice 3. Кроме того, Raon-OpenTTS-1B показал лучшую разборчивость и схожесть на сложном подмножестве с WER 6.15% (1-е) и SIM 0.775 (1-е). Также на Raon-OpenTTS-Eval у Raon-OpenTTS-1B лучший средний WER (2.81) и SIM (0.695) по всем режимам, однако он особенно силён в Wild (5.61 WER против 136.03 у F5-TTS). По субъективным оценкам Raon-OpenTTS-1B владеет лучшим общим CMOS (предпочтение по натуральности) и лучшим SMOS (схожесть с диктором), составляющий 3.70.
Путём сжатия семантического кодека частоту кадров уменьшили с 50 до 25 Гц, последовательности сократили вдвое, удешевив обучение и вывод. В архитектуре S2M заменили U-DiT на требующий меньше параметров и быстрее генерирующий мел-спектрограммы Zipformer. Многоязычную поддержку китайского, английского, японского, испанского и арабского воплотили тремя стратегиями, опираясь на выравнивание с учётом границ, конкатенацию на уровне токенов и генерацию на основе инструкций. RL оптимизировали посредством GRPO для пост-обучения T2S с наградой по WER (ASR) и сходству диктора, что привело к улучшенному произношению и естественности.
Данные извлекли из примерно 100 тыс. часов речи (zh 30k, en 25k, ja 42k, es 22.9k, ar 20k) и 135 ч эмоциональных данных.
В результате на zero-shot средний WER 6.75 и SS 73.18, но WER после RL уже 6.00 и SS 73.63. Межъязыковые (китайский промт) способности добиваются среднего WER 6.22 и SS 68.62, но после RL уже 6.17 и 70.20. По сходству эмоций и MOS на ja/es/ar она выше CosyVoice 3 с zero-shot точностью эмоций zh 0.713 (против 0.467) и en 0.673 (против 0.567) на CV3. На RTF T2S скорость равняется 0.119 (было 0.232) и S2M 0.017, что суммарно в 2.28 раза быстрее IndexTTS 2.
Higgs Ultimate — русская портативная нейросеть для синтеза и клонирования речи на движке Higgs Audio v3. Работает на CUDA (NVIDIA), полностью офлайн, без Python-окружения.
На днях показывал в канале Higgs Audio v3 Studio — нативный десктоп на Rust+Tauri, который гоняет TTS-движок Higgs Audio v3 напрямую через CUDA-DLL, без единого питон-окружения. Мне понравилась настолько, что я не просто поставил её себе, а разобрал на запчасти и пересобрал под себя: сделал полностью русскую и по-настоящему портативную версию — Higgs Ultimate. Всё (модели, голоса, движок, настройки) лежит рядом с .exe: удалил папку — не осталось ни следа в системе, никаких записей в профиле пользователя. Заодно поправил то, что мешало в оригинале, и дотащил несколько фич, которых там не было. Пользуюсь теперь этой сборкой вместо оригинала.
• Полностью портативная — оригинал пишет в профиль пользователя, здесь всё живёт рядом с .exe • Русский интерфейс с переключением на лету (плюс английский) • Распознавание речи заменено с Whisper на Parakeet (NVIDIA parakeet-tdt-0.6b-v3) — мультиязычный, сам определяет язык, включая русский, крутится на CPU • Запись голоса с микрофона прямо в приложении — выбор устройства, индикатор уровня, Parakeet сразу расшифровывает запись • Пакетный режим — генерация пачки клипов из списка строк или .txt-файлов • Нормализация громкости в мультиспикере — реплики разных дублей приводятся к единому уровню (LUFS/EBU R128) • Стартовый войспак голосов в один клик • Плюс все возможности оригинала: клонирование голоса по референсу, продолжение речи, мультиспикерные диалоги, локальный API
Ниже — короткие демки основных режимов: обычный TTS, клонирование голоса, продолжение речи и мультиспикер.
Установка: скачать портативную сборку из Releases → распаковать в папку без кириллицы → запустить Higgs Ultimate.exe → нажать «Скачать DLL движка», затем скачать модель TTS. Перед первым запуском нужно поставить в систему свежий драйвер NVIDIA, CUDA Toolkit 13.x и Visual C++ Redistributable x64 — без них движок падает с ошибкой о недостающих DLL.
Нативное Windows/Linux-приложение на Rust + Tauri 2, которое гоняет портированный C++/CUDA-движок модели Higgs TTS 3 (Boson AI) напрямую — без единого Python-окружения под капотом. Большинство локальных TTS-тулз тянут за собой conda/venv и кучу зависимостей, здесь же Tauri UI напрямую дёргает Rust-команды, а Rust через libloading грузит нативную DLL с движком (ggml + whisper.cpp внутри).
Что умеет: обычный TTS, zero-shot клонирование голоса по референсу, продолжение существующей речи (Continue Speech) и мультиспикерные диалоги — с live-стримингом аудио прямо во время генерации, авто-транскрипцией референсов через Whisper и Speaker Gallery для переиспользуемых голосов с ZIP-экспортом/импортом.
Есть встроенный локальный OpenAI-совместимый API со стримингом NDJSON — можно дёргать генерацию скриптами. Полный контроль параметров: temperature, top-k/top-p, seed, emotion, style, speed, pitch. Экспорт в WAV/MP3, телеметрия видеокарты в реальном времени.
Требования: NVIDIA GPU с CUDA 13, от 8 ГБ VRAM (Q4_K_M) до 16 ГБ (BF16). AMD, Mac и CPU-only — мимо. Готовые сборки под Windows (.exe/.msi) и Linux (.deb/AppImage).
Существует новая открытая омни-модальная модель Ex-Omni (https://huggingface.co/tencent/Ex-Omni), объединяющая понимание речи/текста и генерацию речи с синхронизированной 3D-анимацией лица (ARKit blendshape).
Несоответствие разреженных семантических представлений LLM и плотной временной динамики мимики вызывает проблему.
Решением оказался двухэтапный подход, при котором используется генератор речевых единиц, осведомлённый о шаблонах мимики, и декодер шаблонов мимики, где дискретные речевые юниты служат временным каркасом, а скрытые состояния несут лицевые признаки.
Механизм TQGF асимметрично совершает вливание семантики через управляемое перекрёстное внимание (токены речи как запрос).
База данных InstructS2SF‑1200K содержит 1000 K синтетических пар "текст в речь и лицо" и 200 K диалоговых "речь в речь и лицо", полученные с помощью псевдо-разметки лица от Audio2Face‑3D.
Обучение прошло в три этапа, начиная с выравнивания речи, продолжаясь совместным предобучением речи и шаблонов мимики и завершаясь диалоговой адаптацией.
В результате качество ответов (VoiceBench) на уровне Qwen2.5‑Omni, лучшая аудиовизуальная синхронизация (SyncNet, низкие значения Sync-D и высокие Sync-C) и меньшая задержка генерации лица, чем у каскадных связок (EmoTalk, UniTalker), причём TQGF критичен для синхронизации.
🔌 Совместимость с RTX 3090 / 4090 — изоляция процессов llama.cpp и PyTorch через фоновый демон-процесс (director_daemon.py); устраняет конфликты CUDA-контекстов и падения инференса; выгрузка моделей «на лету» для освобождения VRAM.
🧬 Длинный клон — озвучка сверхдлинных текстов и книг с автоматической разбивкой на фрагменты, пофрагментным авто-обогащением, синтезом частями и бесшовной склейкой с настраиваемой паузой.
🌐 Внешние LLM — глобальная интеграция с LM Studio / Ollama / OpenAI API (External API); перенаправление автоулучшения со всех вкладок на внешнюю модель; настраиваемый системный промпт режиссёра.
🧪 Тест подключения — кнопка быстрой проверки связи с внешним API и интерактивный редактор промптов с выводом подробных кодов ошибок в интерфейс.
💾 Автосохранение настроек GUI — сохранение и автоматическое восстановление всех параметров (моделей, голосов, слайдеров температуры/top-p) между запусками в локальном файле gui_config.json.
💻 Только CPU — переключатель в интерфейсе для полной обработки TTS и LLM на центральном процессоре (без использования видеокарты), что полностью освобождает VRAM.
🌑 Всегда темная тема — принудительное включение темной темы при первой загрузке без светлого мигания.
Только на CPU - работает, но ооооочень не быстро. Учитывая тест на 5950x :)
Dub Studio - локальная утилита для перевода коротких роликов. Та самая утка тоже тут.
Всем привет! Листал ленту тиктока и попался американский ролик про СДВГ, где всё объясняют на утках. Понравилось. И я подумал: классно было бы сделать такой же канал, только на русском.
Но я ленивый. Снимать, писать сценарии, делать всё с нуля - это скучно. А вот взять готовый ролик и перевести-переозвучить его на русский - вот это уже интересно, подумал я, а потом задумался, о том, как это автоматизировать. Это оказалось интересной инженерной задачей, которая увлекла меня на неделю времени, и привела к созданию ИИ утилиты с открытым исходным кодом. А тикток с утками я так и не создал...
Меня зовут Илья, я блогер, основатель сервиса для генерации ArtGeneration.me и просто фанат нейросетей. Я не разработчик в классическом смысле - скорее продакт с двадцатилетним стажем, который вайбкодит с нейросетями всё, что давно хотелось воплотить в жизнь.
Портативок я насобирал уже кучу, потому что для меня это самый быстрый способ протестировать технологию. Отдельно под озвучку, отдельно под распознавание речи. Но чтобы собрать всё это в один инструмент, где работает сразу из коробки - такого ещё не было. Заодно захотелось наконец слезть с Gradio, на котором я обычно делаю свои портативки.
Так появился Dub Studio - утилита, которая локально переводит и переозвучивает короткие ролики. Офлайн, бесплатно, без подписок и без цензуры. А та самая утка стала главным тестовым роликом проекта.
Дальше расскажу, как всё это собиралось и покажу примеры сделанные в этой же утилите.
❯ Почему шесть нейросетей, а не одна
Сначала я хотел обойтись одной моделью. Омнимодальной. Чтобы один мозг сразу и слушал звук, и смотрел картинку, и читал-переводил надписи на экране. Один файл, один прогон, никакой возни со склейкой.
Но была рамка. Дома у меня RTX 4090 на 24 гига, в неё влезает многое. А вот у большинства моих подписчиков 12 гигов и меньше. Пихать в инструмент жирные модели, которые у них просто не запустятся, мне не хотелось. Так что планку я поставил сразу под аудиторию: всё должно жить в 12 гигах VRAM. Иначе смысла нет.
Поресёрчил омни-модели. Вывод вышел неприятный: ни одна модель, которая влезает в 12 гигов, не умеет нормально размечать речь по времени и по говорящим за один проход. Это не я поленился покопаться, это просто потолок таких моделей, даже лучших. Кто где говорит и в какую секунду - они на этом плывут.
Реальный кандидат был один, MiniCPM-o, он по размеру проходил. Но до его тестов я даже не дошёл. Ещё на ресёрче стало понятно, что омни в принципе не вывозит аудио-тайминг, и запускать её смысла уже не было.
Не так изящно как мне бы хотелось, но и не 14 узлов как в начале
Поэтому в итоге не одна модель, а гибрид из шести специализированных. Каждая делает свой кусок и делает его хорошо:
экранный текст вытаскивает RapidOCR, а вжигает субтитры libass.
Да, шесть штук вместо одной звучит как перебор. Но каждая тут весит немного, все вместе укладываются в бюджет по памяти, и на своём участке работают лучше, чем одна большая модель на всём сразу.
❯ TTS: лучший из худших
Озвучка - это сердце дубляжа. Поэтому к выбору движка я подошёл серьёзнее всего.
TTS, который мне нужен, должен уметь клонировать голос. Не просто прочитать текст роботом, а звучать похоже на оригинал, в моём случае ещё и по-русски. Таких движков несколько, и я прогнал большое исследование: погонял кандидатов по метрикам.
Вывод вышел невесёлый. Идеального движка нет. Вообще. У каждого свой набор косяков.
Победил Qwen3-TTS, в сборке на Triton. Победил не потому, что не косячит. Косячит. Хуже всего у него с ударениями: периодически ставит их не туда, и тогда слово звучит не по-русски. Но из всех вариантов это самый адекватный компромисс. Он быстрый, лёгкий и работает быстрее реалтайма. Лучший из худших, если совсем честно.
И вот тут я хочу сказать вещь, которая тянется через весь проект. Он целиком собран на компромиссах. Gemma у меня квантованная, не полная. Сам процесс полу-автоматический, а не нажал кнопку и пошёл пить кофе. Везде, где можно было выбрать между идеально и просто работает, я выбирал второе. Иначе инструмента просто не было бы.
Выбор TTS, да, спорный. Я знаю, что многие со мной не согласятся. И это не просто так. Но про это позже.
❯ Прощай, Gradio
Сначала я хотел сделать совсем просто. Лёгкий CLI, полностью автоматический. Кидаешь ролик, получаешь готовый дубляж. Без рук, без редактора, без меня.
Не вышло. У каждого ролика своя верстка: надписи лезут не туда, разметка везде разная. Модели ошибаются. Универсального кинул и готово не существует. Чем дольше я это ковырял, тем понятнее становилось, что полностью без человека тут не выехать.
Так я пришёл к полу-автоматике. Движок берёт на себя тяжёлую часть: анализирует ролик, раскладывает умные дефолты. А человек правит остальное. Но правит не вслепую, а с живым превью, где сразу видно что получится.
Это Спарта? Нет, это ГРАДИО!
Тут стоит пояснить, что вообще такое Gradio - вдруг кто не сталкивался. Это питоновская библиотека для быстрых интерфейсов к нейросетям: парой строк кода оборачиваешь модель в простенькую веб-морду - поле ввода, кнопка, окошко с результатом, и всё, модель можно тыкать в браузере, а не гонять из консоли. Бутстрап для нейронок.
Принадлежит он Hugging Face - по сути это гитхаб для нейросетей, главный репозиторий ИИ-моделей. Поэтому с моделями оттуда Gradio дружит бесшовно: взял с хаба, обернул, выложил - всё заводится из коробки. Идеальная штука, чтобы по-быстрому собрать MVP, на нём собраны почти все мои портативки.
И вот тут стало ясно, что Gradio мне больше не помощник. Для демки он отличный. Но нормальный редактор на нём не собрать. Gradio - это один столбик, пара полей и готовых элементов и кнопка. А мне нужен холст, превью, субтитры поверх видео, перетаскивание.
Поэтому я взял нормальный фронт. React + Konva для холста, на нём всё рисуется и двигается. Субтитры кладутся сверху через JASSUB, прямо поверх видео. Бэкенд на FastAPI. А голый CLI к тому же грузил весь стек заново на каждый ролик, что радости тоже не добавляло.
❯ Редактор
Теперь как это работает в деле. Кидаешь ролик, движок прогоняет анализ и раскладывает умные дефолты: транскрипт, кто где говорит, какие надписи нашёл в кадре, готовый план субтитров. Дальше начинается пользовательская часть.
На Gradio, конечно, так не сделаешь
Дольше всего я бился над превью. Оно и сейчас по сути покадровое слайд шоу с аудио дорожкой, это так и задумано. Но поначалу оно тормозило так, что работать было невозможно. Полный рендер одного кадра шел около 25 секунд. Двадцать пять. Сидеть и ждать столько после каждого чиха в редакторе невозможно. Пришлось делать отдельный быстрый предпросмотр, тоже один кадр, но уже около 0.14 секунды. Вот после этого редактор и ожил.
Каждый ролик можно гонять в одном из трёх режимов: Субтитры, Дубляж или Шуточный. Первые два понятны. С Шуточным интереснее: говоришь Gemma тему, она переписывает скрипт под неё, и кусок переозвучивается заново уже с новым текстом, мем сделанный в этом режиме ждет вас в конце статьи.
Голоса вешаются на каждого говорящего по отдельности. Один спикер - один голос из пака, другой - другой. Голосов в паке много и никто не мешает добавлять еще просто закидывая файлы в папку.
С субтитрами тоже всё руками. Не нравится, где стоит полоса - берёшь её мышкой и таскаешь прямо по кадру, куда надо.
Теперь переведённые надписи в самом видео. Хочется, чтобы они смотрелись как родные. Поэтому оригинал я не блюрю. Блюр мылит картинку и сразу выдаёт, что тут что-то подменили. Вместо этого оригинальная надпись кроется непрозрачной плашкой под цвет сцены. Где её положить, подсказывает OCR, а как оформить текст поверх, подсматривает зрение Gemma. Получается аккуратно.
И ещё про громкость. Реплики приходят разные по уровню. Поэтому все фразы приводятся к одному уровню.
❯ Честно про вайбкодинг
Раз уж пошёл такой разговор, расскажу честно про обратную сторону.
Этот проект тоже собран в паре с ИИ-агентом. Штука мощная, но есть одна боль, которая выматывала сильнее всего. Агент уверенно пишет тебе "готово, баг исправлен". А на деле ничего не исправлено. И ловишь ты это только сам, глазами.
Простой пример. Поправили субтитр в превью, всё хорошо. Запускаешь экспорт - а там та же самая ошибка на месте. Агент починил один путь и честно отчитался за оба.
Но больнее всего была не сама модельная часть. Больнее всего оказалась упаковка в один клик, через Pinokio. Агент взял обязательную зависимость и пометил её как необязательную. Вроде мелочь. А без неё весь дубляж просто падал. И отдельная радость - полдня ушло на одну ошибку с ffmpeg. Просто полдня на одну ошибку, подробности опущу.
Вывод для меня простой. Верить агенту на слово нельзя. Совсем. Поэтому всё, что он делает, проверяешь сам. Каждый раз.
❯ Стек и как это работает
Если убрать всю кухню, алгоритм простой.
Кидаешь видео в окно. Дальше движок сам прогоняет весь конвейер: снимает транскрипт, режет на сегменты по спикерам, вытаскивает надписи с экрана, собирает план субтитров с разумными дефолтами. На выходе готовый проект, который можно открыть и крутить.
Дальше правишь руками. Меняешь перевод, двигаешь тайминги, перебираешь надписи - и всё это с живым превью, видно сразу. Когда всё нравится, жмёшь экспорт. Тут важный момент: переозвучивается только то, что ты трогал. Остальное берётся из кэша, заново гонять весь ролик не нужно. На выходе готовый mp4.
❯ Это бета, и ей нужны вы
Я доволен тем, что получилось. Сам этим пользуюсь, и это уже не игрушка. Но давайте честно: это бета. Работы ещё хватает.
Поэтому про ограничения прямо. Заточено всё в основном под короткие ролики. Выбор TTS спорный, и я это прекрасно понимаю - многие со мной не согласятся по поводу того, какой голос лучше. Языков можно тащить больше, чем сейчас доступно. Технически и ттс и ллм их поддерживает больше, но каждый язык надо тестить руками, а это время.
В планах сделать все модули сменными. Раз уж столько споров вокруг TTS, логичный ход - дать каждому собрать пайплайн под себя. Не нравится распознавалка - воткни свою. Не нравится речь - поставь другой. Хочется, чтобы это был конструктор, а не приговор.
Кстати, стек так удачно лёг, что я потащил его и в другие свои проекты, например в днд игру где нейросеть выступает гейм-мастером. Но это уже отдельная история, под новую статью, так что как-нибудь в другой раз.
Теперь самое важное. Репозиторий открыт, лицензия MIT, код тут - берите и делайте. Форкайте, шлите PR и заводите issue. Если что-то сломалось или работает не так - расскажите. А ещё лучше - прогоните свой ролик и киньте результат в комменты, очень интересно посмотреть, что у вас выйдет. И если проект вам зашёл, поставьте звезду на гитхабе, мне будет приятно, а ему полезно.
Найти меня можно в YouTube, в Телеграме и на Бусти. Залетайте, там тоже интересно, каждую пятницу смотрим новинки нейросетей и генерируем вместе. Всех обнял и удачных дубляжей.
Введена новая TTS-модель ZONOS2 (https://huggingface.co/Zyphra/ZONOS2) для работы в реальном времени с высокоточным клонированием голоса под лицензией Apache 2.0.
Его разреженный Mixture of Experts (MoE) обладает 8 млрд параметров и 900 млн активных, став первым открытым MoE TTS.
Гибкие настройки дают выбор между "стабильным" (чистый студийный звук) и "экспрессивным" (максимальная верность исходному голосу) режимами.
Обучение осуществлялось на более 6 млн часов аудио с трёхэтапной фильтрацией при постепенном ужесточении требований к согласованности транскриптов.
Текст подвергают токенизации в формате сырых UTF-8 байтов без фонемизации. Аудио преобразуют в токены кодека DAC (44.1 кГц), используя автогрессивный паттерн задержки.
Среди настроек есть цифровой отпечаток голоса (ECAPA-TDNN), скорость речи, качественные параметры (полоса, громкость, SNR).
Представленный эталон ZTTS1‑Eval показал чистые (FLEURS‑R) и "дикие" (VoxBlink2) выборки, метрики интонации и ритма (Allosaurus SR, Pitch, DS‑WED), схожесть диктора (ReDimNet) и качества (MSR‑UTMOS, Qwen3‑ASR).
В результате обеспечен 4-кратный прирост скорости против предыдущей версии и качество на уровне ведущих решений.