Можно ли заменить диктора open-source TTS-моделью: тестируем OmniVoice на русском языке

Страницы:  1

Ответить
 

Professor Seleznov


Введение
Предыдущие статьи про TTS:
https://habr.com/ru/companies/raft/articles/991844/
https://habr.com/ru/companies/raft/articles/1023206/
Еще несколько лет назад синтез речи в бизнесе часто воспринимался как компромисс: быстро, но не всегда естественно. Чтобы качественно озвучивать что-либо - компании прибегали к стандартному пути: диктор, студия, запись, монтаж. Необходимо было учесть множество нюансов, чтобы свести издержки ресурсов компании к минимуму и быстрее выдать качественный продукт. Это неплохо работало для финальных этапов создания продуктов, но в любом случае такая бизнес модель плохо масштабировалась, то есть если нужно быстро озвучивать десятки или сотни фраз, обновлять тексты, тестировать разные варианты подачи или делать мультиязычные версии, процесс становился дорогим и медленным.
pic
Сейчас 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
pic
Мы увидели возможности модели, примеры того, как ее можно использовать и возможно на этом моменте вы уже сложили картину того как можно еще интересным способом использовать данную модель. Но я решил провести дополнительную аналитику модели и прогнать ее по популярным сценариям, а именно: как модель произносит ФИО, дату и время, числа и проценты, аббревиатуры, омографы и английские слова в русском тексте.
Для такого тестирования я подготовил собственный бенчмарк. Для каждого раздела я подготовил по 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 пока лучше использовать с осторожностью. В таких задачах потребуется ручная проверка, подбор параметров генерации, подготовка текста и, возможно, дополнительная постобработка. -Источник
 
Loading...
Error