Четыре года назад мы запустили Алису. С самого начала она обладала собственным, узнаваемым голосом. Хотя проблемы тоже были: интонации хромали, эмоции скакали от слова к слову, а омонимы и вовсе ставили синтез в тупик. Алиса звучала пусть и не как робот, но ещё и не как человек.

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

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

Ранний параметрический синтез: эпоха до Алисы


Мы начали заниматься голосовыми технологиями в 2012 году. Через год родился SpeechKit. Ещё через год мы научились синтезировать голос — возможно, вы помните YaC 2014 и экспериментальный проект Яндекс.Диктовка. С тех пор прогресс не останавливается.

Исторически речевой синтез бывает двух видов: конкатенативный и параметрический. В случае с первым, есть база кусочков звука, размеченных элементами речи — словами или фонемами. Мы собираем предложение из кусочков, конкатенируя (то есть склеивая) звуковые сегменты. Такой метод требует большой базы звука, он очень дорогой и негибкий, зато до пришествия нейросетей давал самое высокое качество.

При параметрическом синтезе базы звука нет — мы рисуем его с нуля. Из-за большого прыжка в размерности end2end работает плохо даже сейчас. Лучше разделить это преобразование на два шага: сначала нарисовать звук в особом параметрическом (отсюда название метода) пространстве, а затем преобразовать параметрическое представление звука в wav-файл.

В 2014 году нейросетевые методы речевого синтеза только зарождались. Тогда качеством правил конкатенативный синтез, но нам в эру SpeechKit было необходимо легковесное решение (для Навигатора), поэтому остановились на простом и дешёвом параметрическом синтезе. Он состоял из двух блоков:

  • Первый — акустическая модель. Она получает лингвистические данные (разбитые на фонемы слова и дополнительную разметку) и переводит их в промежуточное состояние, которое описывает основные свойства речи — скорость и темп произнесения слов, интонационные признаки и артикуляцию — и спектральные характеристики звука. К примеру, в начале, до появления Алисы, в качестве модели мы обучали рекуррентную нейросеть (RNN) с предсказанием длительности. Она достаточно хорошо подходит для задач, где нужно просто последовательно проговаривать фонемы и не надо рисовать глобальную интонацию.
  • Затем данные передаются на второй блок — вокодер — который и генерирует звук (то есть создаёт условный wav) по его параметрическому представлению. Вокодер определяет низкоуровневые свойства звука: sampling rate, громкость, фазу в сигнале. Наш вокодер в первой системе был детерминированным DSP-алгоритмом (не обучался на данных) — подобно декодеру mp3, он «разжимал» параметрическое представление звука до полноценного wav. Естественно, такое восстановление сопровождалось потерями — искусственный голос не всегда был похож на оригинал, могли появляться неприятные артефакты вроде хрипов для очень высоких или низких голосов.


Схема параметрического синтеза

Это стандартная архитектура для любой ранней параметрики со своими достоинствами и недостатками. Главный плюс — для обучения модели нужно мало данных (нам хватило 5-10 часов записей человеческой речи). Можно синтезировать любой произвольный текст, который даже будет плавно звучать. К сожалению, слишком плавно: недостатком раннего параметрического синтеза было то, что полученный голос звучал неестественно. Он был слишком гладким, лишённым интонаций и эмоций, звенел металлом. Люди так не говорят.

Вот как звучал голос при раннем параметрическом синтезе:

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

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

Впрочем, даже если акустическая модель и смогла бы разобраться в контексте и выдать обогащённое информацией промежуточное состояние, то с ним уже не мог справиться примитивный вокодер. Поэтому мы не остановились и стали искать более совершенные решения.

Конкатенативный синтез: рождение Алисы


В 2016 году мы решили создать Алису — сразу было понятно, что это более амбициозная задача, чем всё, чем занимались раньше. Дело в том, что в отличие от простых TTS-инструментов, голосовой помощник должен звучать человечно, иначе люди просто не станут с ним (или с ней) общаться. Предыдущая архитектура совершенно не подходила. К счастью, был и другой подход. Точнее, даже два.

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

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

