Как разработать собственный синтез речи и составить конкуренцию Google и «Яндексу»

История о том, как разработать технологию для синтеза речи с бюджетом 3 миллиона рублей (с примерами и этапами).

Всем привет. Мы уже писали здесь статью об использовании голосового бота в колл-центре транспортной компании и сейчас мы пошли дальше. Мы решили создать собственный синтез речи, способный конкурировать с такими гигантами как Google, Yandex, Amazon и относительно новыми игроками на этом рынке как Тинькофф, АБК и Vera Voice.

Пару слов о нас

Мы команда из 35 человек децентрализованно работающих по разным городам и странам. В 2016 году мы начали работать под брендом Twin. Тогда мы начинали с простых голосовых ботов. Сейчас это уже более сложные модели со сложными сценариями, машинным обучением и гибкой маршрутизацией в телефонии. Не буду подробно останавливаться на этом, гораздо подробнее и интереснее это описано на нашем сайте.

Сейчас я немного опишу вводную информацию по синтезу речи в 2020 году: что есть на рынке, как это используется, для чего, сколько стоит и какие проблемы возникают. Кому эта информация не интересна, примеры синтеза начинаются после заголовка “Первые результаты”. Приятного прочтения!

Почему синтез, а не записанный голос?

Сейчас синтез речи используется в основном в различных умных колонках, голосовых помощниках и в меньшей степени для уведомлений и общения с клиентом. Мы подробнее остановимся именно на синтезе для телефонии.

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

Плюсы и минусы синтеза речи и записи диктора

Синтез

Плюсы: позволяет синтезировать речь на основе любого текста в реальном времени.

Минусы: при большом объёме синтезированной речи очень сложно придать ей необходимую и естественную эмоциональную окраску.

Запись

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

Минусы: очень сложно и трудозатрано предзаписать большой объём переменной информации и учесть все возможные доработки сценариев бота.

При совмещении плюсов и минусов предзаписи и индивидуального синтеза речи мы получим идеальное сочетание.

Вот пример стороннего синтеза при звонке

Кто предоставляет данную технологию сейчас

К 2020 году на рынке сформировались несколько глобальных игроков и несколько локальных со своими плюсами и минусами.

Глобальные: Google, Amazon

Локальные: Yandex, Tinkoff, АБК, Vera Voice

В конце 2019 года мы задумались о реализации собственного синтеза. Да, в краткосрочной перспективе это получается невыгодно, но в перспективе от 2-х лет эта история очень интересна для нас. Дополнительным толчком также стали запросы от клиентов с потребностью синтеза речи определенного диктора. То есть у клиентов возникла потребность создать гибридный вариант голоса при звонках, когда часть диалога происходит с использованием предзаписанных реплик, а переменные синтезируются на основе голоса их диктора.

Сколько стоит разработка собственного синтеза речи?

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

Для сравнения, в 2019 Tinkoff только на свой суперкомпьютер «Колмогоров» потратили около 1 млн. долларов без расходов на разработку программного обеспечения. О стоимости разработки ПО можно только гадать, информацию в открытых источниках мне не удалось найти.

Что мы хотели получить в результате?

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

  • Стоимость разработки и сопровождения ПО
  • Приемлемое качество для использования в телефонии

  • Возможность создавать синтез на основе 1 часа речи диктора


Решение

Практически любой синтез речи на базе нейронных сетей состоит из 3 основных модулей:

  • Нормализация текста.
  • Синтез спектрограммы из текста.
  • Синтез аудиоданных из спектрограммы (вокодер).

Для своей реализации синтеза речи мы решили дорабатывать Tacotron 2 и WaveGlow под свои нужды.

Вот что из этого вышло

Первые результаты.

Во время первых попыток обучения Tacotron 2 мы разбирались с архитектурой нейронной сети: как с ней работать, как её обучать и использовать. Первые результаты нас не устроили, но потом удалось добиться устойчивого синтеза с минимальными проблемами. За исключением того, что спектрограмма переводилась в аудиоданные с помощью алгоритма Гриффин-Лима, который даёт крайне сильный «металлический отблеск» в полученной синтезированной речи.

Для наглядности я прикреплю к каждому из этапов примеры синтеза и оригинальной записи диктора.

Синтез

Оригинал

Второй этап

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

Синтез

Оригинал

Третий этап

Добавили небольшие изменения в архитектуре нейронной сети, пересмотрели подходы к обучению моделей, подготовили аудиозаписи для обучения, добавили перевод слов в набор фонем. Благодаря этому получилось обучить модель всего на 3-х часах аудиозаписей, вместо 10-20 часов ранее.

Синтез

Оригинал

Четвертый этап

Русский язык

На этом этапе мы провели более масштабную работу. Добавили ещё несколько изменений в архитектуре нейронной сети, оптимизировали процесс подготовки аудиозаписей и обучения, добавили расстановку ударений и обработку ударных и безударных фонем. Существенно доработали процесс обучения моделей, благодаря которым получилось обучить модель всего на 1-м часе аудиозаписей без особой потери в качестве и стабильности синтеза.

Английский язык

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

Синтез на английском языке

А теперь текущий вариант синтеза речи на русском языке

Синтез 1

Оригинал 1


Синтез 2

Оригинал 2


Синтез 3

Оригинал 3


Синтез 4

Оригинал 4


Синтез 5

Оригинал 5

Заключение

Раньше для озвучивания переменных нам нужно было выбирать максимально похожий синтезированный голос у сторонних сервисов, но это сильно выбивалось из контекста диалога. Теперь для создания синтеза одного диктора требуется не более 1-го часа записи.

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

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

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

44
5 комментариев

А что с распознаванием?

Двигаемся в этом направлении. Думаю, что чуть позже напишем об этом.

Сколько примерно длилось обучение Tacotron 2?

У сокурсников получилось около 16-20 часов обучения, но это была исследовательская работа в рамках студенческой конференции . Вот ссылка на доклад на киберленинке https://cyberleninka.ru/article/n/sistema-sinteza-estestvennoy-rechi-dlya-russkogo-yazyka-na-baze-glubokih-neyronnyh-setey, результат синтеза речи можно посмотреть на сайте https://voxworker.com/ru (голос оксана). Если будут вопросы - то спрашивайте

Молодцы;)Очень интересно.