Многим из вас наверняка доводилось управлять компьютером или смартфоном с помощью голоса. Когда вы говорите Навигатору «Поехали на Гоголя, 25» или произносите в приложении Яндекс поисковый запрос, технология распознавания речи преобразует ваш голос в текстовую команду. Но есть и обратная задача: превратить текст, который есть в распоряжении компьютера, в голос.
Если набор текстов, которые надо озвучить, относительно невелик и в них встречаются одни и те же выражения — как, например, в объявлениях об отправлении и прибытии поездов на вокзале, — достаточно пригласить диктора, записать в студии нужные слова и фразы, а затем собрать из них сообщение. С произвольными текстами, однако, такой подход не работает. Здесь пригодится технология синтеза речи.
В Яндексе для озвучивания текстов используется технология синтеза речи из комплекса Yandex Speechkit. Она, например, позволяет узнать, как произносятся иностранные слова и фразы в Переводчике. Благодаря синтезу речи собственный голос получил и Автопоэт.
Подготовка текста
Задача синтеза речи решается в несколько этапов. Сначала специальный алгоритм подготавливает текст, чтобы роботу было удобно его читать: записывает все числа словами, разворачивает сокращения. Затем текст делится на фразы, то есть на словосочетания с непрерывной интонацией — для этого компьютер ориентируется на знаки препинания и устойчивые конструкции. Для всех слов составляется фонетическая транскрипция.
Чтобы понять, как читать слово и где поставить в нём ударение, робот сначала обращается к классическим, составленным вручную словарям, которые встроены в систему. Если в нужного слова в словаре нет, компьютер строит транскрипцию самостоятельно — опираясь на правила, заимствованные из академических справочников. Наконец, если обычных правил оказывается недостаточно — а такое случается, ведь любой живой язык постоянно меняется, — он использует статистические правила. Если слово встречалось в корпусе тренировочных текстов, система запомнит, на какой слог в нём обычно делали ударение дикторы.
Произношение и интонирование
Когда транскрипция готова, компьютер рассчитывает, как долго будет звучать каждая фонема, то есть сколько в ней фреймов — так называют фрагменты длиной 25 миллисекунд. Затем каждый фрейм описывается по множеству параметров: частью какой фонемы он является и какое место в ней занимает; в какой слог входит эта фонема; если это гласная, то ударная ли она; какое место она занимает в слоге; слог — в слове; слово — в фразе; какие знаки препинания есть до и после этой фразы; какое место фраза занимает в предложении; наконец, какой знак стоит в конце предложения и какова его главная интонация.
Другими словами, для синтеза каждых 25 миллисекунд речи используется множество данных. Информация о ближайшем окружении обеспечивает плавный переход от фрейма к фрейму и от слога к слогу, а данные о фразе и предложении в целом нужны для создания правильной интонации синтезированной речи.
Чтобы прочитать подготовленный текст, используется акустическая модель. Она отличается от акустической модели, которая применяется при распознавании речи. В случае с распознаванием модели нужно установить соответствие между звуками с определёнными характеристиками и фонемами. В случае с синтезом акустическая модель, должна, наоборот, по описаниям фреймов составить описания звуков.
Откуда акустическая модель знает, как правильно произнести фонему или придать верную интонацию вопросительному предложению? Она учится на текстах и звуковых файлах. Например, в неё можно загрузить аудиокнигу и соответствующий ей текст. Чем больше данных, на которых учится модель, тем лучше её произношение и интонирование.
Голоса
Наконец, о самом голосе. Узнаваемыми наши голоса, в первую очередь, делает тембр, который зависит от особенностей строения органов речевого аппарата у каждого человека. Тембр вашего голоса можно смоделировать, то есть описать его характеристики — для этого достаточно начитать в студии небольшой корпус текстов. После этого данные о вашем тембре можно использовать при синтезе речи на любом языке, даже таком, которого вы не знаете. Когда роботу нужно что-то сказать вам, он использует генератор звуковых волн — вокодер. В него загружается информация о частотных характеристиках фразы, полученная от акустической модели, а также данные о тембре, который придаёт голосу узнаваемую окраску.
***
Подробнее о технологиях из комплекса Yandex SpeechKit можно узнать на этой странице или на специальном ресурсе. Если вы разработчик и хотите протестировать облачную или мобильную версию SpeechKit, вам поможет сайт, посвящённый технологиям Яндекса.