惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
GbyAI
GbyAI
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
爱范儿
爱范儿
N
Netflix TechBlog - Medium
U
Unit 42
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 叶小钗
G
Google Developers Blog
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
腾讯CDC

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Можно ли заменить диктора open-source TTS-моделью: тестир...
muzafarov (R · 2026-05-06 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение7 мин

Охват и читатели4

Обзор

Введение

Предыдущие статьи про 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 пока лучше использовать с осторожностью. В таких задачах потребуется ручная проверка, подбор параметров генерации, подготовка текста и, возможно, дополнительная постобработка.