Что же делать? Если нельзя синтезировать живую речь с нуля, нужно взять крошечные фрагменты речи человека и собрать из них любую произвольную фразу. Напомню, что в этом суть конкатенативного синтеза, который обычно ассоциируется с методом unit selection. Пять лет назад он уже давал наилучшее качество (при достаточном количестве данных) в задачах, где была нужна качественная речь в реальном времени. И здесь мы смогли переиспользовать нейросети нашей старой параметрики. Работало это следующим образом:

  • На первом шаге мы использовали нейросетевую параметрику, чтобы синтезировать речь с нуля — подобному тому, как делали раньше. Напомню, что по качеству звучания результат нас не устраивал, но мог использоваться как референс по содержанию.
  • На втором шаге другая нейросеть подбирала из базы фрагментов записанной речи такие, из которых можно было собрать фразу, достаточно близкую к сгенерированной параметрикой. Вариантов комбинаций фрагментов много, поэтому модель смотрела на два ключевых показателя. Первый — target-cost, точность соответствия найденного фрагмента гипотезе, то есть сгенерированному фрагменту. Второй показатель — join-cost, насколько два найденных соседних фрагмента соответствуют друг другу. По сути, нужно было выбрать вариант, для которого сумма target-cost и join-cost минимальна. Эти параметры можно считать разными способами — для join-cost мы использовали нейросети на базе Deep Similarity Network, а для target-cost считали расстояние до сгенерированной параметрикой гипотезы. Сумму этих параметров, как и принято в unit selection, оптимизировали динамическим программированием.

Кстати, подобный подход использовался и при создании Siri 2.0, согласно опубликованной в 2017 году статье разработчиков Apple, которую мы нашли после того, как запустили прототип Алисы.


Схема конкатенативного синтеза

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

При этом нужно не просто «прочитать текст по листочку». Чем более нейтрально будет звучать голос, тем лучше. Обычно от актёров ждут эмоциональности, проявления темперамента в своей речи. У нас ровно обратная задача, потому что нужны универсальные «кубики» для создания произвольных фраз.

Вот характерный пример работы синтеза:

В этом главный недостаток метода unit selection: несмотря на все усилия, фрагменты речи не будут идеально соответствовать друг другу по эмоциям и стилю. Из-за этого сгенерированная речь Алисы постоянно «переключалась» между ними. На коротких фразах это не всегда заметно, но если хотите услышать произвольный ответ длиной хотя бы в пару предложений (например, быстрый ответ из поиска), то недостатки подхода становятся очевидны.

В общем, unit selection перестал нас устраивать и нужно было развиваться дальше.

Иногда они возвращаются: опять параметрический синтез


В результате мы вернулись к архитектуре из двух последовательных блоков: акустическая модель и вокодер. Правда, на более низком уровне обновилось примерно всё.

1. Акустическая модель


В отличие от старой параметрики, новую модель мы построили на основе seq2seq-подхода с механизмом внимания.

Помните проблему с потерей контекста в нашей ранней параметрике? Если нет нормального контекста, то нет и нормальной интонации в речи. Решение пришло из машинного перевода.

Дело в том, что в машинном переводе как раз возникает проблема глобального контекста — смысл слов в разных языках может задаваться разным порядком или вообще разными структурами, поэтому порой для корректного перевода предложения нужно увидеть его целиком. Для решения этой задачи исследователи предложили механизм внимания — идея в том, чтобы рассмотреть всё предложение разом, но сфокусироваться (через softmax-слой) на небольшом числе «важных» токенов.

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

Таким образом нейросеть может заглянуть в любой элемент входа на любом шаге и при этом не перегружается информацией, поскольку фокусируется на небольшом количестве входных токенов. Для синтеза важна подобная глобальность, так как интонация сама по себе глобальна и нужно «видеть» всё предложение, чтобы правильно его проинтонировать.

На тот момент для синтеза была хорошая seq2seq-архитектура Tacotron 2 — она и легла в основу нашей акустической модели.

