2

Как глубокое обучение изменило голос Siri

Егор

1496503397_ios-11-siri-840x440.jpg

Siri — голосовой ассистент, который впервые был представлен в 2011 году вместе с iOS 5. Разумеется, с тех пор он серьезно развивался: научился говорить на разных языках (в том числе и на русском), пришел на компьютеры Mac, научился взаимодействовать с программами от сторонних разработчиков и т.д., но качественный скачок он сделал только с анонсом iOS 10 — теперь его голос основан на глубоком обучении, что позволяет ему звучать более естественно и плавно. Что такое глубокое обучение и как синтезируется голос Siri — об этом мы и поговорим в этой статье.

Введение

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

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

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

Как работает синтез речи

Создание высококачественной системы преобразования текста в речь (TTS) для персонального помощника — непростая задача. Первый этап — найти профессиональный голос, звучание которого будет приятным, разбочивым и соответствующим личности Сири. Чтобы охватить некоторые вариации из огромного разнообразия человеческой речи требуется записать 10-20 часов речи в профессиональной студии. Сценарии записи варьируются от аудиокниг до инструкций по навигации, и от подсказок до ответов на остроумные шутки. Как правило, эта естественная речь не может использована в голосовом помощнике, потому что невозможно записать все возможные высказывания, которыми может говорить помощник. Таким образом, выбор звуковых единиц в TTS основан на разрезании записанной речи на ее элементарные компоненты, такие как фонемы, а затем их рекомбинации в соответствии с входным текстом для создания совершенно новой речи. На практике, выбор соответствующих сегментов речи и объединение их друг с другом непростая задача, поскольку акустические характеристики каждой фонемы зависят от соседних и интонации речи, что часто делает речевые единицы несовместимыми друг с другом. На рисунке ниже показано, как речь может быть синтезирована с использованием речевой базы данных, разделенной на фонемы:

half-phone-boundaries.png

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

Основная проблема выбора звуковых единиц в TTS заключается в том, чтобы найти последовательность единиц (например, фонем), которые удовлетворяют входному тексту и предсказанной интонации, при условии, что они могут быть объединены вместе без слышимых сбоев. Традиционно процесс состоит из двух частей: front-end и back-end (входящие и выходящие данные), хотя в современных системах граница иногда может быть неоднозначной. Целью front-end является предоставление фонетической транскрипции и информации об интонации на основе исходного текста. Сюда же включается и нормализация исходного текста, который может содержать числа, сокращения и т.д.:

process-model-database.png

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

В отличие от front-end, бэкэнд в основном не зависит от языка. Он состоит из выбора нужных звуковых единиц и их конкатенации (то есть склейки) в фразу. Когда система обучается, записанные речевые данные сегментируются в отдельные речевые сегменты, используя принудительное выравнивание между записанной речью и сценарием записи (с использованием акустических моделей распознавания речи). Затем сегментированная речь используется для создания базы данных звуковых единиц. База данных дополнительно пополняется важной информацией, такой как лингвистический контекст и акустические характеристики каждой единицы. Используя построенную базу данных устройства и предсказанные интонационные функции, которые определяют процесс выбора, выполняется поиск Витерби (вверху — целевые фонемы, ниже — возможные звуковые блоки, красная линия — наилучшее их сочетание):

viterbi_lattice.png

Выбор основан на двух критериях: во-первых, звуковые единицы должны иметь одну (целевую) интонацию, и, во-вторых, единицы должны быть, по возможности, объединены без слышимых сбоев на границах. Эти два критерия называются соответственно целевыми и конкатенационными расходами. Целевая стоимость — это разница между прогнозируемыми целевыми акустическими характеристиками и акустическими характеристиками, извлекаемыми из каждого блока, тогда как стоимость конкатенации представляет собой акустическую разницу между последующими единицами:

unit-selection-example.png

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

Технологии, стоящие за новым голосом Сири

Скрытые марковские модели (СММ) обычно используются в качестве статистической модели для целевых прогнозов, поскольку они непосредственно моделируют распределения акустических параметров, и, таким образом, их можно легко использовать для вычисления целевой стоимости. Тем не менее, подходы, основанные на глубоком обучении, часто превосходят СММ в синтезе параметрической речи.

Целью системы TTS Сири является подготовка единой модели, основанной на глубоком обучении, которая может автоматически и точно прогнозировать как целевые, так и конкатенационные затраты для звуковых единиц в базе данных. Таким образом, вместо СММ использует смесь плотности сети (СПС, mixture density network) для прогнозирования распределений по определенным признакам. СПС объединяют обычные глубокие нейронные сети (ГНС) с гауссовскими моделями.

