Как это работает? Синтез речи

6 октября 2016, 14:52

Многим из вас наверняка доводилось управлять компьютером или смартфоном с помощью голоса. Когда вы говорите Навигатору «Поехали на Гоголя, 25» или произносите в приложении Яндекс поисковый запрос, технология распознавания речи преобразует ваш голос в текстовую команду. Но есть и обратная задача: превратить текст, который есть в распоряжении компьютера, в голос. 

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

В Яндексе для озвучивания текстов используется технология синтеза речи из комплекса Yandex Speechkit. Она, например, позволяет узнать, как произносятся иностранные слова и фразы в Переводчике. Благодаря синтезу речи собственный голос получил и Автопоэт.

Подготовка текста

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

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

Произношение и интонирование

Когда транскрипция готова, компьютер рассчитывает, как долго будет звучать каждая фонема, то есть сколько в ней фреймов — так называют фрагменты длиной 25 миллисекунд. Затем каждый фрейм описывается по множеству параметров: частью какой фонемы он является и какое место в ней занимает; в какой слог входит эта фонема; если это гласная, то ударная ли она; какое место она занимает в слоге; слог — в слове; слово — в фразе; какие знаки препинания есть до и после этой фразы; какое место фраза занимает в предложении; наконец, какой знак стоит в конце предложения и какова его главная интонация.

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

Чтобы прочитать подготовленный текст, используется акустическая модель. Она отличается от акустической модели, которая применяется при распознавании речи. В случае с распознаванием модели нужно установить соответствие между звуками с определёнными характеристиками и фонемами. В случае с синтезом акустическая модель, должна, наоборот, по описаниям фреймов составить описания звуков.

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

Голоса

Наконец, о самом голосе. Узнаваемыми наши голоса, в первую очередь, делает тембр, который зависит от особенностей строения органов речевого аппарата у каждого человека. Тембр вашего голоса можно смоделировать, то есть описать его характеристики — для этого достаточно начитать в студии небольшой корпус текстов. После этого данные о вашем тембре можно использовать при синтезе речи на любом языке, даже таком, которого вы не знаете. Когда роботу нужно что-то сказать вам, он использует генератор звуковых волн — вокодер. В него загружается информация о частотных характеристиках фразы, полученная от акустической модели, а также данные о тембре, который придаёт голосу узнаваемую окраску.

В качестве примера мы озвучили два последних предложения предыдущего абзаца разными голосами — мужским и женским:

***

Подробнее о технологиях из комплекса Yandex SpeechKit можно узнать на этой странице или на специальном ресурсе. Если вы разработчик и хотите протестировать облачную или мобильную версию SpeechKit, вам поможет сайт, посвящённый технологиям Яндекса.

49 комментариев
Долго еще будете рекламировать бардели по запросу "Питер", "Петербург"?
Рытикова Людмила
19 октября 2016, 16:27
a1119565,
Вы ничего не понимаете. Это тестируется будущий сервис Яндекс.Досуг
Рытикова Людмила,
ахахаха 😁
А можно сделать эти голоса некартавыми? Неприятно слушать картавых.


И почему [тємбр], когда [тэмбр]?
Света Чистякова
6 октября 2016, 22:22
У Автопоэта специфический выговор, да, но это не баг, а фича.
Света Чистякова
6 октября 2016, 22:24
С тембром синтез, конечно, дал маху, но он исправится.
сделайте уже кто нидь, чтоб голос менялся в диалогах мужчины с женщиной ;)
Дмитрий Янковский
10 октября 2016, 15:34
Известно, что язык есть бесконечное множество лексем. Что будет делать робот если столкнётся со словоформой, которой нет ни в одном словаре, которая раньше вообще не встречалась и едва ли к ней применимы академические правила?
Дмитрий Янковский,
Наверняка прочтет так как сочтет нужным, как предписывает алгоритм :)
Света Чистякова
12 октября 2016, 13:42
Дмитрий, здравствуйте. В таком случае система синтеза породит произношение исходя из правил чтения для данного языка и произнесёт то, что получилось.


Иными словами, система будет делать то же самое, что и человек — опираться на свои навыки и знания. (Но и человек, который не знаком с произношением, например, слова Llanfairpwllgwyngyll, выдаст что-то комическое, как бы он ни старался:)
Света Чистякова,
Лелинваир Паулгвинжир
Доброго времени суток. Хочется затронуть вопрос о синтезе речи в Яндекс Переводчике. Есть ли в планах создание голосового движка для Эльфийского языка, а именно Синдарин'а?
Света Чистякова
12 октября 2016, 13:42
Здравствуйте. М-м. Передадим пожелание команде Переводчика)
MAZAIK96,
"Доброго времени суток"?!  Так выражаться нельзя!!!