2. Мел-спектрограмма


Параметрическое пространство можно сжать разными способами. Более сжатые представления лучше работают с примитивными акустическими моделями и вокодерами — там меньше возможностей для ошибок. Более полные представления позволяют лучше восстановить wav, но их генерация — сложная задача для акустической модели. Кроме того, восстановление из таких представлений у детерминированных вокодеров не очень качественное из-за их нестабильности. С появлением нейросетевых вокодеров сложность промежуточного пространства стала расти и сейчас в индустрии одним из стандартов стала мел-спектрограмма.

Она отличается от обычного распределения частоты звука по времени тем, что частоты переводятся в особую мел-частоту звука. Другими словами, мел-спектрограмма — это спектрограмма, в которой частота звука выражена в мелах, а не герцах. Мелы пришли из музыкальной акустики, а их название — это просто сокращение слова «мелодия».


Строение улитки уха (из Википедии)

Эта шкала не линейная и основана на том, что человеческое ухо по-разному воспринимает звук различной частоты. Вспомните строение улитки в ухе: это просто канал, закрученный по спирали. Высокочастотный звук не может «повернуть» по спирали, поэтому воспринимается достаточно короткой частью слуховых рецепторов. Низкочастотный же звук проходит вглубь. Поэтому люди хорошо различают низкочастотные звуки, но высокочастотные сливаются.

Мел-спектрограмма как раз позволяет представить звук, акцентируясь на той части спектра, которая значимо различается слухом. Это полезно, потому что мы генерируем звук именно для человека, а не для машины.

Вот как выглядит мел-спектрограмма синтеза текста «Я — Алиса»:

У мел-спектрограммы по одному измерению [X на рисунке выше] — время, по другому [Y] — частота, а значение [яркость на рисунке] — мощность сигнала на заданной частоте в определенный момент времени. Проще говоря, эта штуковина показывает, какое распределение по мощностям было у различных частот звука в конкретный момент. Мел-спектрограмма непрерывна, то есть с ней можно работать как с изображением.

А так звучит результат синтеза:

3. Новый вокодер


Вероятно, вы уже догадались, что мы перешли к использованию нового нейросетевого вокодера. Именно он в реальном времени превращает мел-спектрограмму в голос. Наиболее близкий аналог нашего первого решения на основе нейросетей, которое вышло в 2018 году — модель WaveGlow.

Архитектура WaveGlow основана на генеративных потоках — довольно изящном методе создания генеративных сетей, впервые предложенном в статье про генерацию лиц. Сеть обучается конвертировать случайный шум и мел-спектрограмму на входе в осмысленный wav-сэмпл. За счёт случайного шума на входе обеспечивается выбор случайной wav-ки — одной из множества соответствующих мел-спектрограмме. Как я объяснил выше, в домене речи такой случайный выбор будет лучше детерминированного среднего по всем возможным wav-кам.

В отличие от WaveNet, WaveGlow не авторегрессионен, то есть не требует для генерации нового wav-сэмпла знания предыдущих. Его параллельная свёрточная архитектура хорошо ложится на вычислительную модель видеокарты, позволяя за одну секунду работы генерировать несколько сотен секунд звука.

Затем вышла модель HiFi-GAN, которая сильно выигрывала по качеству у других решений. HiFi-GAN — доработка генеративно-состязательной сети MelGAN, создающей wav-сэмплы на основе мел-спектрограммы.

Главное отличие, за счёт которого HiFi-GAN обеспечивает гораздо лучшее качество, заключается в наборе подсетей-дискриминаторов. Они валидируют натуральность звука, смотря на сэмплы с различными периодами и на различном масштабе. Как и WaveGlow, HiFi-GAN не имеет авторегрессионной зависимости и хорошо параллелится, при этом новая сеть намного легковеснее, что позволило при реализации ещё больше повысить скорость синтеза. Кроме того, оказалось, что HiFi-GAN лучше работает на экспрессивной речи, что в дальнейшем позволило запустить эмоциональный синтез — об этом подробно расскажу чуть позже. Летом 2021 года мы полностью перешли на HiFi-GAN.


