Озвучка для OpenTX на базе Google Cloud Text-to-Speech

Понятно, что сейчас все уже давно себе понаделали озвучки и статья несколько (лет на восемь, ага) несвоевременна, но тут даже скорее будет вопрос, а зачем, а почему именно на базе Google Cloud Text-to-Speech, когда и других движков навалом?

Объясняю. Совсем недавно я купил себе FrSky Taranis 2019+, и, соответственно, русскую озвучку я на него взял официальную отсюда: downloads.open-tx.org/2.3/…/opentx-x9d%2B2019/ , которую сделал некий Новиков Александр, если судить по этой статье: blog.rcdetails.info/ru-open-tx/ . А сделал он её с помощью программы TTSAutomate, выбрав в ней голосовой движок гугла.

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

Я начал искать другие движки, другие голоса, и пиратскую Ivona попробовал, ничего мне не понравилось. В итоге я набрел на ссылку cloud.google.com/text-to-speech , где нашел этот самый голос - “ru-RU-Wavenet-E”.

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

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

Первое, идем по ссылке: cloud.google.com/text-to-speech. Немного ниже там есть секция Demo с демонстацией голосов:

Нужно выбрать Language - Русский (Россия), Voice Type - WaveNet или Basic и Voice name несколько разных типов. Потом забиваете в поле “Text to speak” какую-нибудь фразу и нажимаете синюю кнопку “SPEAK IT”. Меняя Voice Type и Voice name подбираете для себя нужный голос. Как я уже писал, мне больше всего понравился “ru-RU-Wavenet-E”, а судя по его одинаковому звучанию с официальной озвучкой Тараниса, это он и был раньше в TTSAutomate в голосовом движке гугла.

Дальше, ниже есть секция Documentation , в которой нас интересует часть “Quickstart: Using the command line”. В ней нажимаем на ссылку Learn more и попадаем на страницу Create audio from text by using the command line.

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

Но сначала нужно выполнить пререквизиты (Prerequisites), для чего переходим по ссылке before you begin.

Там написано, что перед тем, как использовать Text-to-Speech, мы должны сначала включить API в Google Cloud Platform Console. Для чего нужно:

  • Включить Text-to-Speech в проекте (который тоже нужно предварительно создать).
  • Убедиться, что включен биллинг для Text-to-Speech.
  • Создать сервисную учетную запись для проекта.
  • Скачать приватный ключ сервисной учетной записи себе на компьютер.

Для начала, вам понадобится аккаунт в Google. Если у вас есть электроннная почта на gmail.com, то это он и есть. У кого нет, придется завести. И залогиниться.

Дальше, на этой же странице, в секции Setting up your Google Cloud Platform project идем по пунктам и выполняем каждый из них.

Пункт 1 - синяя кнопка Sign in to Cloud Console, заходим и попадаем в консоль управления Google Cloud Platform.

Пункт 2 - синяя кнопка Go to the project selector page.

Там чуть ниже правого верхнего угла будет кнопка “CREATE PROJECT”. Нажимаем её и создаем проект, собственно. Даем имя проекту, допустим “Google TTS for OpenTX”:

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

Нажимаем три полоски в левом верхнем углу > Billing. Нам выдается окно, что у проекта нет биллинг-аккаунта:

Поэтому, нажимаем в нём ссылку “LINK A BILLING ACCOUNT”, а после этого “CREATE BILLING ACCOUNT”.

Заполняем страну и описание, в описание больше всего подходит “Personal Project,” ставим галку, что мы согласны и нажимаем синюю кнопку CONTINUE.

На следующей странице вводим свой номер телефона, нажимаем синюю кнопку “SEND CODE” и в следующем окне вводим проверочный код, пришедщий на телефон и нажимаем синюю кнопку VERIFY.

На следующей странице вводим адрес и данные своей банковской карты (не надо бояться, никто у вас оттуда ничего не спишет без спроса) и нажимем “START MY FREE TRIAL”. Кстати, 60 минут этой озвучки в месяц совершенно бесплатны, это гораздо больше, чем нам нужно.

