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

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

Бумажного аналога книги (во как!) у меня тогда не было, только цифра. Я воспользовался одной из программок, конвертирующих текст в звук, бесплатным приложением к коей шел допотопный и кем-то уже взломанный коммерческий звуковой движок, что и дало мне возможность более-менее комфортно прослушать текст. Для своего времени воспроизведение слов было вполне приличным, и с безапелляционным максимализмом юности я безоговорочно отнес технологию text-to-speech (а заодно и безымянного умельца, хакнувшего прогу) к Войску Света... логично же, нет? Все, что способствует обмену мыслями между людьми - соединяет их и в итоге безусловно во благо, все, что этому противится (неважно, во имя каких целей) - козни Зла. Кто знает, возможно, именно эта книга в чем-то поспособствовала моему интересу к IT, когда выбирал для себя профессию. И, далее, моей всегдашней приверженности идеологии и идеям Open Source.

"Детское живет в человеке до седых волос." (с) Правда, порой в этой фразе писателя, увидевшего из зарешеченного подвального окошка севастопольской тюрьмы спускающиеся к морю мраморные лестницы сказочно-прекрасного Гель-Гью - заключен кардинально иной смысл, также способный предложить в корне иное прочтение антитезы Добра и Зла; но, следую IT-специфике Хабра, не будем сейчас углубляться в экзистенциальную психологию, вернувшись к более привычной местной аудитории области программирования...

ОК, в качестве ностальгического воспоминания об эпизодах первого знакомства с миром IT хотелось бы сегодня предложить читателям Хабра одну из разработок с полностью открытым исходным кодом. Которая, следуя описанной выше доктрине Света, представляет собой дружелюбный веб-интерфейс сразу нескольких API и призвана способствовать, по мысли автора, любым формам обмена мнениями между людьми самых разных языков и стран. Welcome, добро пожаловать, bienvenue.

Итак. Суть и основная логика приложения заключены в удобном клиенте Google Cloud Text to Speech API, выполненном на основе фреймворка Ruby on Rails 6 (новенький Bootstrap 5, Webpacker, jQuery, эффектные Ajax Flash Messages) и предоставляющем возможность качественной, на основе технологий Google (WaveNet) озвучки текста. В качестве дополнительных фичей идут возможность "налету" перевода от Google Translate API и прозрачное сохранение звуковых файлов в Amazon ES3 либо иное совместимое (Google Cloud Storage, Microsoft Azure Storage) хранилище. Плюс кое-какие приятные мелочи: поддержка SSML, произвольное наименование и различные форматы генерируемого аудио, управление файлами хранилища из веб-интерфейса приложения, здесь же возможность скачать или только лишь прослушать звук, не загружая его на ПК. Плюс самые разнообразные опции и триггеры (см. скриншот), влияющие на качество звука.

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

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

Но, возможно, главное в другом. Изюминка проекта в том, что вовсе не нужно быть программистом, чтобы работать с данным приложением; также нет ни малейшей нужды что-либо ломать и хакать, обеспечивая себе перманентно бесплатное использование вышеназванных сервисов. Описание кода содержит подробное пошаговое руководство, прочтя которое - практически любой непрограммист сумеет развернуть Google Cloud Text to Speech Pro onRails на бесплатном тарифном плане облачной PaaS-платформы Heroku (вам не понадобится устанавливать Ruby / Rails на вашем рабочем компьютере, будет достаточно Git-a и скриптов Heroku). У вас появится новый веб-сайт в домене третьего (от herokuapp.com) уровня, где вы станете единственным авторизованным пользователем, Google предоставит вполне солидные бесплатные лимиты использования API Text to Speech и API Translate (если только вы не соберетесь озвучивать "Войну и мир", этого вполне должно хватить), Amazon подарит вашему новому аккаунту аж целый год бесплатного обслуживания.

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


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

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


  1. MentalBlood
    05.10.2021 09:33

    Как Гегеля почитал, только все просто и понятно)


  1. Firsto
    05.10.2021 14:47

    А как убрать страх того, что Гугл однажды обнулит мою карточку за превышение квоты?


    1. cmirnow Автор
      05.10.2021 20:03

      Разнообразные методики по "убрать страх" заведомо офтоп на Набре, находясь в ином русле. Поможет что-нибудь из библиотеки популярной психологии, "Как перестать беспокоиться и начать жить" Карнеги, etc.


      1. Firsto
        05.10.2021 20:28

        Ох, ладно, подскажите, пожалуйста, где в Гугл Клауд настроить лимиты чтобы не списали все деньги? :-)


        1. cmirnow Автор
          05.10.2021 21:05
          +1

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

          1. Google не проверяет состояние счета вашей банковской карты. Вы можете привязать почти любую: на счете может не быть ни копейки, или даже счет может быть арестован. Проглотит, ему без разницы: ничего подобного отправке в холд $1, как принято на иных сервисах, здесь быть не должно, вы получаете доступ моментально. В том случае, если ничего не изменилось, конечно, и мой опыт продолжает оставаться актуальным. Можно попробовать привязать и виртуальную карту, но Ямани и Qiwi сейчас уже, вероятно, не пройдут (за Амазон я все еще ежемесячно плачу с Qiwi, но не за Google).

          2. Также сразу после привязки карты вы получите (вероятно) сообщение в верхней части Google Console, предлагающее активировать бесплатный доступ ко всем API сроком на три месяца. Воспользуйтесь приглашением; в конце месяца вы получаете на мыло инвойс Гугля, что-нибудь вроде "Summary for Sep 1, 2021 - Sep 30, 2021 Total in RUB RUB 0.00." Рекомендую.

          По окончании пробного периода будьте внимательны к расходам, ничто не помешает вам выключить для себя, при необходимости, тот или иной API. И - внимательно заранее просмотрите TOS; если не ошибаюсь, что-то около виртуальных $300 вы получаете ежемесячно от Google на доступы к API, этого в большинстве случаев хватит. Мой старый киевский приятель-скряга, под "заказ" которого и написана первая версия этого кода, уже третий год, как мне кажется, не платит Гуглю вообще ничего, хотя висящим на Heroku его приложением долгое время пользовался как минимум я, рефакторя прогу.

          А вот пользоваться RapidAPI (агрегатор разнообразных API, в их числе и Google Cloud Translate API) не рекомендую: удобно, и даже ключ в формате JSON не нужен, но дорого. Что бы они там не болтали в своей рекламе насчет миллионов девелоперов, использующих их сервис... помнится, вечером первого же дня работы с RapidAPI я получил сообщение, что 80% моего лимита исчерпаны, хотя и ограничивался при тестах самыми короткими фразами. Поэтому REST в коде репозитория у меня закомментирован, оставил только для инфо.


  1. Firsto
    05.10.2021 21:45
    +1

    Премного благодарен! Развернул с горем пополам (ох и сложные консоли у этих облачных сервисов), но вечер прошёл не зря! :-)