Как разработать собственный синтез речи и составить конкуренцию 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-го часа записи.
Можем ли мы синтезировать голос актеров и публичных личностей для использования в киноиндустрии? Скорее можем, но технология предполагает более масштабное и технологичное применение в голосовых ботах, где объем синтеза гораздо больше.
На текущий момент мы продолжаем двигаться в сторону улучшения качества синтеза, так как есть ещё ряд идей как сделать голос ещё реалистичнее. Запустили несколько пилотных проектов с текущими российскими клиентами и получили несколько запросов от зарубежных компаний.
Спасибо, что дочитали до конца. В комментариях будем рады ответить на вопросы или выслушать предложения и идей.
А что с распознаванием?
Двигаемся в этом направлении. Думаю, что чуть позже напишем об этом.
Сколько примерно длилось обучение 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 (голос оксана). Если будут вопросы - то спрашивайте
Молодцы;)Очень интересно.