Дикторы стоят денег. Много денег. И если у тебя стартап, который озвучивает тысячи звонков, или ритейлер, генерирующий голосовые уведомления о статусе заказа, — нанимать диктора на каждую запись экономически нецелесообразно. Платные TTS-сервисы типа ElevenLabs или Speechify тоже просят подписку, а данные улетают на чужие серверы. Но есть альтернатива — локальные open-source модели. Ранее я уже разбирал сравнение open-source моделей для TTS и локальные TTS для документальных проектов, но сегодня фокус на бизнес-сценариях — числах, датах, именах и сложных паузах. И главный герой — OmniVoice.
Почему OmniVoice, а не XTTS или Qwen3?
XTTS-v2 (я тестировал его в статье про аудиокниги) звучит неплохо, но на русском у него заметен лёгкий акцент. Qwen3-TTS — отличная модель, особенно с клонированием (читай полный гайд по Qwen3-TTS), но она требует хотя бы 6 ГБ VRAM. OmniVoice — свежий open-source проект (релиз 1.0 — февраль 2026), который заявляет о трёх вещах: чистая речь на русском, поддержка SSML и работа на 4 ГБ VRAM. Звучит как сказка? Я проверил.
OmniVoice использует гибридную архитектуру VITS + Flow Matching. По заявлению авторов, это даёт лучшее prosody (мелодику речи) при меньшем потреблении памяти. Для бизнеса критично: голос не должен звучать как робот, если ты продаёшь доверие.
План тестирования: три бизнес-сценария
В реальном бизнесе диктора заменяют не для чтения стихов, а для чётких формулировок:
- Числа и валюты — «Сумма вашего заказа — 1 247,50 рубля».
- Даты и время — «Ваш рейс вылетает 15 марта 2027 года в 23:45».
- ФИО и адреса — «Гражданин Иванов Иван Иванович проживает по адресу...».
Если модель спотыкается на таких фразах — она непригодна для бизнеса. Я прогнал через OmniVoice десятки тестовых фраз. Вот как это делается.
1 Установка и первый запуск
Самый простой способ — Docker. Авторы выложили образ на Hugging Face. Если у тебя есть NVIDIA GPU с поддержкой CUDA 12.1, то команда одна:
docker pull ghcr.io/omnivoice/tts:1.0-cuda12.1
docker run --gpus all -p 8080:8080 ghcr.io/omnivoice/tts:1.0-cuda12.1
После запуска появляется REST API на порту 8080. Можно слать POST-запросы с текстом. Для теста я использовал Python-скрипт:
import requests
url = "http://localhost:8080/generate"
payload = {
"text": "Сумма вашего заказа — 1 247,50 рубля",
"voice": "ru_female_1", # встроенный русский женский голос
"ssml": False,
"speed": 1.0
}
response = requests.post(url, json=payload)
with open("test.wav", "wb") as f:
f.write(response.content)
print("Аудио сохранено в test.wav")
Важно: если у тебя меньше 4 ГБ VRAM (например, GTX 1060 3GB) — модель не запустится. OmniVoice требует минимум 4 ГБ, рекомендовано 6 ГБ. Для Raspberry Pi — смотри Kitten TTS, там другие требования.
2 Тест на числах и датах — первые проблемы
Сразу скажу: OmniVoice неплохо справляется с числами, если их форматировать правильно. Фразу «1 247,50» он произнёс как «одна тысяча двести сорок семь рублей пятьдесят копеек» — идеально. Но с датами начались заморочки. «15 марта 2027 года» было прочитано как «пятнадцатое марта две тысячи двадцать седьмого года» — верно, но пауза между числом и месяцем слишком короткая, сливается.
Я попробовал добавить SSML-теги для пауз:
{
"text": "Ваш рейс вылетает 15 марта 2027 года в 23:45",
"ssml": true,
"voice": "ru_male_1"
}
И это сработало! Модель поддерживает SSML (Break, Emphasis, Prosody). Однако встроенный парсер SSML не идеален — если забыть закрыть тег, падает всё. Рекомендую оборачивать в try-except на уровне API.
3 ФИО и адреса — главный камень преткновения
Русские фамилии с окончаниями «-ов», «-ев», «-ин» модель читает нормально. Но «Иванов Иван Иванович» — это слишком просто. Я дал «Шёнберг, Дюпюи, Маккартни» — фамилии с нестандартным произношением. Результат: «Шёнберг» прозвучал как «Шенберг» (без умлаута), «Дюпюи» — с правильным французским «ю», но «Маккартни» — с ударением на второй слог (должно на первый). То есть с иностранными именами проблемы.
Вывод: если в бизнесе много международных ФИО — OmniVoice не справится без дополнительного словаря. Встроенный фонетический токенизатор не знает всех исключений.
Сравнение с другими открытыми моделями
Чтобы не быть голословным, я прогнал те же фразы через Qwen3-TTS 1.8B (о нём подробнее в гайде по vLLM-Omni), Fish Audio и Sonya TTS. Вот таблица качества на русском по шкале от 1 до 5 (5 — идеально):
| Сценарий | OmniVoice | Qwen3-TTS 1.8B | Fish Audio | Sonya TTS |
|---|---|---|---|---|
| Числа (рубли) | 4 | 5 | 4 | 3 |
| Даты с паузами | 4 | 4 | 3 | 2 |
| ФИО русские | 4 | 5 | 4 | 3 |
| ФИО иностранные | 2 | 3 | 2 | 1 |
OmniVoice проигрывает Qwen3-TTS по качеству произношения сложных имён, но выигрывает в скорости генерации (RTF ~0.25 против ~0.4 у Qwen3) и меньшим потреблением VRAM. Для массовой генерации коротких фраз (уведомления, статусы) это идеально. Для длинных текстов лучше посмотреть в сторону Soprano 1.1-80M — она тоже очень лёгкая.
Семь граблей, на которые я наступил
За время тестирования я собрал коллекцию типовых ошибок.
- Забыл включить SSML — при использовании тегов
<break>обязательно ставь флаг"ssml": true. Иначе текст прочитается буквально. - VRAM кончилась на длинном тексте — модель генерирует аудио кусками. Если текст длиннее 500 символов — может упасть. Решение: разбивать на предложения.
- Не указал голос — значение по умолчанию
en_female_1, который не умеет русский. Всегда явно указывайru_*. - Паузы без миллисекунд —
<break/>без атрибута даёт слишком короткую паузу (~50ms). Лучше писать<break time='400ms'/>. - Цифры без пробелов между разрядами — «1247,5» модель прочитает как «тысяча двести сорок семь запятая пять», игнорируя десятичный разделитель. Форматируй числа как «1 247,5».
- Аббревиатуры — «ООО Ромашка» читается побуквенно («о-о-о»), хотя нужно «о-о-о» или «общество с ограниченной ответственностью». Лучше заранее заменять на полные формы.
- Эмодзи — если в тексте попадётся смайлик, модель может его проигнорировать (хорошо) или прочитать как «emoji» (плохо). Лучше фильтровать на входе.
Когда стоит брать OmniVoice, а когда — бежать
Я бы рекомендовал OmniVoice для:
- Голосовых уведомлений в CRM (короткие фразы, числа, даты).
- IVR-систем (голосовое меню с предзаписанными вариантами).
- Прототипов и MVP, где не хочется платить за ElevenLabs.
Не советую для:
- Озвучки видео с большим количеством иностранных имён (тут лучше Топ-5 бесплатных нейросетей — там есть варианты с подгрузкой фонетического словаря).
- Длительных диалогов (модель не держит контекст интонации на длинных абзацах).
- Клонирования голоса (это не про OmniVoice — он только предустановленные голоса; для клонирования смотри тест Qwen3-TTS с портативной версией).
А что с лицензией? OmniVoice распространяется под Apache 2.0 — коммерческое использование разрешено. Это существенный плюс перед некоторыми аналогами (помним историю с f5-tts). Но загляни в сравнение open-source моделей — там я подробно разбирал лицензионные подводные камни.
В итоге OmniVoice — зрелый инструмент для определённого круга задач. Заменить диктора в колл-центре? Да. Записать аудиокнигу? Нет. По крайней мере, пока не появится поддержка импорта собственных голосов. Следите за обновлениями — проект развивается быстро, и к концу 2026 года обещают CustomVoice API.