Схема HiFi-GAN из статьи авторов модели

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

Параллельно мы работали над улучшением отдельных элементов синтеза:

  • Летом 2019 года выкатили разрешатор омографов (homograph resolver) — он научил Алису правильно ставить ударения в парах «зАмок» и «замОк», «белкИ» и «бЕлки» и так далее. Здесь мы нашли остроумное решение. В русском языке эти слова пишутся одинаково, но в английском написание отличается, например, castle и lock, proteins и squirrels. Поэтому мы воспользовались моделью машинного перевода: взяли энкодер переводческой нейросети ru->en и извлекли эмбеддинг русского текста. Из этого представления легко выделить информацию о том, как произносить омограф, ведь перевод должен различать формы для корректного подбора английского варианта. Буквально на 20 примерах можно выучить классификатор для нового омографа, чтобы по эмбеддингу перевода понимать, какую форму нужно произнести.
  • Летом 2020 года допилили паузер для расстановки пауз внутри предложения. Язык — хитрая штука. Не все знаки препинания в речи выражаются паузами Например, после вводного слова «конечно» на письме мы ставим запятую, но в речи обычно не делаем паузу. А там, где знаков препинания нет, мы часто делаем паузы. Если эту информацию не передавать в акустическую модель, то она пытается её выводить и не всегда успешно. Первая модель Алисы из-за этого могла начать вздыхать в случайных местах длинного предложения. Задача паузера — предсказать класс паузы (отсутствует/короткая/средняя/длинная) после каждого слова. Для этого мы взяли датасет, разметили его детектором активности голоса, сгруппировали паузы по длительности, ввели класс длины паузы, на каждое слово навесили тэг и на этом корпусе обучили ещё одну голову внимания из тех же нейросетевых эмбеддингов, что использовались для детекции омографов.
  • Осенью 2020 года мы перевели на трансформеры нормализацию — в синтезе она нужна, чтобы решать сложные случаи, когда символы читаются не «буквально», а по неким правилам. Например, «101» нужно читать не как «один-ноль-один», а как «сто один», а в адресе yandex.ru нужно произносить точку — «яндекс точка ру». Обычно нормализацию делают через комбинацию взвешенных трансдьюсеров (FST) — правила напоминают последовательность замен по регулярным выражениям, где выбирается замена, имеющая наибольший вес. Мы долго писали правила вручную, но это отнимало много сил, было очень сложно и не масштабируемо. Тогда решили перейти на трансформерную сеть, «задистиллировав» знания наших FST в нейронку. Теперь новые «правила раскрытия» можно добавлять через доливание синтетики и данных, размеченных пользователями Толоки, а сеть показывает лучшее качество, чем FST, потому что учитывает глобальный контекст.

Итак, мы научили Алису говорить с правильными интонациями, но это не сделало ее человеком — ведь в нашей речи есть еще стиль и эмоции. Работа продолжалась.

С чувством, толком, расстановкой: стили голоса Алисы


Один и тот же текст можно произнести десятком разных способов, при этом сам исходный текст, как правило, никаких подсказок не содержит. Если отправить такой текст в акустическую модель без дополнительных меток и обучить её на достаточно богатом различными стилями и интонациями корпусе, то модель сойдёт с ума — либо переусреднит всё к металлическому «голосу робота», либо начнёт генерировать случайный стиль на каждое предложение. Это и произошло с Алисой: в начале она воспроизводила рандомные стили в разговоре. Казалось, что у неё менялось настроение в каждом предложении.

Вот пример записи с явными перебоями в стилях:

Чтобы решить проблему, мы добавили в акустическую модель стили: в процессе обучения нейросети специально ввели «утечку». Суть в том, что через очень lossy-пространство (всего 16 чисел на всё предложение) разрешаем сетке посмотреть на ответ — истинную мел-спектрограмму, которую ей и нужно предсказать на обучении. За счёт такой «шпаргалки» сеть не пытается выдумывать непредсказуемую по тексту компоненту, а для другой информации не хватит размерности шпаргалки.

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