Обычный ГНС представляет собой искусственную нейронную сеть с несколькими скрытыми слоями нейронов между входным и выходным уровнями. Таким образом, ГНС может моделировать сложную и нелинейную зависимость между входными и выходными характеристиками. Напротив, СММ моделирует распределение вероятностей выходных данных с учетом входных данных с использованием набора гауссовых распределений, и обычно обучается с использованием метода максимизации ожидания. СПС сочетает преимущества ГНС и СММ, используя ГНС для моделирования сложной взаимосвязи между входными и выходными данными, но обеспечивая распределение вероятностей на выходе:

mdn.png

Для Siri используется унифицированная целевая и конкатенационная модели на основе СПС, которые могут прогнозировать распределение как целевых характеристик речи (спектра, высоты тона и продолжительности), так и стоимости конкатенации между звуковыми единицами. Иногда речевые особенности, такие как аффиксы, довольно стабильны и развиваются медленно — например, в случае гласных. В другом месте речь может изменяться довольно быстро — например, при переходе между озвученными и невокализованными звуками речи. Чтобы учитывать эту изменчивость, модель должна иметь возможность корректировать свои параметры в соответствии с вышеупомянутой изменчивостью. СПС делает это используя отклонения, встроенные в модель. Это важно для улучшения качества синтеза, поскольку мы хотим рассчитать целевые и конкатенационные издержки, характерные для текущего контекста.

После подсчета единиц на основе общей стоимости с использованием СПС выполняется традиционный поиск по Витерби, чтобы найти лучшее сочетание звуковых единиц. Затем они объединяются с использованием метода совпадения с перекрытием формы волны, чтобы найти оптимальные моменты времени конкатенации для создания плавной и непрерывной синтетической речи.

Итоги

Для использования СПС в Сири было записано как минимум 15 часов высококачественных речевых записей на частоте 48 кГц. Речь была разделена на фонемы с использованием принудительного выравнивания, то есть было применено автоматическое распознавание речи, чтобы выровнять входную звуковую последовательность с акустическими характеристиками, извлеченными из речевого сигнала. Этот процесс сегментации привел к созданию примерно 1-2 миллионов фонем.

Чтобы провести процесс отбора звуковых единиц на основе СПС была создана единая целевая и конкатенационная модели. Входные данные для СПС состоят в основном из двоичных значений с некоторыми дополнительными функциями, которые представляют собой информацию о контексте (по две предшествующих и следующих фонемы). 

Качество новой системы TTS Сири превосходит предыдущую — это подтверждают многочисленные тесты на картинке ниже (интересно, что лучше всего оценили как раз новый русский голос Сири):

ABX_scores_2x.png

Лучшее качество звука связано как раз с базой данных на основе СПС — это обеспечивает лучший выбор и конкатенацию звуковых блоков, более высокую частоту дискретизации (22 кГц против 48 кГц) и улучшенное сжатие звука.

Прочесть оригинал статьи (требуется хорошее знание английского и физики), а также послушать, как менялся голос Сири в iOS 9, 10 и 11, можно тут.

16

Будь в курсе последних новостей из мира гаджетов и технологий

Мы в соцсетях

Комментарии

+8
Но, к сожалению, понимание смысла у Siri осталось на уровне 2011 ...
1 сентября 2017 в 15:17
#
+38
Егор, ты офигенен! Единственный человек, чьи новости интересно читать.
1 сентября 2017 в 18:34
#
+38
На самом деле, статью такого уровня не стыдно и на хабре выложить.
1 сентября 2017 в 18:38
#
+313
Познавательно
1 сентября 2017 в 19:42
#
Xoxlamon
+107
5+
1 сентября 2017 в 20:14
#
XANTER
+934
Сири классная баба:) много что умеет скрытого но плохо что не понимает русской элементаршины каждодневной

Например разбуди меня через два часа ставит на 14:00 или 2:00 но если сказать разбуди через полтора или через часик сработает коректно, так же и с будильником надо чтоб завела новый на определённое время надо по особому говорить и слово заведи будильник на (время) не действует она предложит ближайшие которые есть, а вот тоже разбуди в (время) она заводит новый и и так же "поставь" работает, а вот привычное заведи нет
1 сентября 2017 в 20:25
#
XANTER
+934
Могу в чем то ошибиться за статью спасибо )))
1 сентября 2017 в 20:26
#
+189
автор, продолжай писать/переводить, у тебя отлично выходит! подобные статьи, действительно, очень интересно читать! палец вверх
2 сентября 2017 в 02:38
#
+189
блин, столько эмодзи мимо кассы ушло...
разрабы iguides — вам тяжело в комментах реализовать стандартный набор смайлов? как так?
2 сентября 2017 в 02:39
#
babdima
+676
Им редактирование и удаление до сих пор тяжело сделать. А смайлы это в следующей жизни будет.
3 сентября 2017 в 14:50
#
–6
Отличная статья!
2 сентября 2017 в 16:03
#