Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Построение пайплайна CI/CD в GitLab
    • Работа с API-шлюзом по протоколу WebSocket
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Визуализация логов в Grafana с помощью плагина Cloud Logging
    • Канареечный релиз функции Cloud Functions
    • Интерактивная отладка функций Cloud Functions
    • Создание функции Node.js с помощью TypeScript
    • Запуск контейнерного приложения в Serverless Containers
    • Передача событий Yandex Cloud Postbox в Data Streams и их анализ с помощью DataLens
    • Использование API Gateway для настройки синтеза речи в SpeechKit
    • Подключение к YDB из функции Cloud Functions на Python
    • Подключение к базе данных YDB из функции Cloud Functions на Node.js
    • Защита API Gateway при помощи Smart Web Security
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows
    • Настройка реагирования в Cloud Logging и Yandex Cloud Functions
    • Настройка интеграций Workflows с Tracker, YandexGPT и Yandex Cloud Postbox
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте API-шлюз
  • Проверьте результат
  • Как удалить созданные ресурсы
  1. Бессерверные технологии
  2. Использование API Gateway для настройки синтеза речи в SpeechKit

Использование Yandex API Gateway для настройки синтеза речи в Yandex SpeechKit

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте API-шлюз
  • Проверьте результат
  • Как удалить созданные ресурсы

С помощью serverless-технологий можно создать собственную интеграцию с сервисами Yandex Cloud.

Пользовательская интеграция, создаваемая в данном руководстве, представляет собой API-шлюз, сконфигурированный по стандарту OpenAPI 3.0 c HTTP-интеграцией.

Запросы на синтез речи от пользователей поступают в API-шлюз, который с помощью HTTP-интеграции вызывает API SpeechKit и получает от SpeechKit синтезированную речь.

Чтобы настроить синтез речи SpeechKit с помощью API-шлюза Yandex API Gateway:

  1. Подготовьте облако к работе.
  2. Создайте сервисный аккаунт.
  3. Создайте API-шлюз.
  4. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки создаваемой инфраструктуры входит:

  • плата за количество запросов к API-шлюзу и исходящий трафик (см. тарифы Yandex API Gateway);
  • плата за использование SpeechKit (см. тарифы SpeechKit).

Создайте сервисный аккаунтСоздайте сервисный аккаунт

Создайте сервисный аккаунт speechkit-sa с ролью ai.speechkit-tts.user на каталог, в котором вы создаете инфраструктуру:

Консоль управления
CLI
API
  1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта: speechkit-sa.
  5. Нажмите Добавить роль и выберите роль ai.speechkit-tts.user.
  6. Нажмите кнопку Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Создайте сервисный аккаунт speechkit-sa:

    yc iam service-account create speechkit-sa
    

    Результат:

    id: nfersamh4sjq********
    folder_id: b1gc1t4cb638********
    created_at: "2023-09-21T10:36:29.726397755Z"
    name: speechkit-sa
    

    Сохраните идентификатор сервисного аккаунта speechkit-sa (id) и каталога, в котором его создали (folder_id).

    Подробнее о команде yc iam service-account create читайте в справочнике CLI.

  2. Назначьте сервисному аккаунту роль ai.speechkit-tts.user на каталог, указав сохраненные ранее идентификаторы каталога и сервисного аккаунта:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
      --role ai.speechkit-tts.user \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Подробнее о команде yc resource-manager folder add-access-binding читайте в справочнике CLI.

Чтобы создать сервисный аккаунт, воспользуйтесь методом create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create.

Чтобы назначить сервисному аккаунту роль ai.speechkit-tts.user на каталог, воспользуйтесь методом setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.

Создайте API-шлюзСоздайте API-шлюз

