Когда ваш PWA начинает говорить

Использование WaveNet для добавления синтеза речи для статей

О чем мы говорим, когда говорим о речи

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

Как: синтез речи

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

  1. реализация синтеза через службу преобразования текста в речь GCP с использованием (более дорогой) опции WaveNet вместо стандартной
  2. сохранение созданного mp3-файла в Firebase Storage, простой файловой системе, также размещенной в GCP; имя файла состоит из заголовка статьи и используемого языкового стандарта, что дает мне неявный идентификатор и позволяет избежать добавления отдельного документа, в котором хранятся ссылки на все URL-адреса для данной речи
  3. затем я вызываю два вышеуказанных шага на сервере Vercel при создании или обновлении страницы статьи, что в настоящее время происходит каждые 24 часа максимум
  4. использование отложенной загрузки для веб-плеера, если доступен URL-адрес аудио

Лениться важно

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

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

Почему не на всех языках (пока)?

Из-за использования Google WaveNet в качестве реальной модели синтеза речи я должен рассматривать затраты на эту функцию как основную проблему. Стоимость использования WaveNet в четыре раза превышает стоимость стандартной модели синтеза. Тем не менее, я выбрал именно его, поскольку WaveNet значительно превосходит большинство других моделей, не только от самого Google, но и, например, от IBM.

Только начало

Это был краткий обзор того, как я реализовал синтез речи в первой версии этого PWA. На код ушло всего несколько часов, так как я уже выполнил большую часть настройки, будучи клиентом GCP. Сгенерированный результат звучит невероятно хорошо, что показывает сильные стороны подходов на основе WaveNet и ML к речи, а также к обработке текста. В будущей реализации может быть добавлено чтение вслух для всех поддерживаемых языков. Исходя из использования и затрат в ближайшие месяцы, я определю, как действовать в этом случае.

Том

Предложения

Связанные

Приложение

Языки