Silencio-2 - открытый файнтюн Kyutai Pocket TTS на 18,2 млн параметров. Модель синтезирует английскую речь на 24 кГц со стримингом, клонирует голос по короткому фрагменту и понимает теги прямо в тексте: <happy>, <sad>, <laugh>, <sigh>. Вместе с энкодером для клонирования это 27,9 млн параметров и около 112 МБ на диске. Такой размер позволяет держать синтез речи на CPU и не забирать VRAM у LLM, которая и так еле помещается в память.
Формат поставки - репозиторий с весами на Hugging Face. Pip-пакета нет: нужно клонировать код и поставить зависимости из requirements.txt. Веса распространяются по CC-BY-4.0 (лицензия наследуется от Pocket TTS), код инференса по MIT. Язык один: английский.
Автор заявляет примерно 20-кратное превышение реального времени на Apple M4 с 4 потоками CPU без GPU. Оговорка от него же: это один длинный прогон на ноутбуке, а не бенчмарк. Ниже - что реально даёт файнтюн, как работают теги, где модель спотыкается и для каких задач её брать.
Что такое Silencio-2 и почему это интересно
По сути это Pocket TTS 18M, дообученный на размеченных данных: эмоции и звуки помечены тегами внутри текста, и модель училась связывать конкретный тег с конкретной манерой произнесения. Архитектура и язык остались от базы. Отличие от типичных TTS в том, что интонацией управляет сам текст, а не отдельный набор параметров, и что модель целится в CPU-инференс, а не в GPU. 18,2 млн параметров - это в разы меньше, чем у многих открытых TTS на сотни миллионов параметров. Поэтому модель помещается в память целиком и не требует ускорителя. Анонс с техническими деталями опубликован в r/LocalLLaMA.
Ключевые характеристики в одной таблице
| Параметр | Значение |
|---|---|
| Параметры речевой части | 18,2 млн |
| Параметры с энкодером для клонирования | 27,9 млн |
| Размер на диске | около 112 МБ |
| Частота дискретизации | 24 кГц |
| Стриминг | да |
| Язык | только английский |
| Клонирование голоса | да, по короткому фрагменту |
| Теги эмоций | happy, sad, angry, fear, surprised, whisper |
| Теги звуков | laugh, sigh, gasp, cough, clear_throat |
| Базовая модель | Kyutai Pocket TTS 18M |
| Pip-пакет | нет, клонирование репозитория и requirements.txt |
| Лицензия весов | CC-BY-4.0 |
| Лицензия кода инференса | MIT |
Чем Silencio-2 отличается от Kyutai Pocket TTS
Pocket TTS - базовая модель Kyutai, выпущенная в трёх размерах: 1,9, 6,9 и 18,2 млн параметров, с клонированием голоса и работой на CPU. Silencio-2 - файнтюн старшей версии. Что изменилось: модель научилась реагировать на теги эмоций и звуков, которых в базе не было. Что осталось прежним: архитектура, частота 24 кГц, стриминг, требование английского языка и лицензия весов CC-BY-4.0, унаследованная от Pocket TTS.
Важная оговорка: Silencio-2 не заявлена как более точная по WER. На выпущенном чекпоинте WER вообще не измерялся, а более поздняя невыпущенная стадия показала 1,9% против 1,5% у базы на 300 элементах LibriSpeech. То есть за управляемость, скорее всего, заплачено небольшой потерей разборчивости. Если нужен просто чистый английский синтез без эмоций, базовая Pocket TTS остаётся разумным выбором: как её запустить и какой размер брать, разобрано в отдельном материале.
Эмоции и звуковые теги: как управлять речью прямо в тексте
Тег - часть входной строки, а не отдельный параметр вызова. Эмоции: happy, sad, angry, fear, surprised, whisper. Звуки: laugh, sigh, gasp, cough, clear_throat. В тексте они записываются в угловых скобках, как в примере из анонса:
What a long day. [sigh] <whisper> Keep your voice down. <whisper> Keep your voice down. <angry> I said stop!
Синтаксис простой: поставили тег перед фразой, к которой он относится, и получили нужную манеру. Отдельного API, JSON-схемы или набора параметров нет. Для шаблонной генерации это удобно: сценарий верстается как разметка, а не как структура аргументов.
Один нюанс про громкость: настоящий шёпот выходит примерно в 10 раз тише обычной речи, поэтому generate() по умолчанию поднимает его уровень. Если вы микшируете дорожку с музыкой, проверяйте уровни на слух, иначе тихая реплика сравняется по громкости с обычной.
Как тег применяется к длинному тексту
Pocket TTS режет длинный текст на чанки, поэтому ведущий тег покрывает только первый чанк. Эмоция «слетает» на середине абзаца: <angry> в начале длинной реплики подействует на первое предложение, а дальше голос вернётся к нейтральному. Пакет инференса обходит это тем, что повторяет тег на каждом чанке. Если работаете с моделью напрямую, без обёртки, тег придётся дублировать вручную.
Почему теги не всегда срабатывают с первого раза
Результат зависит от сида: один и тот же текст с <angry> в разных прогонах звучит по-разному, от сдержанного раздражения до откровенного крика. Самый проблемный тег - whisper: он зависит и от строки, и от голоса, и на части фраз просто не даёт шёпота. Автор советует генерировать несколько дублей и выбирать на слух. Детерминированного поведения тут нет, и закладывать его в пайплайн без ретраев не стоит. Оговорки по стабильности тегов автор перечисляет отдельно.
Клонирование голоса: как это работает и почему важен нейтральный промпт
Клонирование идёт по короткому фрагменту записи. За него отвечает отдельный энкодер: он кодирует образец голоса и добавляет примерно 9,7 млн параметров, отсюда 27,9 млн в полной конфигурации против 18,2 млн у речевой части. Образец кодируется один раз, дальше синтез работает по полученному представлению голоса.
Главная тонкость вылезла при обучении. Если голосовой промпт - это начало эмоционального клипа, модель копирует эмоцию из промпта вместо того, чтобы слушать тег в тексте. Чтобы это победить, половина размеченных сэмплов в обучении берёт промпт из нейтральной версии того же голоса. Практический вывод: для клонирования берите ровный, спокойный фрагмент, а нужную эмоцию задавайте тегом. Тогда управление останется за текстом.
Для клонирования на CPU есть и другие варианты, например Sopro V2 Turbo 2610 на 120 млн параметров под Apache-2.0: она тяжелее, зато её обновление как раз снижало шероховатости на проблемных клонированных голосах.
Что подавать на вход для клонирования
Короткий фрагмент английской речи, желательно нейтральный по интонации и без музыки на фоне. Конкретную длину в секундах автор не называет, поэтому ориентируйтесь на формулировку «короткий клип» и на README репозитория. Язык образца должен быть английским: модель одноязычная, русскую запись она не разберёт как эталон фонетики.
Скорость на CPU: что на самом деле стоит за 20x реального времени
Заявленная цифра - около 20x реального времени на Apple M4 с 4 потоками CPU и без GPU. Читается как «20 секунд речи за секунду работы», и для процессора это много. Сам автор сразу ставит рамки: один длинный прогон на его ноутбуке, а не бенчмарк. В нём не покрыты разные длины текста, разные теги, разные голоса и повторы, поэтому переносить 20x на Intel, AMD или серверный ARM без собственных замеров нельзя.
Что реально следует из заявления: 112 МБ весов и 18,2 млн параметров помещаются в память любой современной машины, поэтому синтез можно гонять на процессоре и не занимать GPU. Для домашнего AI-стека это и есть главная ценность: LLM держит VRAM, речь синтезируется рядом на CPU. Стриминг на 24 кГц добавляет второе преимущество: первое аудио приходит, не дожидаясь конца текста.
Почему 18M параметров меняют правила игры
Открытые TTS-модели часто измеряются сотнями миллионов параметров, и CPU-инференс для них превращается в мучение. При 18,2 млн параметров и весе около 112 МБ модель ведёт себя как обычная небольшая нейросеть: быстро загружается, работает в несколько потоков, не требует квантизации и специальных ядер. Размен очевидный: компактность и скорость против абсолютного качества и выразительности. Похожий путь пробуют и другие авторы: SupraTTS-0.1-Beta на 29,6 млн параметров строится на Glow-TTS и тоже целится в CPU и edge-устройства.
Как запустить Silencio-2 локально: установка и первый запуск
Pip-пакета нет. Последовательность такая:
- Клонировать репозиторий с кодом инференса.
- Установить зависимости из requirements.txt.
- Скачать веса с Hugging Face (аккаунт BlueRoseLabs).
- Запустить синтез на коротком английском тексте без тегов и проверить, что аудио пишется и открывается.
- Добавить теги и клонирование, когда базовый синтез заработал.
Точные команды смотрите в README репозитория: они могут меняться, и привязка к конкретным путям или версиям зависимостей тут только запутает. Если не хочется ставить ничего локально, автор предлагает Colab-ноутбук, чтобы послушать модель в браузере.
Лицензии: что можно и что нельзя
Веса под CC-BY-4.0: коммерческое использование разрешено с указанием авторства и сохранением указания лицензии, производные веса наследуют те же условия. Код инференса под MIT: можно брать, менять и встраивать, сохраняя текст лицензии и копирайт. Это краткое изложение, а не юридическая консультация; для продукта с жёсткими требованиями к атрибуции сверьтесь с полными текстами лицензий.
Типичные грабли при установке
Отсутствие пакета означает ручное управление зависимостями: конфликт версий torch или аудиобиблиотек придётся разбирать самостоятельно. Веса лежат отдельно от кода, их нужно скачать и положить туда, где их ждёт скрипт. Английский язык на входе - жёсткое ограничение: модель не обучена русской фонетике, поэтому на русском тексте разборчивой речи ждать не стоит.
История обучения: три неудачных прогона и один рабочий
Обучение шло на 2x NVIDIA T4: около 50 часов аудио, 27 тыс. клипов, финальный прогон занял примерно 6 часов. До рабочего варианта автор прошёл три неудачные попытки, и каждая даёт практический урок.
- Прогон 1. Теги обучились нормально и почти ничего не делали. Эмоции меняли голос, но не в ту эмоцию, которая стояла в теге.
- Прогон 2. Автор сгенерировал данные получше и отфильтровал их через AST (AudioSet-теггер). Подсчёт строк по тегам дал ноль клипов laugh, ноль cough и ноль clear_throat: фильтр молча вырезал нужные звуки, и модель их не видела.
- Прогон 3. Переход на 3-секундные скользящие окна не спас: человеческие записи скриптового смеха дали 0 из 23 выше порога при медиане 0.006. Прогон упал из-за нехватки памяти на T4: 32 клипа по 25 секунд в одном батче не помещаются.
- Прогон 4. Автор прослушал данные, признал их пригодными и полностью убрал фильтр. Этот вариант и стал Silencio-2.
Хронология прогонов и выводы автора описаны в том же анонсе.
Почему AST не подошёл как фильтр
AST оценивает клип целиком. Короткий смех, кашель или вдох занимают доли секунды, а запись вокруг - обычная речь, поэтому теггер видит речь и не подтверждает нужный звук. Порог отсекает такой клип, и в датасете остаётся ноль примеров класса. Вывод автора: клип-левел AudioSet-теггер плохо подходит как фильтр для коротких звуков, смешанных с речью. Практика для тех, кто собирает датасеты: считать строки по каждому тегу до обучения и проверять выборку на слух, а не доверять автоматике.
Ограничения Silencio-2: язык, WER и стабильность
Список короткий, но каждый пункт важен для продакшена.
- Только английский. Ни русского, ни других языков.
- WER на выпущенном чекпоинте не измерялся.
whisperнаименее стабилен и зависит от строки и голоса.- Остальные теги варьируются от сида к сиду.
- Pip-пакета нет, интеграция ручная.
- Ведущий тег покрывает только первый чанк, если не используется обёртка с повтором.
Что значит «WER не измерялся» на практике
WER (word error rate) показывает, сколько слов в синтезированной речи распознаётся с ошибкой: дорожку прогоняют через ASR и сравнивают с исходным текстом. Для TTS это косвенная метрика разборчивости и произношения. На этом чекпоинте её не считали. Ориентир есть только для более поздней, невыпущенной стадии: 1,9% против 1,5% у базового Pocket TTS на 300 элементах LibriSpeech. Выборка маленькая, модель другая, так что цифру стоит читать как «возможна небольшая потеря точности относительно базы», а не как характеристику Silencio-2.
Для прототипов и внутренних экспериментов этого достаточно. Для продакшена, где важна разборчивость имён, чисел и артикулов, WER нужно мерить на своём домене: собрать 100-300 фраз, прогнать через ASR и посчитать ошибки. Без этого ставить модель в озвучку справочных материалов рискованно. Как выбирать TTS под озвучку с эмоциями и проверять его на своих текстах, разобрано в отдельном гайде.
Кому подходит Silencio-2 и для каких задач
Модель закрывает узкий, но практичный сценарий: англоязычная озвучка на CPU, где нужен контроль эмоций и звуков, а абсолютное качество не критично. Хорошо ложится в домашний стек рядом с локальной LLM: чат-модель занимает VRAM, Silencio-2 читает её ответы на процессоре.
Чек-лист: стоит ли брать Silencio-2
Берите, если:
- нужен локальный TTS на CPU без GPU;
- контент на английском;
- готовы клонировать репозиторий и ставить зависимости вручную;
- готовы генерировать 2-3 дубля и выбирать лучший на слух;
- устраивает качество уровня прототипа и внутренних экспериментов;
- нужны эмоции и звуки в тексте без отдельного API.
Не берите, если:
- нужен русский или другой язык;
- нужна простая интеграция через pip и стабильный интерфейс;
- критична предсказуемость
whisper; - нужен измеренный WER под ваш домен до запуска;
- требуется минимальное сопровождение и поддержка.
Если сценарий шире, посмотрите в сторону более крупных решений: Breeze-TTS-2 обсуждают как модель для локального запуска с другими требованиями к памяти. Кандидатов полезно сравнивать на одном и том же тексте с именами, числами и сложной пунктуацией, слушая, где ломается интонация.
Начать стоит с малого: скачать веса, синтезировать одну фразу с <happy> и одну с <sigh>, затем повторить каждую по три раза и сравнить. Так вы за полчаса поймёте, хватает ли модели стабильности под вашу задачу, и не потратите вечер на интеграцию, которая не окупится.