А будут роботы с уральским говорком?
Света Чистякова
12 октября 2016, 13:37
Если обучить модель на соответствующих записях, то будут).
Кристина Гонтьер
11 октября 2016, 10:09
Сможет ли прочесть робот тексты искусственных языков правильно?
Света Чистякова
12 октября 2016, 13:44
Если для этих языков есть правила чтения, словари и аудиозаписи, то да, на них можно обучить робота.
Мужик интонациями больше понравился. 
Будет ли когда-нибудь синтез речи звучать с более мелодичной интонацией? Ведь так неприятно и сложно воспринимать речь, звучащую как робот, да еще с не самым приятным голосом.
А как быть со скороговорками?? насколько хорошо робот сможет прочитать их? я имею в виду скорость прочтения.
Света Чистякова
12 октября 2016, 14:06
Скорость произнесения настраивается: можно сделать медленнее, можно быстрее. Вот, например, скороговорка про Карла и Клару на нормальной скорости: https://soundcloud.com/user-425756364/sintez-rechi.
В примерах качество синтеза речи очень среднее. Мало высоких частот, немного ненужных низких. Используется ли какой-то механизм постобработки ? Или он отсутсвует?
Есть ли в планах глубокая интеграция речевых технологий и ИИ в "Яндекс.Строку", ну или ещё куда-нибудь?
Света Чистякова
27 октября 2016, 15:25
Владислав, здравствуйте. В Яндекс.Строке речевые технологии уже вовсю используются. Строка умеет по команде «Слушай, Яндекс» переходить в режим ожидания запроса (технология голосовой активации) и распознаёт произнесённые вслух запросы (технология распознавания речи).
Света Чистякова,
Она не отвечает. И вообще как то ущербно сделано. Я про преобразование текста в речь.
Поставлю вопрос по-другому. Не планируете сделать что-нибудь типа голосового ассистента Кортаны? Сервисов разных у вас полно.
Света Чистякова
29 октября 2016, 02:15
А! Вы хотите, чтобы ответы тоже озвучивались? Поняла, пожелание запишем. Насчёт ассистентов: пожалуй, сейчас самое близкое — это бот Яндекса в Телеграме, но он не голосовой, а текстовый. Но мы думаем в эту сторону. 
Света Чистякова,
Да, иногда очень удобна озвучка ответов. Но сейчас "строка" к сожалению не умеет элементарно выдавать ответ на запрос "два умножить на два".
Про разработку своего "Я.Ассистента" конечно задумайтесь и желательно скорее, ибо мне кажется сейчас наступает эра Искусственного Интеллекта. А опять же ресурсов у Яндекс для этого полно. 😀
Вы пишите, что для того, чтобы смоделировать голос достаточно лишь начитать небольшой корпус текстов. Можете сказать насколько он небольшой? Он таким же объемом как ваш текст в примере или побольше? Вы планируете синтезировать только русскую речь или будут еще какие-нибудь языки?
Света Чистякова
1 ноября 2016, 22:50
Здравствуйте. Большой и небольшой — это относительные понятия. Наверно, поможет такой пример: когда мы экспериментировали с синтезом, мы научили его, в частности, воспроизводить голос Оксаны — девушки, которая озвучила Яндекс.Навигатор. Для обучения использовали записи из приложения — это несколько сотен слов и фраз. Получилось вполне узнаваемо. Насчёт языков — сейчас умеем синтезировать речь на русском и на английском.
Ого! У меня в воображении уже возникла картина, надеюсь, ближайшего будущего. Как на КиноПоиске, например, с помощью таких технологий как Yandex SpeechKit можно будет в реальном времени переводить и озвучивать какой-нибудь иностранный фильм с оригинального языка. Захотелось посмотреть какой-нибудь малоизвестный китайский фильм не переведенный на русский язык? Без проблем, Yandex SpeechKit тебе в помощь. 
Бесспорно, компьютерные технологии впечатляют. Но можно ли быть уверенным, что машины не ошибаются? Сомневаюсь. Хотя возможно я недооцениваю их мощь, но всё же.. Что насчёт омонимов? Как будет осуществляться синтез речи в этом случае? Сможет ли программа распознать то слово, которое мне необходимо. Важное может заключаться в мелочах.
Anna.Malykhina1996
2 ноября 2016, 11:07
Планируется ли ещё большее "очеловечевание" синтезированной речи? Человек не может несколько раз подряд произнести один и тот же звук. Может и здесь имеет каждый раз немного изменять характеристики звука? + Я думаю, было бы неплохо усовершенствовать длительность пауз.
Выпустите расширения для браузера, для чтения вслух новостей и прочего текста.
Спасибо)
Владислав
24 ноября 2016, 22:34
Арчи,
поддерживаю!
Света Чистякова
24 ноября 2016, 23:54
Подумаем. Спасибо.
Наташа Козик
1 декабря 2016, 00:35
Здравствуйте! 
Очевидно, что тексты бывают разные, в зависимости от стиля, содержания и т.д. Скажите, а как поведет себя программа если встретит какую-нибудь математическую/ химическую формулу ( даже одну из простых). Если в случае числительных, числа записываются словами, то как быть тут ? 
Артур Пирожков
1 декабря 2016, 11:25
При использовании диктора для записи образцов речи качество несомненно растет, однако это затратно по времени. В то же время использование множества голосов заметно понижает качество при синтезе. 
Возможно ли совершенствование данной технологии и в каком на ваш направлении она будет развиваться?
сможет ли синтезированная речь когда-нибудь сравниться с речью человека?
Настя Денисова
14 декабря 2016, 22:02
С одной стороны это конечно хорошо,что компьютерный синтез речи так совершенствуется,но с другой ,вам не страшночто скоро компьютеры будут говорить за обленившихся в край людей ?
Как было написано выше:"Узнаваемыми наши голоса, в первую очередь, делает тембр, который зависит от особенностей строения органов речевого аппарата у каждого человека."