После этого, сверху в синей строке поиска вводим “Text-to-Speech”, в результатах поиска выбираем “Cloud Text-to-Speech API” и включаем нажатие на синюю кнопку ENABLE.

Дальше, нужно будет создать сервисную учетную запись. В левом верхнем углу нажимаем три палки > IAM & Admin > Service Accounts. Там будет сверху ссылка “+ CREATE SERVICE ACCOUNT”. Нажимаем её и заполняем поля:

  • Service account name - у меня это “srv_tts”.
  • Service account description - описание, у меня это “Service Account for TTS”.

Среднее поле заполнится само автоматически. Остальное не нужно, нажимаем синюю кнопку “DONE”.

После того, как учетная запись создастся, заходим в её свойства, вкладка DETAILS, там копируем в буфер обмена Email (у меня это srv-tts@…iam.gserviceaccount.com), переходим на вкладку PERMISSIONS и нажимаем кнопку GRANT ACCESS:

Здесь в поле “New principals” вставляем наш скопированный Email и в поле “Role” выбираем Basic > Viewer (больших прав нам для этой учетной записи не нужно). Нажимаем синюю кнопку SAVE.

Далее, всё в той же учетной записи идем во вкладку “KEYS”, нажимаем кнопку ADD KEY > Create new key:

В появившемся окне оставляем предложенный тип по умолчанию JSON и затем CREATE. Нам предлагается сохранить ключ к себе на компьютер, что мы и делаем. Есть смысл сразу создать отдельную папку под это всё, например D:\GoogleTTS, как у меня. Ну и сам файл тоже есть смысл переименовать во что-то более короткое и понятное, например srv-tts.json.

Всё, с сайтом Google Cloud Platform возня закончена, начинается возня с компьютером.

В первую очередь нужно скачать Google Cloud CLI installer с этой страницы: cloud.google.com/sdk/docs/install.

Скачиваем и запускаем установку. Там ничего особенного нет, всё оставлем по-умолчанию, единственно что, я настоятельно рекомендую выбирать устаноку для “All users”:

Сможете избежать некоторых незначительных проблем в будущем.

Далее, скачиваете прикрепленный к этой записи powershell-скрипт “TTS_Generate.ps1”, открываете его каким-то текстовым редактором (можно обычным Блокнотом, у меня на скриншоте это Powershell ISE) и редактируете его следующим образом:

  • В переменной $env:GOOGLE_APPLICATION_CREDENTIALS задаем полный путь к файлу сохраненного ранее ключа, у меня это “d:\GoogleTTS\srv-tts.json”.
  • В переменной $OutputFolderPath задаем папку, в которой будут создаваться файлы json и звуковый файлы wav. У меня это "d:\GoogleTTS\Sounds". Не забудьте её создать перед запуском скрипта.
  • В переменной $Strings построчно пишем через двоеточие сначала имя файла (без расширения, оно в скрипте прибавится само), а затем фразу, которую нужно озвучить:
fm01:Режим взлёта
fm02:Режим полёта
fm03:Режим посадки

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

Далее, нужно запустить скрипт, но не просто так, а с модулем Google Cloud SDK. Для этого в меню Пуск ищем “Cloud Tools for PowerShell” и запускаем его. В него вставляем полный путь к файлу скрипта TTS_Generate.ps1 и нажимаем Enter:

Если вы сделали всё правильно, то сгенерируются звуковые файлы в папке d:\GoogleTTS\Sounds\ и на этом всё, можно их копировать на SD-карту в аппаратуре. Файлы json в этой папке можно удалить, они не нужны.

В дальнейшем, если нужно будет сгенерировать новые фразы, просто пишете их в скрипте TTS_Generate.ps1 и заново запускаете его из консоли Cloud Tools for PowerShell.

TTS_Generate.zip

  • 358
Comments
Goorya

Ну Вы и заморочились. Я просто включаю проиграть фразу и програмкой захвата звука (Moo0 Audio recorder) записываю голос.

Retif

Професссиональная деформация просто )