Консоль управления
CLI
API
  1. В консоли управления выберите каталог, в котором необходимо создать API-шлюз.

  2. В списке сервисов выберите API Gateway.

  3. Нажмите кнопку Создать API-шлюз.

  4. В поле Имя введите speechkit-api-gw.

  5. В блок Спецификация добавьте следующую спецификацию, указав идентификатор сервисного аккаунта speechkit-sa в параметре service_account_id:

    openapi: 3.0.0
    info:
      title: Sample API
      version: 1.0.0
    
    paths:
      /synthesis:
        post:
          requestBody:
            description: "/synthesis"
            content:
              application/json:
                schema:
                  type: object
                  x-yc-schema-mapping:
                    type: static
                    template:
                      text: "${.text}"
                      hints:
                        - voice: "lera"
                        - role: "friendly"
                        - audioTemplate:
                            audio:
                              audioSpec:
                                containerAudio:
                                  containerAudioType: "MP3"
          responses:
            200:
              description: "/synthesis"
              content:
                application/json:
                  schema:
                    type: object
                    x-yc-schema-mapping:
                      type: static
                      template:
                        data: "${.result.audioChunk.data}"
          x-yc-apigateway-integration:
            http_method: post
            type: http
            url: https://tts.api.cloud.yandex.net/tts/v3/utteranceSynthesis
            service_account_id: "<идентификатор_сервисного_аккаунта>"
    
  6. Нажмите кнопку Создать.

  7. Подождите, пока статус созданного API-шлюза изменится на running, и нажмите на строку с именем API-шлюза.

  8. В открывшемся окне скопируйте значение поля Служебный домен. Оно понадобится для проверки работы API-шлюза.

  1. Сохраните следующую спецификацию в файл speechkit-gw.yaml, указав идентификатор сервисного аккаунта speechkit-sa в параметре service_account_id:

    openapi: 3.0.0
    info:
      title: Sample API
      version: 1.0.0
    
    paths:
      /synthesis:
        post:
          requestBody:
            description: "/synthesis"
            content:
              application/json:
                schema:
                  type: object
                  x-yc-schema-mapping:
                    type: static
                    template:
                      text: "${.text}"
                      hints:
                        - voice: "lera"
                        - role: "friendly"
                        - audioTemplate:
                            audio:
                              audioSpec:
                                containerAudio:
                                  containerAudioType: "MP3"
          responses:
            200:
              description: "/synthesis"
              content:
                application/json:
                  schema:
                    type: object
                    x-yc-schema-mapping:
                      type: static
                      template:
                        data: "${.result.audioChunk.data}"
          x-yc-apigateway-integration:
            http_method: post
            type: http
            url: https://tts.api.cloud.yandex.net/tts/v3/utteranceSynthesis
            service_account_id: "<идентификатор_сервисного_аккаунта>"
    
  2. Выполните команду:

    yc serverless api-gateway create \
      --name speechkit-api-gw \
      --spec=speechkit-gw.yaml
    

    Где:

    • --name — имя API-шлюза.
    • --spec — путь к файлу со спецификацией.

    Результат:

    done (2s)
    id: d5ddbmungf72********
    folder_id: b1gt6g8ht345********
    created_at: "2024-08-19T18:58:32.101Z"
    name: speechkit-api-gw
    status: ACTIVE
    domain: d5dm1lba80md********.i9******.apigw.yandexcloud.net
    connectivity: {}
    log_options:
      folder_id: b1gt6g8ht345********
    execution_timeout: 300s
    

Сохраните служебный домен созданного API-шлюза (значение поля domain). Он понадобится для проверки работы API-шлюза.

Подробнее о команде yc serverless api-gateway create читайте в справочнике CLI.

Чтобы создать API-шлюз, воспользуйтесь методом REST API create для ресурса ApiGateway или вызовом gRPC API ApiGatewayService/Create.

Проверьте результатПроверьте результат

Примечание

Чтобы проверить работу API-шлюза, вам потребуются утилиты cURL и jq.

Отправьте запрос к API-шлюзу, указав сохраненное ранее значение служебного домена:

curl --verbose \
  https://<служебный_домен>/synthesis \
  --data '{"text": "Привет! В С+ерверлесс Апи Гейтв+эй появилась новая функция - трансформация Аш Ти Ти Пи тела запроса или ответа!"}' \
  | jq -r  '.data' | while read chunk; do base64 -d <<< "$chunk" >> audio.mp3; done

В результате выполнения команды синтезированная речь будет сохранена в файл audio.mp3 в текущей директории. Прослушать созданный файл можно в браузере, например в Яндекс Браузере или Mozilla Firefox.

Подробнее о формате передаваемого в параметре -d текста см. в документации Yandex SpeechKit.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Если созданные ресурсы вам больше не нужны:

  • Удалите API-шлюз.
  • Удалите сервисный аккаунт.

Была ли статья полезна?

Предыдущая
Передача событий Yandex Cloud Postbox в Data Streams и их анализ с помощью DataLens
Следующая
Подключение к YDB из функции Cloud Functions на Python
Проект Яндекса
© 2025 ООО «Яндекс.Облако»