А как поведёт себя программа, когда услышит речь человека, у которого есть дефекты?Речь маленького ребёнка?
Света Чистякова
20 декабря 2016, 18:02
Здравствуйте. Вообще зависит от речевых особенностей конкретного человека. Если ребёнок маленький, часто его речь сложно разобрать даже людям (что уж говорить про машину). Целиком понимают только родители. :)
Lagutin Sergey
11 июля, 10:21
Выпустите читалку статей и книг, сейчас пользуюсь стандарной айфоновской, читает намного хуже, и там совсем плохо с ударениями и интонациями
Владислав
12 июля, 04:17
Lagutin Sergey,
поддерживаю)
приятные нормальные  голоса добавить регулировку скорости чтения ! иСделайте наконец чтение этими голосами с браузера! в айпаде могу озвучивать станицы а тут на скоём компе нет! я привык  к читалкам! книги слушаю постоянно Тотал Ридер на айпаде! в начале там был очень хороший голос потом с появлением сири хуже! Нет выбора мужского голоса! но привык! сделайте дополнение к браузеру для озвучки страниц сайта с текстом!!!!!!!!!
Обновлено 12 июля, 17:11
когда Алиса будет в discord очень хочу такого бота
Интересно, почему произнести текст сложнее, чем распознать? Ведь у каждого человека свои характеристики голоса, интонации, у некоторых проблемы с речью. Однако компьютеру нужно распознать любую вариацию слов. Другое дело, прочитать слово. Даже если компьютер его ни разу не встречал, должно же быть проще сделать это, опираясь на правила. В любом случае, человек поймёт. А если компьютер не распознал то, что сказал человек, голосовой запрос так и останется безрезультатным.
Здравствуйте! Интересуюсь для общего развития :)  Буду рад, если расскажете. 
1. Правильно ли я понял из статьи, что робота можно научить читать голосом любого человека (ну на сколько это пока возможно  сточки зрения похожести), имея предварительно запись его голоса? Есть ли особые требования к записи? 
2. Какого объема и содержания нужен примерно для этого текст? 
3. Должен ли этот базовый текст быть связанным с точки зрения смысла?  От манеры чтения зависит итоговый голос и интонации робота? 
4.  Если текст зачитать с выражением и намеренно монотонно будут ли отличия в голосе робота? 
5. Почему Алиса говорит более человечно, чем например тот же робот-чтец новостей? 
6. Не совсем уже к статье. Но может ли робот понимать эмоциональную окраску содержания текста. Может как-то зависеть от этого голос робота? Ну, например, робот говорит плохие новости серьезным голосом, а радостные или забавные новости уже иначе. (при этом подразумевается, что базовый голос один и тот же). 
7. Можно ли, например, на основе другой записи голоса добавить базовому голосу акцент? Например, робот читает новость, пытаясь говорить к примеру с новгородским или грузинским выговором, но все равно по-русски. 



Очень интересная тема для Кошевой. Синтез речи очень популярен сегодня. Мы сталкиваемся с этим каждый день. 
Обновлено 27 ноября, 11:30