Регулярное распознавание аудиофайлов из 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.
- Таймаут — 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.