От хрипов до естественного звучания. Как развиваются технологии синтеза речи и откуда голоса у Сбера, Джой и Афины
Изобретатели пытались синтезировать человеческую речь ещё несколько веков назад. Сегодня виртуальные ассистенты живут в наших гаджетах, заменяют операторов в колл-центрах, помогают нам справляться с повседневными задачами и становятся персонажами фильмов. Рассказываем, как развивались технологии синтеза речи и как работает это направление в SberDevices.
учит виртуальных ассистентов Салют разговаривать
Голос — одна из главных составляющих виртуального ассистента как продукта. Если ассистент плохо выговаривает слова, не умеет задавать вопросы или игнорирует знаки препинания, его речь будет звучать странно (и это лишь несколько из возможных проблем). А значит, пользователи не захотят с ним общаться. Поэтому компании, в том числе Сбер, развивают технологии синтеза и ищут способы повысить качество.
Сделать это не так просто. На мировом уровне технологии синтеза речи развиты хорошо, и исследователи выкладывают статьи о своих разработках в открытый доступ. Но если просто использовать чужие методы и архитектуры нейросетей, хорошего качества не будет: даже самую лучшую технологию нужно адаптировать под свои нужды и бесконечно дорабатывать. В SberDevices мы не только используем лучшие на рынке практики, но и создаём свои силами целой команды R&D-специалистов.
Если упростить, наша главная задача звучит так: сделать невероятно качественный синтез речи для виртуальных ассистентов Салют. Решая её, мы попутно смогли придумать множество фичей. Они не только улучшили базовое качество, но и позволили нам, например, вручную контролировать интонации у каждого слова и обучать модели на маленьких датасетах. Первыми результаты слышат пользователи наших виртуальных ассистентов, но технологии доступны и внешним заказчикам (для этого мы создали платформу SmartSpeech). О технологических тонкостях я подробно расскажу ниже, но начать предлагаю с экскурса в историю речевых технологий.
Как развивались технологии синтеза речи до нейросетей
Первый искусственный синтез речи появился ещё в 18 веке. Изобретатели использовали механические устройства. Например, учёный Христиан Кратценштейн в 1773 году создал синтезатор речи на основе трубок органа, который издавал гласные звуки. А австриец Вольфганг фон Кемпелен в 1791 году изобрёл «говорящую машину», в которой меха подавали воздух на металлический язычок. При помощи человека это устройство могло произносить простые слова.
Звучало это крайне неестественно и странно, и долгое время технологии синтеза речи оставались примерно на одном уровне. Первый ощутимый прорыв случился в конце 20 века, когда появились компьютеры. Исследователи нашли логичное по тем временам решение: они нарезали человеческую речь на отдельные звуки, чтобы собирать из них слова. Так появился метод unit selection, он же конкатенативный синтез. Технология развивалась, появились алгоритмы, которые подбирали подходящие звуки. Например, машины стали понимать, что в слове «корова» первая «о» будет звучать как «а».
Обогнать unit selection-синтез по эффективности не получалось долго: первые версии Siri, например, работали на базе именно этой технологии. Те, кто покупал первые модели iPhone, наверняка помнят, как звучал голосовой помощник. Другие игроки на рынке тоже использовали unit selection. Выигрывал тот, у кого была самая большая база звуков и самые эффективные алгоритмы подбора. Но машины говорили роботизированными голосами, совсем не похожими на человеческие. А ещё — не умели задавать вопросы, восклицать и говорить эмоционально.
Параллельно развивалась ещё одна технология, принципиально другая: параметрический синтез. Исследователи научились выделять множество параметров речи дикторов. Самые простые из них — высота голоса, скорость и громкость. С помощью алгоритмов они предсказывали эти характеристики для текста, а потом озвучивали их отдельными алгоритмами (их называют вокодерами). То есть синтез речи проходил в два этапа. Если хотите услышать, как это было, посмотрите фрагмент из фильма «Робокоп» 1987 года — примерно так звучал весь синтез. Технология была не так популярна, как unit selection-синтез, а качество было низким. Так продолжалось до тех пор, пока в дело не вступили нейросети.
Как машины впервые заговорили по-человечески
В 2016 году лаборатория DeepMind, которую за два года до этого купил Google, выпустила статью про WaveNet. В ней исследователи рассказали, как им удалось сделать синтез человечным. Благодаря этой статье я сам, кстати, начал заниматься речевыми технологиями. Её авторы первыми смогли предложить эффективную нейросетевую архитектуру для синтезирования человеческой речи. В блоге DeepMind можно узнать подробности о разработке, а ещё — послушать примеры unit selection, параметрического синтеза и синтеза от лаборатории.
Разница была заметна: синтез от DeepMind не «спотыкался» и говорил более ровно и естественно. Дело в том, что команда смогла обучить нейросети на большом массиве записей человеческого голоса. Алгоритм, в отличие от своих предшественников, не использовал «кусочки» записанной речи для составления слов и фраз, а генерировал речь самостоятельно на основе текста. Статья моментально разошлась по сообществу: стало ясно, что именно такие технологии помогут сделать синтез естественным.
Но не всё было так просто. Google Assistant, голосовой помощник от Google, в 2016 году всё ещё работал на базе старых технологий. Компания использовала и unit selection-синтез, и параметрический. С появлением WaveNet это не изменилось, и пользователи Google (а также других компаний, у которых были голосовые помощники) по-прежнему слышали неестественный синтез. Дело в том, что WaveNet требовал больших вычислительных мощностей. Технология оказалась слишком тяжеловесной и дорогой для масштабирования. За пару лет эту проблему решили, создав новые архитектуры, более быстрые. После этого качественный синтез наконец-то стал доступен пользователям. Нейросети для создания синтезированной речи стали использовать Google, Apple, Amazon и другие компании, в том числе в России.
Следующий большой прорыв случился уже в 2017 году. Google опубликовал ещё две статьи — про Tacotron и Tacotron2. Компания создала нейросетевые архитектуры, которые позволяли синтезировать речь на основе сгенерированных из текста спектрограмм. Спектрограмма — это визуализация звука. Нейросети анализировали текст, генерировали картинку, а по ней — звук. Примеры синтеза, который исследователи получили с помощью Tacotron2, можно послушать здесь.
В итоге на рынке наконец-то появился качественный и быстрый синтез. С тех пор исследователи по всему миру работают по нескольким направлениям. Во-первых, они пытаются понять, как ускорить и удешевить процесс создания синтезированной речи. Во-вторых, стараются улучшать его качество. Сейчас около 90% того, что слышат пользователи, — хорошая естественная речь. Компании стараются сделать всё, чтобы эти 90% превратились в 99%. Цель именно такая, потому что стропроцентно идеальной речи не бывает и у людей. Даже профессиональные дикторы читают без ошибок всего лишь 95–98% предложений.
Сравнение человеческой и синтезированной речи из оригинальной статьи про Tacotron 2
Как устроены технологии синтеза речи в SberDevices
Над созданием голосов виртуальных ассистентов Салют работает целая команда. Войс-коучи записывают голоса реальных дикторов, разметчики готовят датасеты, дата-сайентисты обучают нейросети и проводят эксперименты, программисты пишут эффективный код, а аналитики находят способы измерять качество. В результате у нас получилось три основных голоса: мужской для Сбера и женские — для Джой и Афины. Пользователи могут выбрать персонажа по душе. Например, в мобильном приложении СберБанк Онлайн пользователи чаще обращаются к эрудированному Сберу, а на SberPortal — к общительной Джой.
О том, как происходит процесс записи дикторов и на что это влияет, мы подробно рассказывали здесь. Я же расскажу о том, что происходит на следующих этапах и как устроена технология.
Мы разговариваем благодаря речевому тракту, и устроен он довольно сложно. Вот что происходит, когда человек говорит, например, слово «Привет». Из легких выходит воздух, который колеблет мембраны голосовых связок. Получается периодический сигнал, он резонирует и проходит через несколько фильтров — горло, нёбо, язык, зубы, губы. Так сигнал обрастает дополнительными гармониками (модулируется) и выходит изо рта в виде акустической волны. Интересно, что голосовые связки участвуют в процессе не всегда. Попробуйте сказать вслух «тссс», как если бы вы просили кого-то быть потише. Ваши голосовые связки не будут задействованы.
Не напрягаются связки и когда мы шепчем. Замечали, что в шёпоте практически нет эмоций? Обычно голосовые связки отвечают за высоту голоса, а значит, это основной орган, позволяющий нам говорить с разными интонациями и выражать эмоции. Нам нужен был эмоционально богатый синтез, к тому же с вопросительными и восклицательными интонациями. Поэтому мы поняли, что без имитации работы голосовых связок в нейросетях нам не обойтись, ведь именно они задают тон всей речи.
За основу мы взяли Tacotron 2 и LPCNet. Это очень быстрый и качественный вокодер. Начав использовать такую комбинацию, мы столкнулись со сложностями. Например, алгоритмы не всегда корректно расставляли паузы в предложениях и ошибались в интонациях. Особенно плохо звучали вопросы. Чтобы это исправить, мы попросили дикторов записать множество вариантов вопросительных предложений с акцентом на разные слова. Например, «ВЫ хотите открыть счёт?» и «Вы хотите открыть СЧЁТ?» — разные по смыслу вопросы. Но дозаписью дикторов и обогащением датасета всё не ограничилось.
С момента своего появления все системы синтеза речи просто переводили буквы в звук, не понимая смысла написанного. Для нас было очевидно, что нужно научить алгоритмы это делать — это просто не могло не улучшить качество. Чтобы архитектура научилась понимать смысл слов и контекст, в котором они находятся, мы взяли BERT — языковую модель от Google. Сейчас мы используем ее сразу для нескольких задач, например для расстановки пауз. Это крайне важно: иногда от паузы зависит смысл высказывания. Мы обучили Tacotron 2 так, чтобы он реагировал на специальный символ, которым пометили все паузы в обучающих текстах. Оказалось, что для произвольных текстов недостаточно просто останавливаться на знаках препинания. В естественной речи мы игнорируем некоторые из них, а иногда делаем паузы в местах, где нет никаких запятых или точек. Разобраться нам помог BERT: исходя из смысла предложения, он предсказывает, после каких слов естественно сделать паузу.
Похожий подход мы использовали для работы с интонациями. Отдельная нейросеть для каждого слова предсказывает напряжение голосовых связок, а также как громко и быстро его нужно сказать. Без понимания смысла это практически невозможно сделать хорошо, поэтому использование языковой модели и тут делает синтез лучше. Применение этой нейросети сделало синтез гораздо живее, а дополнительно — дало нам возможность контролировать его вручную, а не только с помощью предсказаний от алгоритмов. Мы нечасто используем «ручное управление», но в некоторых случаях оно полезно.
Всё это — богатый и качественный датасет, решение проблем с паузами и интонациями, использование языковой модели — помогло сделать синтез достаточно естественным и приятным на слух. Это не только наше мнение: отбором моделей занимаются живые люди на краудсорсинговых платформах. Там мы проводим A/B-тесты экспериментальных разработок, и пользователи нашего синтеза слышат только те модели, которые лучше старых по мнению большинства респондентов.
Зачем мы продолжаем работу, если синтез такой хороший
Качество синтезированной речи на сегодняшний день и так достаточно высокое — послушайте, как разговаривают наши виртуальные ассистенты Салют или, например, Alexa от Amazon. Порой сложно понять, что звучит из динамиков — запись диктора или синтезированная речь. Скорее всего, мы найдём новые способы повышать качество синтеза. Для пользователей это вряд ли будет заметно — просто с каждым новым релизом ассистенты будут разговаривать чуть лучше. Это плавный и итеративный процесс.
По моим наблюдениям, пользователи делятся на два типа. Первые хотят, чтобы синтез был максимально естественным — они любят разговаривать с ассистентами и радуются, когда виртуальный помощник становится эмоциональнее и человечнее. Вторые пока побаиваются новых технологий — они предпочли бы общаться с роботизированным голосом, потому что естественный синтез сбивает их с толку. Это нормально, ведь качественный синтез появился на рынке относительно недавно. Но сейчас люди слышат синтезированный голос в такси, беседуют с роботами, когда звонят в банки или другие компании, и постепенно привыкают к этому. Скорее всего, скептиков будет становиться всё меньше.
Но кое-какие прорывы нас всё-таки ждут. Например, технологии синтеза речи станут гораздо доступнее: быстрее и дешевле. Бизнесу, например, уже сейчас дешевле заказать распознавание и синтез речи, чем содержать большой колл-центр. Если раньше голосовые помощники «под ключ» были диковинкой, то сейчас на рынке есть готовые решения, легкие в использовании. Часть необходимых для этого технологий доступны на нашей платформе SmartSpeech, которую уже используют бизнес-заказчики.
Вероятно, скоро такие технологии станут доступны и обычным пользователям. Ещё недавно для создания хорошего синтеза нужно было минимум 20 часов качественных записей дикторов, а в идеале — около 100. Сейчас компании учатся синтезировать речь, используя меньше данных. Так, например, звучит наш синтез, обученный всего на 50 минутах студийных записей.
Возможно, скоро появятся мобильные приложения для создания качественного синтеза. Тогда каждый сможет записать на смартфон несколько часов или даже минут речи и услышать, как машина разговаривает его голосом.
Блин ребят, вы занимаетесь такими классными вещами и так плохо об этом пишете.
Почему так?
С неделю назад звонили из сбера(900), был мужской голос представился Олегом и предложил кредиты и другие сервисы банка, зная что банк никогда сам не звонит я спросил: "Это человек или робот?", на что мне ответили без без того искусственного акцента: "Я автоматизированная система обзвона на базе искусственного интеллекта созданный сбером". Я сказал, "Спасибо не надо кредитов", он ответил: "До свидания". И все. Не сказать, что был в шоке ничего не сказать, я был удивлен насколько голос похож на человека, а в начале я и подумал что это человек. Сбербанк, расскажите побольше про свои ИИ и другие крутые сервисы, и про Christofari NEO, который вы запустили после Christofari.