Yandex Cloud
Search
Contact UsGet started
  • Blog
  • Pricing
  • Documentation
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • ML & AI
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Customer Stories
    • Gateway to Russia
    • Cloud for Startups
    • Education and Science
  • Blog
  • Pricing
  • Documentation
Yandex project
© 2025 Yandex.Cloud LLC
Yandex Cloud Functions
  • Comparison with other Yandex Cloud services
    • All tutorials
    • Creating a skill for Alice
    • Deploying a web application
    • Creating a skill for Alice and a website with authorization
    • Writing data from a device into a database
    • Writing load balancer logs to PostgreSQL
    • Developing a Slack bot
    • Developing a Telegram bot
    • Connecting to a YDB database from a Python function
    • Connecting to a YDB database from a function in Node.js
    • Converting a video to a GIF in Python
    • Creating a Node.js function using TypeScript
    • Developing a custom integration
    • Creating a budget trigger that invokes a function to stop a VM
    • Creating an interactive serverless application using WebSocket
    • Automatically copying objects from one Object Storage bucket to another
    • Running computations on a schedule in DataSphere
    • Interactive debugging of functions
    • Regular asynchronous recognition of audio files from Object Storage
    • Canary release of a Cloud Functions function
    • Deploying a fault-tolerant architecture with preemptible VMs
    • Creating triggers that invoke a function to stop a VM and send a Telegram notification
    • Loading data from Yandex Direct to a data mart enabled by Yandex Managed Service for ClickHouse® using Yandex Cloud Functions, Yandex Object Storage, and Yandex Data Transfer
    • Status monitoring of geographically distributed devices
    • Sensor reading monitoring and event notifications
    • Emulating multiple IoT devices
    • Streaming Yandex Cloud Postbox events to Yandex Data Streams and analyzing them using Yandex DataLens
    • URL shortener
    • Yandex Tracker: data export and visualization
    • Running computations in DataSphere using the API
    • Developing a Telegram bot for text and audio recognition
    • Configuring responses in Yandex Cloud Logging and Cloud Functions
    • Developing functions in Functions Framework and deploying them to Yandex Serverless Containers
  • Tools
  • Pricing policy
  • Access management
  • Terraform reference
  • Monitoring metrics
  • Audit Trails events
  • Release notes
  • FAQ

In this article:

  • Getting started
  • Create a cloud function
  • Create a trigger
  • Test the function
  1. Tutorials
  2. Regular asynchronous recognition of audio files from Object Storage

Regular recognition of audio files from Yandex Object Storage

Written by
Yandex Cloud
Updated at May 7, 2025
  • Getting started
  • Create a cloud function
  • Create a trigger
  • Test the function

The SpeechKit asynchronous recognition API is integrated with Yandex Object Storage. Therefore, you can set up automatic recognition of audio files of supported formats that are regularly uploaded to an Object Storage bucket. A cloud function in Yandex Cloud Functions regularly checks the bucket for audio files and sends them to the SpeechKit API for recognition. The recognition result and status are saved to the same Object Storage bucket.

To set up automatic recognition of audio files using SpeechKit:

  1. Create a cloud function to read files from your Object Storage bucket, send them to the API, and check the file recognition status.
  2. Create a trigger to regularly invoke your cloud function.
  3. Test the function.

Getting started

  1. Create a service account named asr-batch-sa.

  2. Assign the storage.editor, functions.functionInvoker, and ai.speechkit-stt.user roles to the service account for the folder in which it was created.

  3. Create a static access key for the service account.

  4. Create an API key to access the service account.

  5. Create an Object Storage bucket named asr-batch-bucket in the service account folder.

  6. Open asr-batch-bucket, click Create folder, and specify input in the Folder name field.

  7. Upload the config.json file with the specified recognition language to the bucket's input folder. The file only contains one setting:

    {
      "lang": "<language_code>"
    }
    

    Note

    If there is no config.json file in the bucket, the recognition language will be Russian.

Create a cloud function

  1. In the management console, navigate to the folder with the new service account.

  2. Select Cloud Functions.

  3. Click Create function and specify asr-batch-function as the function name.

  4. Click Create.

  5. Under Editor, select the Python 3.8 runtime environment and click Continue.

  6. Download a script file from the Yandex Cloud repository.

  7. Under Function code, clear the contents of the index.py file and paste the downloaded script.

  8. Under Function code, create a file named requirements.txt and add the following code to it:

    boto3
    botocore
    requests
    
  9. Specify the function run settings:

    • Entry point: index.handler
    • Timeout: 60
    • Service account: asr-batch-sa
  10. Add these environment variables:

    • S3_BUCKET: asr-batch-bucket
    • S3_PREFIX: input
    • S3_PREFIX_LOG: log
    • S3_PREFIX_OUT: out
    • S3_KEY: Static access key ID
    • S3_SECRET: Static access key secret
    • API_KEY: API key ID
    • API_SECRET: API key secret
  11. Click Save changes.

Create a trigger

  1. In the management console, select Cloud Functions.
  2. Select Triggers.
  3. Click Create trigger.
  4. Specify the trigger settings:
    • Name: asr-batch-cron.
    • Type: Timer.
    • Launched resource: Function.
    • Cron expression: Every minute.
    • Function: asr-batch-function.
    • Function version tag: $latest.
    • Service account: asr-batch-sa.
  5. Click Create trigger.

The trigger you created will fire once a minute and invoke the cloud function.

Test the function

  1. In the management console, select Object Storage and open asr-batch-bucket.
  2. Upload audio files of any supported format to the input folder.
  3. Wait a few minutes and make sure the bucket now contains the log and out folders.
  4. Check the recognition status in the log folder. The status of each audio file sent for recognition is saved to an auxiliary file named <audio_file_name>.json (e.g., audio.mp3.json). The "done": "false" parameter in the file indicates the recognition process is not completed.
  5. Check the recognition result in the out folder. The result is saved to a JSON file named <audio_file_name>.json (e.g., audio.mp3.json). To learn more about the recognition result format, see Asynchronous recognition API.

Note

You can monitor the progress of the script in the logs of asr-batch-function.

See also

  • Asynchronous recognition API v2
  • Asynchronous recognition of LPCM audio files using the API v2
  • Asynchronous recognition of OggOpus audio files using the API v2

Was the article helpful?

Previous
Interactive debugging of functions
Next
Canary release of a Cloud Functions function
Yandex project
© 2025 Yandex.Cloud LLC