Google Text to Speech (TTS) используя CURL и Консоль

Главная  >>  Без рубрики  >>  Google Text to Speech (TTS) используя CURL и Консоль

Google даёт отличную библиотеку для преобразования текста в голос. Сервис Google Text to Speech позволяет преобразовать текстовый контент в mp3-файл с произношением указанной фразы.

В этой статье я расскажу вариант использования TTS при помощи консоли и cURL.

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

На момент написания статьи о том, как получить ключи можно узнать по ссылке в блоке Before you begin.

Добавляем переменную окружения.
Получив заветный json-файл разместите его в удобном для Вас месте на Вашем сервере.
Для работы Cloud SDK (установку рассмотрим в след. шаге) и генерации токена доступа нам нужна переменная окружения GOOGLE_APPLICATION_CREDENTIALS, в которой будет указан путь к json с ключами.

Единоразово установить это значение можно так:

Не забывайте, что срок жизни переменной, в таком случае, закончится вместе с Вашей консольной сессией. Чтобы не добавлять каждый раз — добавьте строку в ~/.bash_profile.

Просто добавьте указанную выше строку EXPORT GOOGLE_APPLICATION_CREDENTIALS........... в конец файла.

Устанавливаем Google Cloud SDK.
Перейдите по ссылке.
Скачайте подходящий вариант архива и следуйте инструкциям. В этом месте не должно возникнуть проблем — мануал по установке достаточно исчерпывающий.

Если что-то пошло не так — напишите в комментарии — постараемся решить проблему.

Признаком успешности выполнения будет вывод токена в ответ на команду

Работаем с API

Консоль
Для консольного обращения достаточно использовать пример с Документации:

В примере используется файл request.json — привожу его ниже:

php cURL

Приведенный выше пример выведет html-тег audio, который уже сможет озвучить Ваш текст.

Также есть два момента. В моём случае получение токена для каждого обращения было не очень удобным, поэтому я создал sh-файл, который в Кроне вызывается каждые 10 минут и сохраняет ключ в файл. Php, в свою очередь, забирает ключ с этого файла и подставляет в header.

sh-файл выглядит так:

Этот файл получит токен и сохранит его в нужный файл, с которого далее мы читаем его при помощи php. При желании можно добавить EXPORT GOOGLE_APPLICATION_CREDENTIALS........... также в sh-ник перед вызовом gcoud.

Обратите внимание — мы указываем ПОЛНЫЙ путь к gcloud. Если Вы не помните, где он находится — используйте команду:

И последнее. Если Вам нужно сохранить полученный голосовой поток в файл — используйте следующий код:

Вместо последней строки с echo.

Текста получилось много, но, по сути, ничего сложного в задаче нет. Если у Вас что-то не получилось или остались вопросы — пишите в комментарии.
Удачи!

Похожие записи