Мы записали 15 новых голосов для робота. Для этого сотрудникам пришлось запинаться, говорить «э-э-э» и вздыхать

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

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

Мы в Звонке решили заняться именно этим. Раньше у пользователей было пять голосов. Теперь их 20 — мы добавили ещё 15 (принимаем овации).

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

Гораздо сложнее оказалось научить эти голоса нормально разговаривать.

Рассказываем, как мы их делали, почему один вопрос заставил нас несколько раз переделывать референсы и зачем голосов вообще должно быть много.

Зачем роботу вообще 20 голосов

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

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

Особенно это заметно в продажах. Здесь человеку мало просто расслышать информацию — нужно хотя бы несколько десятков секунд оставаться в разговоре и воспринимать собеседника всерьёз.

Один из коллег во время интервью сформулировал это довольно точно:

Если первый контакт с компанией звучит как домофон, то и относиться к компании человек будет примерно как к домофону

Это, конечно, не значит, что достаточно выбрать приятный тембр и конверсия магически вырастет на 30%. Таких данных у нас нет, и утверждать это мы не будем.

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

Нам хотелось дать бизнесу возможность хотя бы выбирать и тестировать.

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

У пользователей Звонка для этого есть тестовые звонки: можно буквально послушать кампанию до запуска и сравнить варианты.

Так появилась задача увеличить набор голосов с пяти до двадцати.

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

Профессиональный диктор оказался слишком профессиональным

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

Такой голос у нас уже был.

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

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

В какой-то момент у продакт-менеджера появилась довольно простая идея: а почему бы вообще не перестать искать идеальные голоса и не записать обычных людей?

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

Мы записали 15 новых голосов для робота. Для этого сотрудникам пришлось запинаться, говорить «э-э-э» и вздыхать

Мы специально не пытались сделать их идеальными

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

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

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

Поэтому новые голоса получились очень разными — не только мужскими и женскими или высокими и низкими, но и просто по-разному живыми.

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

Мы записали 15 новых голосов для робота. Для этого сотрудникам пришлось запинаться, говорить «э-э-э» и вздыхать

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

Записать человека — ещё не значит научить робота говорить его голосом.

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

Со стороны процесс выглядит почти просто: человек сказал несколько предложений → модель запомнила особенности голоса → теперь может произносить им новые фразы.

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

Первый сюрприз: робот не всегда понимает, что он задаёт вопрос

Человек без труда скажет сначала:

Мы свяжемся с вами завтра.

А через секунду:

Мы свяжемся с вами завтра, хорошо?

Слова почти те же, но звучат фразы по-разному. Во втором случае мы — люди, автоматически меняем интонацию, расставляем другие акценты и слегка повышаем голос в конце. Обычно мы даже не замечаем, что делаем всё это.

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

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

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

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

Потом выяснилось, что для хорошего голоса важна даже тишина

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

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

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

Если слишком сильно обрезать конец исходного ролика, при последующем синтезе модель иногда начинает «съедать» последние звуки или буквы.

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

Ну, теперь-то получилось?!

А потом робот два раза сказал одну фразу по-разному

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

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

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

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

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

Так одновременно решаются две задачи:

  • повторяющиеся фразы звучат стабильнее
  • инфраструктуре не приходится выполнять одну и ту же работу снова и снова

Это один из тех моментов, которые пользователь, скорее всего, вообще никогда не заметит. И в данном случае это хороший знак.

Почему мы вообще возимся со всем этим сами

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

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

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

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

В телефонном разговоре она ощущается гораздо сильнее.

Представьте:

— Сколько стоит доставка?

...

...

...

— Доставка стоит 500 рублей.

Человек за эти несколько секунд успевает решить, что связь пропала, робот сломался или ему просто не отвечают.

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

«А можно сделать так, чтобы вообще никто не понял, что это робот?»

Наверное, самый очевидный вопрос. Короткий ответ — мы бы не обещали.

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

Не заставить пользователя любой ценой поверить, что ему позвонил человек.

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

И здесь выбор из двадцати голосов оказался не финальной точкой, а скорее инфраструктурой.

Мы теперь можем добавлять разные голоса по одному и тому же процессу, записывать новые референсы, тестировать их и дообучать модель там, где это необходимо.

Какой голос выбрать для своего робота

Мы специально не хотим писать таблицу вроде:

  • Финансы — мужской низкий.
  • Образование — молодой женский.
  • Недвижимость — баритон.

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

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

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

А пока есть способ проще.

Послушать.

Саша

Роксана

Никита

Марго

Илья

Что получилось

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

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

Наверное, это и стало главным выводом всей разработки: скопировать особенности человеческого голоса сегодня относительно легко. Гораздо сложнее сделать так, чтобы этим голосом было приятно разговаривать.

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

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

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

Особенно советуем попробовать их в ИИ-звонках, там нет жёстко заскриптованных реплик, поэтому интонации, паузы и характер голоса раскрываются заметнее всего.

В общем, лучше один раз услышать 🙂

66
11