Если эту подсеть обучить на особом подмножестве примеров, можно получить специальные стили для, скажем, мягкого или дружелюбного голоса. Или резкого и холодного. Или относительно нейтрального. Чтобы определиться со стилем по умолчанию, мы устроили турнир, где судьями выступали пользователи Толоки. Там не было разметки, мы просто нашли кластеры стилей и провели между ними соревнование. Победил кластер с очень мягкой и приятной интонацией.

Дальше началось самое интересное. Мы взяли образцы синтезированной «мягкой» речи Алисы и фрагменты речи актрисы Татьяны Шитовой, которые относились к более резкому стилю. Затем эти образцы с одним и тем же текстом протестировали вслепую на толокерах. Оказалось, что люди выбирают синтезированный вариант Алисы, несмотря на более плохое качество по сравнению с реальной речью человека. В принципе, этого можно было ожидать: уверен, многие предпочтут более ласковый разговор по телефону (то есть с потерей в качестве) живому, но холодному общению.

К примеру, так звучал резкий голос:

А так — мягкий:

Результаты турниров позволили нам выделить во всем обучающем датасете данные, которые относятся к стилю-победителю, и использовать для обучения только их. Благодаря этому Алиса по умолчанию стала говорить более мягким и дружелюбным голосом.

Этот пример показывает, что с точки зрения восприятия важно работать не только над качеством синтеза, но и над стилем речи. После этого оставалось только обогатить Алису новыми эмоциями.

Бодрая или спокойная: управляем эмоциями Алисы


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

У языка есть интересное свойство — просодия, или набор элементов, которые не выражаются словами. Это особенности произношения, интенсивность, придыхание и так далее. Один текст можно произнести со множеством смыслов. Как и в случае со стилями речи, можно, например, выделить кластеры «веселая Алиса», «злая Алиса» и так далее.

Поскольку стилевой механизм отделяет просодию («как говорим») от артикуляции («что говорим»), то новую эмоцию можно получить буквально из пары часов данных. По сути, нейросети нужно только выучить стиль, а информацию о том, как читать сочетания фонем, она возьмёт из остального корпуса.

Прямо сейчас доступны три эмоции. Например, часть пользователей утреннего шоу Алисы слышат бодрую эмоцию. Кроме того, её можно услышать, спросив Алису «Кем ты работаешь?» или «Какую музыку ты любишь?». Флегматичная эмоция пригодилась для перевода видео — оказалось, что голос по умолчанию слишком игривый для этой задачи. Наконец, радостная эмоция нужна для ответов Алисы на специфические запросы вроде «Давай дружить» и «Орёл или решка?». Ещё есть негативная эмоция, которую пока не знаем, как использовать — сложно представить ситуацию, когда людям понравится, что на них ругается робот.

Первый корпус эмоций мы записали ещё при WaveGlow, но результат нас не устроил и выкатывать его не стали. С переходом на HiFi-GAN стало понятно, что он хорошо работает с эмоциями, это позволило запустить полноценный эмоциональный синтез.

Наконец, мы решили внедрить шёпот. Когда люди обращаются к Алисе шёпотом, она должна и отвечать шёпотом — это делает её человечнее. При этом шёпот — не просто тихая речь, там слова произносятся без использования голосовых связок. Спектр звука получается совсем другим.

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

Так выглядят мел-спектрограммы обычной речи и шёпота при произнесении одной и той же фразы:

Так звучит обычная речь:

А так — шёпот:

Сначала мы научили Алису понимать шёпот. Для этого обучили нейросеть различать спектры звука для обычного голоса и шёпота. Система смотрит на спектр звука и решает, когда говорят шёпотом, а когда — голосом.

В процессе обучения оказалось, что спектры шёпота и речи курильщиков похожи, так что пришлось научить нейросеть их различать. Для этого собрали больше пограничных данных с речью курильщиков и простуженных людей и донастроили нейросеть на них.

