Введение

Предыдущие статьи про TTS:

https://habr.com/ru/companies/raft/articles/991844/

https://habr.com/ru/companies/raft/articles/1023206/

Еще несколько лет назад синтез речи в бизнесе часто воспринимался как компромисс: быстро, но не всегда естественно. Чтобы качественно озвучивать что‑либо — компании прибегали к стандартному пути: диктор, студия, запись, монтаж. Необходимо было учесть множество нюансов, чтобы свести издержки ресурсов компании к минимуму и быстрее выдать качественный продукт. Это неплохо работало для финальных этапов создания продуктов, но в любом случае такая бизнес модель плохо масштабировалась, то есть если нужно быстро озвучивать десятки или сотни фраз, обновлять тексты, тестировать разные варианты подачи или делать мультиязычные версии, процесс становился дорогим и медленным.

Сейчас TTS модели стали заметно сильнее: они звучат естественнее, умеют клонировать голос, подбирать тембр по описанию и быстро генерировать речь (Ссылка на внешнее исследование. Поэтому бизнес все чаще смотрит на синтез речи не как на экспериментальную технологию, а как на практический инструмент для IVR(Interactive Voice Response), голосовых ботов, обучения, маркетинга и озвучки контента.

Привет, Хабр! Меня зовут Музафаров Данил, я работаю DS инженером в компании Raft. В этой статье я протестирую OmniVoice — Open Source TTS модель, вокруг которой сейчас много внимания, и проверю, насколько хорошо она справляется с русскоязычными бизнес‑сценариями: числами, датами, ФИО, аббревиатурами, смешанным русско‑английским текстом, а также длинной озвучкой.

Основная часть

OmniVoice появилась в open‑source‑сегменте TTS сравнительно недавно и быстро привлекла к себе внимание. Авторы заявляют поддержку более чем 600 языков, возможность клонирования голоса по короткому референсному аудио, генерацию голоса по текстовому описанию и автоматический выбор голоса без дополнительных настроек.

На бумаге это выглядит очень привлекательно для бизнеса. Если модель действительно хорошо справляется с разными языками, короткими фразами, числами, аббревиатурами и клонированием голоса, ее можно использовать не только для экспериментов, но и как основу для прикладных сценариев: голосовых ассистентов, озвучки внутренних материалов или быстрого прототипирования брендового голоса.

При этом для бизнеса важны не только красивые примеры из репозитория. В реальных текстах почти всегда встречаются даты, суммы, ФИО, сокращения, английские термины, названия продуктов и длинные абзацы. Поэтому я решил проверить OmniVoice не на абстрактных фразах, а на русскоязычных сценариях, которые ближе к реальным задачам компаний.

Возможности модели

У OmniVoice заявлены следующие возможности: клонирование голоса, создание собственного голоса, автоматический выбор голоса. Давайте рассмотрим эти возможности.

Voice Cloning

Клонирование голоса спикера по референсному аудио с расшифровкой. Озвучка текста клонированным голосом.

audio = model.generate(
    text="Привет! Это тест синтеза голоса на русском языке с помощью OmnyVoice.",
    ref_audio="refs/ref_danil.ogg",
    ref_text="Всем привет, меня зовут Музафаров Данил и сейчас я тестирую новый аудиоформат",
)
 
sf.write("output/voice_cloning.wav", audio[0], 24000)

Результат генерации

Voice Design

Описание тембра голоса спикера с помощью текстовых инструкций. Но здесь не получится из головы создать описание, здесь есть ограниченный набор параметров, которые ожидаются в поле «instruct», поэтому важно это учесть.

audio = model.generate(
    text="Тестирую voice design на русском языке с помощью OmniVoice. Хочу услышать низкий голос профессионального диктора мужчины среднего возраста",
    instruct="male, low pitch, russian accent",
)
 
sf.write("output/voice_design.wav", audio[0], 24000)

Результат генерации

AutoSpeech

Голос выбирается автоматически, указывается только текст, который нужно озвучить

audio = model.generate(text="Давайте узнаем, какой голос у нас получился, если не указать ни один параметр. До этого я не встречался с таким функционалом в синтезе голоса.")
 
sf.write("output/auto_voice.wav", audio[0], 24000)

Результат генерации

Генерация длинного текста

Часто при генерации длинных текстов можно увидеть как проседает качество модели. Могут появляться различные звуковые артефакты и искажаться тембр голоса. Поэтому для кейсов, где преобладают длинные аудио важно оценивать и такую возможность модели.

Традиционно попробуем озвучить отрывок из рассказа «Господин из Сан‑Франциско».

audio = model.generate(
    text=text,
    language="ru",             
    denoise=True,
    num_step=32,               
    guidance_scale=2.0,
 
    # long-form
    audio_chunk_duration=15.0,
    audio_chunk_threshold=1.0, 
    postprocess_output=True,
)
 
sf.write("output/long_text.wav", audio[0], 24000)

Всего символов: 4868 
Всего слов: 728 
Итоговая длина аудио: 5 мин
Время генерации аудио: 44 сек

Результат генерации

Вывод: Хорошая генерация, но встречаются артефакты по типу обрыва окончания предложения, проглатывания слов. Также встречаются неверные ударения.Возможно, если подобрать оптимальные гиперпараметры, то с этим можно будет бороться и улучшить качество еще сильнее.

Невербальные символы в тексте

Невербальные символы — это эмоции, которые не передаются обычными словами, но помогают сделать речь более естественной: смех, вздох, пауза, удивление, задумчивость, радость или напряжение. 

OmniVoice поддерживает невербальные символы в тексте и если научиться их грамотно использовать, то можно сделать озвучку текста более живой и интересной.

import os
 
out_dir = "output_postprocess"
os.makedirs(out_dir, exist_ok=True)
 
sample_rate = getattr(model, "sample_rate", 24000)
 
examples = [
    (
        "06_nonverbal_tags",
        (
            "[laughter] Серьёзно, ты это сейчас весь отчёт прогоняешь одним батчем? "
            "[sigh] Ладно, давай спокойно: мы просто проверяем качество озвучки. "
            "[surprise-oh] Вот это рост — конверсия воронки подскочила после правок. "
            "[question-ah] Это реально эффект новой посадочной или мы что-то не так в метриках посчитали? "
            "[dissatisfaction-hnn] В конце всё равно проседает: в третьем квартале слишком много пауз и обрывов. "
            "Дальше обычный нейтральный текст без спецмаркеров, чтобы сравнить возврат "
            "к деловому тону после эмоциональных вставок."
        ),
        dict(instruct="male, young adult, moderate pitch", speed=1.0),
    )
]
 
for name, text, kwargs in examples:
    audio = model.generate(text=text, **kwargs)
    path = os.path.join(out_dir, f"{name}.wav")
    sf.write(path, audio[0], sample_rate)
    print("saved:", path)

Результат генерации

Сильные и слабые стороны OmniVoice

Мы увидели возможности модели, примеры того, как ее можно использовать и возможно на этом моменте вы уже сложили картину того как можно еще интересным способом использовать данную модель. Но я решил провести дополнительную аналитику модели и прогнать ее по популярным сценариям, а именно: как модель произносит ФИО, дату и время, числа и проценты, аббревиатуры, омографы и английские слова в русском тексте.

Для такого тестирования я подготовил собственный бенчмарк. Для каждого раздела я подготовил по 10 предложений и оценивал их от 0 до 5. Где «0», это когда модель озвучила максимально плохо, неразборчиво или совсем не озвучила текст. А оценка «5» — модель качественно озвучила заданный текст, без ошибок в ударениях и интонации. Оценивал я субъективно, самостоятельно прослушивая каждую генерацию.

Бенчмарк

Оценка

Дата и время на русском

4.1

ФИО на русском

4.7

Аббревиатуры на русском

5

Смешанный русский и английский

4.5

Русские омографы

4.1

Числа, проценты и денежные суммы

4.8

Средняя оценка по всем бенчмаркам получилась — 4.53, что в целом неплохо для Open Source TTS. Пустых генераций не было, аббревиатуры на русском языке произносились идеально. Явные проблемы были с произношением точного времени, а также ошибки в ударениях при произношении омографов. Также модель неплохо справляется с произношением чисел и процентов, в произношении ФИО иногда ошибается в ударениях. В произношении английских слов в русском тексте иногда бывают проблемы с произношением, а именно произношение английских слов с русским акцентом.

Зная такие сильные и слабые стороны модели, в дальнейшем можно понимать под какую задачу ее можно будет использовать, а под какую лучше не стоит.

Выводы по результатам тестирования

По результатам тестирования OmniVoice показала себя как сильная Open Source TTS модель для русскоязычных сценариев, особенно если речь идет о коротких и средних фразах. Модель стабильно генерирует речь, не дает пустых результатов, хорошо справляется с базовой озвучкой и показывает высокий уровень разборчивости. 

Самыми сильными сторонами OmniVoice оказались аббревиатуры, числа и проценты. В этих категориях модель звучит достаточно уверенно и в большинстве случаев не требует дополнительной корректировки текста. Особенно хорошо модель справилась с русскими аббревиатурами в тестах они произносились без ошибок.

Также модель хорошо подходит для сценариев, где нужно быстро получить озвучку без сложной настройки: AutoSpeech позволяет генерировать голос только по тексту, Voice Design дает возможность управлять базовыми характеристиками голоса, а Voice Cloning позволяет быстро попробовать озвучку в похожем тембре на основе референсного аудио.

Но к сожалению, полностью заменить профессионального диктора OmniVoice пока не может. Основные ограничения проявляются на длинных текстах: встречаются обрывы окончаний, проглатывание отдельных слов, ошибки в ударениях и звуковые артефакты на стыках аудиочанков.

Итог

Подведем итоги и сравним модели по таблице

Для OmniVoice использовал

GPU — RTX 5070

Процессор — Ryzen 7500

Будем озвучивать как и прошлый раз следующий текст: «Коллеги, добрый день, меня зовут Музафаров Данил. Я пишу статью на Хабр и сейчас я считаю метрики аудиогенерации по скорости.» Это аудио длительностью примерно 10–15 секунд.

Модель

Latency (CPU), сек

Latency (GPU), сек

Естественность

Выразительность

Легкость интеграции

CosyVoice

313.3

1.2

5

5

4

OmniVoice можно рассматривать как рабочий инструмент для бизнеса, но не как универсальную замену диктору во всех сценариях. 

Модель подходит для:

  • озвучки коротких и средних фраз;

  • сценариев, где важны скорость и низкая стоимость, а не студийное качество.

  • внутренних обучающих материалов;

  • голосовых ассистентов 

Но для аудиоподкастов, аудиокниг и в целом задач, где важна длинная генерация голоса — OmniVoice пока лучше использовать с осторожностью. В таких задачах потребуется ручная проверка, подбор параметров генерации, подготовка текста и, возможно, дополнительная постобработка. 

Комментарии (1)


  1. Pshir
    06.05.2026 13:06

    А в подобных инструментах есть возможность расставлять ударения там, где нейросеть сама не справляется?