Регулярное асинхронное распознавание аудиофайлов из Yandex Object Storage
В API асинхронного распознавания SpeechKit реализована интеграция с сервисом Yandex Object Storage. С ее помощью можно настроить автоматическое распознавание аудиофайлов поддерживаемых форматов, регулярно загружаемых в бакет Object Storage. Облачная функция в сервисе Yandex Cloud Functions периодически проверяет наличие аудиофайлов в бакете и отправляет их в API SpeechKit для распознавания. Результат и статус распознавания сохраняются в тот же бакет Object Storage.
Чтобы настроить автоматическое распознавание аудиофайлов с помощью SpeechKit:
- Создайте облачную функцию для чтения файлов из бакета Object Storage, отправки в API и проверки статуса распознавания файлов.
- Создайте триггер для периодического запуска облачной функции.
- Проверьте работу функции.
Перед началом работы
-
Создайте сервисный аккаунт с именем
asr-batch-sa
. -
Назначьте сервисному аккаунту роли
storage.editor
,functions.functionInvoker
иai.speechkit-stt.user
на каталог, в котором аккаунт был создан. -
Создайте статический ключ доступа для сервисного аккаунта.
-
Создайте API-ключ доступа для сервисного аккаунта.
-
Создайте бакет Object Storage с именем
asr-batch-bucket
в каталоге сервисного аккаунта. -
Откройте бакет
asr-batch-bucket
, нажмите кнопку Создать папку и укажите в поле Имя папки значениеinput
. -
Загрузите в папку
input
бакета файлconfig.json
с заданным языком распознавания. Файл содержит только один параметр:{ "lang": "<код_языка>" }
Примечание
Если файл
config.json
отсутствует в бакете, для распознавания используется русский язык.
Создайте облачную функцию
-
В консоли управления
перейдите в каталог, где был создан сервисный аккаунт. -
Выберите сервис Cloud Functions.
-
Нажмите кнопку Создать функцию и укажите имя функции
asr-batch-function
. -
Нажмите кнопку Создать.
-
В блоке Редактор выберите среду выполнения
Python
версии3.8
и нажмите Продолжить. -
Скачайте из репозитория Yandex Cloud файл со скриптом
. -
В блоке Код функции удалите содержимое файла
index.py
и вставьте скачанный скрипт. -
В блоке Код функции создайте файл
requirements.txt
и добавьте в него код:boto3 botocore requests
-
Укажите параметры запуска функции:
- Точка входа —
index.handler
. - Таймаут, c —
60
. - Сервисный аккаунт –
asr-batch-sa
.
- Точка входа —
-
Добавьте переменные окружения:
S3_BUCKET
–asr-batch-bucket
.S3_PREFIX
–input
.S3_PREFIX_LOG
–log
.S3_PREFIX_OUT
–out
.S3_KEY
– ID статического ключа доступа.S3_SECRET
– секрет статического ключа доступа.API_KEY
– ID API-ключа.API_SECRET
– секрет API-ключа.
-
Нажмите кнопку Сохранить изменения.
Создайте триггер
- В консоли управления выберите сервис Cloud Functions.
- Выберите Триггеры.
- Нажмите Создать триггер.
- Укажите параметры триггера:
- Имя –
asr-batch-cron
. - Тип –
Таймер
. - Запускаемый ресурс –
Функция
. - Cron-выражение –
Каждую минуту
. - Функция –
asr-batch-function
. - Тег версии функции –
$latest
. - Сервисный аккаунт –
asr-batch-sa
.
- Имя –
- Нажмите Создать триггер.
Созданный триггер будет срабатывать ежеминутно и запускать облачную функцию.
Проверьте работу функции
- В консоли управления выберите сервис Object Storage и откройте бакет
asr-batch-bucket
. - Загрузите в папку
input
аудиофайлы любого поддерживаемого формата. - Подождите несколько минут и убедитесь, что в бакете появились папки
log
иout
. - Проверьте статус распознавания в папке
log
. Для каждого из отправленных на распознавание аудиофайлов статус сохраняется во вспомогательном файле<имя_аудиофайла>.json
(например,audio.mp3.json
). Если в файле содержится параметр"done": "false"
, то процесс распознавания не завершен. - Проверьте результат распознавания в папке
out
. Результат сохраняется в формате JSON в файле с именем<имя_аудиофайла>.json
(например,audio.mp3.json
). Подробнее о формате результата распознавания см. раздел API асинхронного распознавания.
Примечание
Для мониторинга выполнения скрипта можно посмотреть логи функции asr-batch-function
.