Синтезом речи сейчас мало кого удивишь. Но русский — коварный язык: «зАмок» и «замОк», «мукА» и «мУка», «все» вместо «всё». Модель, которая звучит гладко, запросто может ставить ударения как попало. Поэтому кроме автоматических проверок все варианты прослушали ушами, вслепую: записи перемешаны, подписи скрыты, слушал живой человек.
Послушай сам
Звёздочки — оценка в слепом прослушивании, «ошибка» — неверное ударение, «е» вместо «ё» или не та интонация. Модели с пометкой «клон» говорят голосом с эталонной записи (она ниже).
«Старинный замок стоит на холме.»
слушаем: зАмок
«Ключ не подходит к этому замку.»
слушаем: замкУ
«Для пирога понадобится мука высшего сорта.»
слушаем: мукА
«Все елки в лесу покрыты снегом.»
слушаем: ёлки
«Ее подарок понравился всем.»
слушаем: её
«Мы еще не решили, куда поедем.»
слушаем: ещё
«Ты уже купил билеты?»
слушаем: вопрос без вопросительного слова
«Ура, мы победили!»
слушаем: восклицание
«Температура на улице 23 градуса.»
слушаем: правильно: «Температура на улице двадцать три градуса.»
«Встреча назначена на 18.10.2026.»
слушаем: правильно: «Встреча назначена на восемнадцатое октября две тысячи двадцать шестого года.»
Главный сюрприз: робот не слышит ударений
Сначала мы проверяли синтез автоматически: синтезировали фразу, распознали её whisper'ом и посчитали ошибки. По такой метрике Piper irina был почти лучшим. А на слух оказался почти худшим: 5 ошибок в ударениях из 8 фраз. Whisper слышит «замОк» и честно пишет «замок», и придраться ему не к чему.
Без ошибок в ударениях и «ё» кириллицу прочитал только Silero. У него есть отдельные модули, которые расставляют ударения, «ё» и различают омографы. Все остальные полагаются на то, что нейросеть «сама поймёт», и иногда не понимает.
Быстро и хорошо — это Silero
Silero синтезирует ответ за 0.1 секунды на CPU — в 25 раз быстрее реального времени — и занимает 0.7 ГБ памяти. Тяжёлые модели звучат тоже хорошо, но на нашем iGPU они медленнее реального времени в 2.5–25 раз. Для живого диалога это не годится: представь, что ассистент думает 13 секунд, прежде чем сказать «Свет на кухне включён».
Но Silero не умеет в цифры
Без подготовки текста Silero молча выбрасывает цифры и латиницу. Из «У меня новый iPhone 15 Pro» остаётся «У меня новый» — и всё. Поэтому перед ним нужен нормализатор, который перепишет всё словами. Или можно сразу попросить LLM отвечать словами (мы так и сделали в голосовом ассистенте).
«У меня новый iPhone 15 Pro.»
«Счёт за электричество: 1 250,50 ₽.»
«На улице −12 °C.»
Клонирование голоса
Модели с клонированием получают пример голоса и его текст, а дальше говорят этим голосом. Эталоном у нас была 8-секундная запись диктора из FLEURS:
эталон для клонирования · FLEURS · 8 секунд
«Этот осадок требовался для формирования пляжей и песчаных отмелей, являвшихся местом обитания диких животных.»
- Qwen3-TTS 1.7B — лучший из клонирующих: 4.1 из 5 на слух и самый разборчивый по STT. Но фразу в 3 секунды он синтезирует 13 секунд. Годится для озвучки текстов и заранее готовых сообщений — например, утренней сводки голосом любимого актёра. Для диалога нет.
- CosyVoice3 и OmniVoice звучат почти так же (3.9), но ещё медленнее: OmniVoice тратит около 70 секунд на одну реплику. К тому же у OmniVoice веса только для некоммерческого использования.
- Qwen3-TTS 0.6B — младший брат, почти такой же медленный, но с пятью ошибками в ударениях из восьми.
- MOSS-TTS-Nano — сочиняет и повторяет слова. 1.1 из 5, извини, MOSS.
Про лицензии
У Silero лицензия CC BY-NC-SA: дома пользоваться можно, в коммерческом продукте — нет. У Qwen3-TTS и CosyVoice3 — Apache 2.0.
Не взлетело
- Piper — шустрый и встроен в Home Assistant. Цифры читает сам, но ударения ставит наугад. Можно держать как запасной вариант.
- Supertonic 3 — быстрый, но 4 ошибки в ударениях из 8 и падает на символе «₽».
- iGPU через Vulkan ускоряет тяжёлые модели примерно вдвое. Но в реальное время они на этом железе всё равно не укладываются.