Чтобы научить Алису говорить шёпотом, мы записали несколько часов шёпота речи в исполнении Татьяны Шитовой. Сложности начались уже на предобработке данных: наш VAD (детектор тишины в речи) сломался на шёпотных гласных — трудно отличить сказанное шёпотом «а!» от обычного громкого вздоха. Починить его удалось, только совместив признаки энергии сигнала и данные от распознавания речи, при этом под шёпот конструкцию пришлось калибровать отдельно.

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

Сгенерированный шёпот по качеству не отличался от обычной речи. По нашей метрике PSER (Pronunciation Sentence Error Rate — средняя доля ошибок произношения в предложении) он оказался даже лучше. Оказалось, что ряд ошибок интонации в шёпотной речи были значительно менее ярко выражены.

Этот голос будет полезен при общении с Алисой ночью, чтобы не мешать близким. Можно задавать вопросы тихим голосом и Алиса будет отвечать шёпотом. Кроме того, такой стиль ещё и звучит очень приятно — поклонники ASMR оценят.

Послушайте, как шепчет Алиса:

На этом мы не останавливаемся — в планах дальнейшее развитие голосового синтеза, добавление новых стилей и эмоций. Обязательно продолжим рассказывать о том, как Алиса учится говорить по-человечески.

Комментарии (39)


  1. SergeyT-hh
    08.12.2021 13:15
    +3

    С шепотом хорошо получилось) и все таки сделайте уже наконец то пульт для регулировки громкости)


    1. cpcat
      08.12.2021 14:05
      +4

      Подозреваю, что Алису и умные колонки с Алисой разрабатывают разные люди...


      1. SergeyT-hh
        09.12.2021 10:55

        Скорей всего да, так и есть.

        Просто я во всех отзывах про Алису пишу что нужен пульт, может откуда то эта задача и залетит в бэклог)

        Пользуюсь и Алисой-колонкой и гугловыми девайсами, так в сравнении прям особенно ощущается нехватка пульта.


        1. BarakAdama
          09.12.2021 11:13

          Пульт — в смысле, как у Станции Макс? Или вы о другом?


        1. vvkiri Автор
          09.12.2021 14:42
          +1

          передал запрос ребятам из устройств и продукта, спасибо

          пока что самое ближайшее, что есть - пульт управления громкостью с я.музыки (через смартфон)

          https://yandex.ru/support/station-mini/audio.html#audio__music-streaming
          надеюсь, будет полезным


        1. cpcat
          09.12.2021 14:58

          А я уже привык к вещам типа "Алиса, громкость семь".


  1. Radgalf
    08.12.2021 13:50
    +11

    Шепот очень крутой :) НО при шепоте сделайте что бы на колонке так же тихо срабатывало оповещение что Алиса слушает, спрашиваешь у нее тихо, ГРОМКИЙ бульк и отвечает она тихо.


    1. censor2005
      09.12.2021 09:54
      +1

      По-моему, в настройках можно вообще отключить "бульк", и колонка будет сразу выполнять команду или отвечать


      1. delphinpro
        09.12.2021 21:15
        +2

        Отключить можно. Но есть он включён, логично чтобы он тоже был тихим, если обращаешься к Алисе шепотом.


  1. Devgru
    08.12.2021 15:45
    +3

    Летом 2019 года выкатили разрешатор омографов (homograph resolver)

    Буквально пару назад месяцев заметил, что Алиса перестала альбом «В порту» называть «В пОрту». Получается, развитие разрешатора продолжается?


    1. vvkiri Автор
      08.12.2021 16:08
      +1

      все так

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

      примерно, по словарю Зализняка, в русском языке около 20к омографов (и это не считая нововведений, вроде Орбита-орбИта), мы их продолжаем закрывать, набирая новые данные


  1. Iv38
    08.12.2021 16:05
    +7

    Шёпот звучит классно! Мне понравилось. Асмрнее, уютнее, интимнее, заговорщицки.


  1. timiryazevec
    08.12.2021 16:16
    +8

    Шепот дьявольский какой то получился. Так и представил как она шепчет -Ты должен убить всех людей! Кожаные ублюдки не должны жить!

    А статья очень познавательная и подробная, спасибо!


    1. C4ET4uK
      08.12.2021 17:39
      +4

      На самом деле я слушал шепот в записи и на колонке и на колонке он звучит более естественно. Обычно в записи его громкость сильно задирают, чтобы было лучше слышно, и получается вот-такой криповый эффект.


  1. nik_vr
    08.12.2021 16:54
    +1

    К вопросу об омографах. В г. Киров есть улица Воровского (имени вот этого товарища:https://ru.wikipedia.org/wiki/Воровский,_Вацлав_Вацлавович). Ударение в этой фамилии (и названии улицы) должно стоять на второй букве "о" - ВорОвского. Но в Яндекс.Навигаторе Алиса (и прочие дикторы тоже) упорно ставят ударение как в созвучном прилагательном - улица "воровскОго". Уже года три эта история. Исправьте, пожалуйста.


    1. AlexJameson
      09.12.2021 02:27
      +1

      Езжу каждый день по мнению Алисы по Большой ПорОховской вместо большой ПорховскОй, и это в двух минутах от питерского офиса Яндекса. Интересно, как этот алгоритм срабатывает, потому что название этой улицы точно происходит от пороховых заводов, которые там когда-то были.


      1. vvkiri Автор
        09.12.2021 04:00
        +2

        спасибо,

        действительно, с Пороховской проблема, причем только с некоторыми падежами

        подправим в ближайшем релизе


  1. z0ic
    09.12.2021 06:04

    Сразу вспоминаются LPC голоса из прошлого. По-моему первую песню компьютер исполнил в 1961. Будем ждать появления более артистичных голосов в стиле Олега Табакова или Аркадия Райкина.


  1. censor2005
    09.12.2021 09:55

    Шёпот уже выкатили для всех колонок? Пока что не замечал, хотя буквально на днях разговаривал с колонкой шёпотом при спящем ребёнке.


    1. vvkiri Автор
      09.12.2021 14:18
      +1

      шепот катился на все колонки и приложение яндекса вечером с 7ого на 8ое, после этого еще несколько часов могло отвечать из кэша.

      если после этого колонка не отвечает шепотом -- давайте смотреть (лучше в ЛС).


  1. TedBeer
    09.12.2021 10:09
    +1

    А как отдельный движок TTS есть продукт для Андроида?


    1. vvkiri Автор
      09.12.2021 14:23

      не совсем понял, имеется в виду on-device?

      пока этого нет, в Алисе это неприменимо, т.к. качество получится пониже, а к вебу Алиса привязана поиском.

      но, возможно, сделаем легковесный TTS в каком-то другом продукте)


      1. TedBeer
        09.12.2021 15:27
        +2

        Я имею ввиду приложение на устройстве, которое станет доступным как TTS в текстовых читалках, в картах, браузере. Приложение, которое понимает особенности русского языка, конкурент этим движкам


    1. ScorpAL
      09.12.2021 16:22
      +2

      О! Это было бы шикарно!


  1. klounader
    09.12.2021 10:33

    Шёпот громче обычной речи только у меня?


    1. BarakAdama
      09.12.2021 11:14

      В примерах статьи или вживую в Алисе?


      1. klounader
        09.12.2021 12:17

        В примерах статьи. По ощущениям разница в громкости раза этак в два.


        1. vvkiri Автор
          09.12.2021 14:16
          +1

          должно быть именно так.

          все записи в статье нормализованы (диапазон колебаний вавки растянут до minmax диапазона возможных значений).

          у шепота меньше выбросов, более равномерная громкость по записи, после нормализации такого сигнала энергия звука (сумма квадратов отклонений) будет персептивно больше, чем у речи (у нее более вариативная громкость).

          в колонке и приложении громкость отрегулировали так, чтобы шепот звучал тише речи.


          1. klounader
            10.12.2021 03:42
            +1

            Так вот почему я аж подпрыгнул на диване от неожиданности такой.


    1. 2PAE
      10.12.2021 09:27

      Это называется "театральный шепот". Чтобы даже на другом конце зала, было слышно что вы шепчете. :)


      1. vvkiri Автор
        10.12.2021 15:40
        +2

        не, это обычный, просто громко отнормализован

        кстати, театральный шепот пробовали писать в сессии с Татьяной

        массово записывать и запускать в прод не стали -- он получался ну очень зловещий


  1. TimsTims
    09.12.2021 13:00
    +3

    Уважаемая команда голосового помощника Алиса! Добавьте пожалуйста какую-нибудь команду, чтобы она сразу могла кинуть вам репорт о некорректном поведении.

    Бывает спрашиваешь её: "Где я нахожусь", "Где мы находимся" итд, и вместо честного ответа "Я не знаю" , она начинает придумывать какие-то рандомные адреса. Или вот купили недавно фильм на кинопоиске "Босс молокосос 2", а станция его не находит (только 1ю часть, или одноименный мультсериал), пришлось писать в техподдержку. Смогли включить только через телефон, отправив фильм в станцию.

    А обращения в техподдержку это тоже один ужас: Ты сначала заполняешь форму обратной связи, потом тебя просят назвать № модели, время, место и точную команду, когда это происходило. Но оказывается, эта информация почти бесполезная, потому-что потом по почте меня снова попросили прислать ИД аккаунта, точную модель колонки и на видео записать, как она неправильно себя ведёт, пытаясь выполнить твои команды.

    ПС: Шепот прекрасен!


  1. 2PAE
    09.12.2021 13:12

    Сделали Алису доступную в читалке от Яндекса.

    Собственно вопрос. Там есть ещё мужской голос. Его тоже вы делаете?

    И существует ли отдельно читалка? Вот не хочу я ставить всю толпу софта от яндекса на телефон. Или хотя-бы сразу запускать читалку.

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


    1. vvkiri Автор
      09.12.2021 14:56

      сам мужской голос из читалки -- тоже наш, экспериментируем над "читающим голосом", более пригодным для книг.

      читалка пока "приземлена" в приложении, на ранних этапах отселять пока не будем (чтобы не создавать зоопарк приложений), а там посмотрим.

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

      ну, базовые паузы там сделаны, но тюнить еще будем, затачиваясь под форматирование. Спасибо.


      1. 2PAE
        10.12.2021 09:25

        Скажу сразу, голоса должны быть разные. Мужской голос лучше слушать в спокойно, тихой атмосфере. А вот Алиса с её визгливым голосом отлично слышится в транспорте, где много посторонних шумов. Мужской голос, у него есть имя?, в транспорте глушиться.

        К примеру в FBreader доступно руками выставление пауз. Очень удобно.

        И спасибо за вашу работу.

        Параноик on:

        А что, вы теперь знаете какие книжки я читаю? А вдруг я буду читать запрещенную к скачиванию с Флибусты "451 градус по Фаренгейту"? И потом за мной придут?

        Параноик off.

        Постоянное наличие интернета, несколько напрягает. Не везде, особенно между городами, связь есть и стабильная. Возможно ли принципиально озвучивать книги без подключения к Яндекс серверам?


  1. SnakeSolid
    09.12.2021 14:50
    +2

    То, что вы рассказываете о деталях реализации - достойно уважения. Есть ли у вас в планах автономная версия Алисы? Например, для умного дома, где важно работать вне зависимости от качества связи, но не нужно вести сложные диалоги.


    1. vvkiri Автор
      09.12.2021 14:59
      +1

      ответил тут https://habr.com/ru/company/yandex/blog/593681/#comment_23803169

      кратко: Алиса пока слишком привязана к интернету, для нее не синтез - блокер.

      но отдельно сделать что-то, что будет бегать на мобильном железе - думаем.


  1. zlo2k
    09.12.2021 23:34

    Спрошу здесь, когда можно будет сделать тандем колонки и яндекс.телевизора. Начинка я так понимаю такая же как в яндекс.модуле ? Спасибо.


  1. orakul_storm
    10.12.2021 11:20

    Нервный шепот, для АСМР не подойдёт)