ChatGPT говорит голосом: интеграция с Google TTS API

Описание процесса расширения функциональности Telegram-бота, добавляющего голосовое взаимодействие с ChatGPT с помощью Google Cloud Text-to-Speech API. Рассмотрены этапы разработки и настройки, включая необходимые инструменты и код.

Подготовка

Для начала работы:

  1. Клонируйте проект (ссылка на репозиторий — в текстовом документе, доступном по ссылке под видео или в Telegram-канале). Разверните проект локально.
  2. Установите зависимости: выполните команду npm install.
  3. Модифицируйте default.json: вставьте Telegram-токен (получить у бота @BotFather) и ключ OpenAI.

Интеграция Google Text-to-Speech API

Интеграция включает:

  1. Регистрацию в Google Cloud Console и создание проекта.
  2. Включение Cloud Text-to-Speech API в Marketplace.
  3. Создание сервисного аккаунта с ролью Editor в разделе Credentials. Скачайте ключ в формате JSON и сохраните его в корне проекта (например, как google_youtube.json).

Конвертер текста в речь

Создайте файл text.js с классом TextConverter, содержащим методы:

  1. Получение токена авторизации: Использует данные из google_youtube.json, библиотеку jsonwebtoken (npm install jsonwebtoken) и делает запрос к Google API. Код опирается на создание JWT с использованием информации из ключа сервисного аккаунта. Включает обработку ошибок.
  2. Преобразование текста в речь: Метод textToSpeech принимает текст и отправляет запрос к Google Text-to-Speech API с использованием axios (npm install axios). Запрос формируется на основе параметров из документации Google Text-to-Speech API (язык ru-RU, голос, формат MP3).
  3. Обработка ответа: Преобразует Base64-кодированное аудио из ответа API в буфер и записывает его во временный MP3-файл с помощью fs.promises.writeFile. Файл удаляется после использования.

Модификация логики бота

В logic.js замените textToChat на метод, использующий TextConverter для преобразования текста в аудио и context.sendAudio для отправки аудио в Telegram. В качестве метаданных можно указать title и performer.

Тестирование и заключение

Запустите бота командой npm run dev. Протестируйте функциональность. Доработайте бота, настроив сообщения об ошибках и формат аудио. Учтите ограничения использования Telegram и YouTube в некоторых регионах.

Что будем искать? Например,программа