Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex SpeechKit
  • Обзор технологий SpeechKit
    • Распознавание речи с помощью Playground
    • Синтез речи с помощью Playground
      • Потоковое распознавание аудиофайла API v3
      • Потоковое распознавание речи с микрофона API v3
      • Автоматическое определение языка — API v3
      • Потоковое распознавание API v2
      • Синхронное распознавание API v1
      • Асинхронное распознавание аудиофайлов в формате WAV — API v3
      • Асинхронное распознавание формата LPCM — API v2
      • Асинхронное распознавание формата OggOpus — API v2
      • Регулярное асинхронное распознавание аудиофайлов — API v2
  • Поддерживаемые форматы аудио
  • Интеграция телефонии
  • Квоты и лимиты
  • Управление доступом
  • Правила тарификации

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

  • Перед началом работы
  • Выполните распознавание с помощью API
  • Решение проблем
  1. Пошаговые инструкции
  2. Распознавание
  3. Асинхронное распознавание формата OggOpus — API v2

Асинхронное распознавание аудиофайлов в формате OggOpus в API v2

Статья создана
Yandex Cloud
Улучшена
exploadead
Обновлена 24 апреля 2025 г.
  • Перед началом работы
  • Выполните распознавание с помощью API
  • Решение проблем

Ниже рассмотрены примеры асинхронного распознавания речи из аудиофайла с помощью API v2 SpeechKit. В примерах заданы параметры:

  • язык — русский;
  • формат аудиопотока — OggOpus с расширением файла OPUS;
  • остальные параметры оставлены по умолчанию.

Вы можете сформировать и отправить запрос на распознавание речи с помощью утилиты cURL или Python-скрипта.

Аутентификация происходит от имени сервисного аккаунта с помощью IAM-токена. Подробнее об аутентификации в API SpeechKit.

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

  1. Создайте бакет и загрузите в него аудиофайл, который вы хотите распознать.

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

    Важно

    Асинхронно распознать аудиофайлы можно только от имени сервисного аккаунта. Не используйте для этого другие аккаунты в Yandex Cloud.

  3. Назначьте сервисному аккаунту роли storage.uploader и ai.speechkit-stt.user на каталог, в котором вы ранее создали бакет.

  4. Получите IAM-токен или API-ключ для созданного сервисного аккаунта.

Если у вас нет аудиофайла формата OggOpus, вы можете скачать пример файла.

Выполните распознавание с помощью APIВыполните распознавание с помощью API

Важно

Для двухканальной OggOpus-записи не нужно указывать количество каналов с помощью параметра audioChannelCount.

cURL
Python 3
  1. Получите ссылку на аудиофайл в Object Storage.

  2. Создайте файл, например body.json, и добавьте в него код:

    {
        "config": {
            "specification": {
                "languageCode": "ru-RU"
            }
        },
        "audio": {
            "uri": "<ссылка_на_аудиофайл>"
        }
    }
    

    Где:

    • languageCode — язык, для которого будет выполнено распознавание.

    • uri — ссылка на аудиофайл в Object Storage. Пример ссылки: https://storage.yandexcloud.net/speechkit/speech.opus.

      Для бакета с ограниченным доступом в ссылке присутствуют дополнительные query-параметры (после знака ?). Эти параметры не нужно передавать в SpeechKit — они игнорируются.

    Формат аудиопотока указывать не нужно, так как OggOpus — формат по умолчанию.

    Примечание

    Не передавайте параметр audioChannelCount, чтобы указать количество аудиоканалов. Файлы формата OggOpus уже содержат информацию о количестве каналов.

  3. Выполните созданный файл:

    export IAM_TOKEN=<IAM-токен_сервисного_аккаунта> && \
    curl \
      --request POST \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      --data "@body.json" \
      https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize
    

    Где IAM_TOKEN — IAM-токен сервисного аккаунта.

    Пример результата:

    {
        "done": false,
        "id": "e03sup6d5h1q********",
        "createdAt": "2019-04-21T22:49:29Z",
        "createdBy": "ajes08feato8********",
        "modifiedAt": "2019-04-21T22:49:29Z"
    }
    

    Сохраните идентификатор (id) операции распознавания, полученный в ответе.

  4. Подождите, пока закончится распознавание. Одна минута аудио распознается примерно за 10 секунд.

  5. Отправьте запрос на получение информации об операции:

    curl \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      https://operation.api.cloud.yandex.net/operations/<идентификатор_операции_распознавания>
    

    Пример результата:

    {
     "done": true,
     "response": {
      "@type": "type.googleapis.com/yandex.cloud.ai.stt.v2.LongRunningRecognitionResponse",
      "chunks": [
       {
        "alternatives": [
         {
          "text": "твой номер 212-85-06",
          "confidence": 1
         }
        ],
        "channelTag": "1"
       }
      ]
     },
     "id": "e03sup6d5h1q********",
     "createdAt": "2019-04-21T22:49:29Z",
     "createdBy": "ajes08feato8********",
     "modifiedAt": "2019-04-21T22:49:36Z"
    }
    

    Если распознать речь в переданном файле не удалось, секция response.chunks может отсутствовать в ответе.

  1. Установите пакет requests с помощью менеджера пакетов pip:

    pip install requests
    
  2. Создайте файл, например test.py, и добавьте в него код:

    # -*- coding: utf-8 -*-
    
    import requests
    import time
    import json
    
    # Укажите ваш IAM-токен и ссылку на аудиофайл в Object Storage.
    key = '<IAM-токен_сервисного_аккаунта>'
    filelink = '<ссылка_на_аудиофайл>'
    
    POST ='https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize'
    
    body ={
        "config": {
            "specification": {
                "languageCode": "ru-RU"
            }
        },
        "audio": {
            "uri": filelink
        }
    }
    
    header = {'Authorization': 'Bearer {}'.format(key)}
    
    # Отправьте запрос на распознавание.
    req = requests.post(POST, headers=header, json=body)
    data = req.json()
    print(data)
    
    id = data['id']
    
    # Запрашивайте на сервере статус операции, пока распознавание не будет завершено.
    while True:
    
        time.sleep(1)
    
        GET = "https://operation.api.cloud.yandex.net/operations/{id}"
        req = requests.get(GET.format(id=id), headers=header)
        req = req.json()
    
        if req['done']: break
        print("Not ready")
    
    # Покажите полный ответ сервера в формате JSON.
    print("Response:")
    print(json.dumps(req, ensure_ascii=False, indent=2))
    
    # Покажите только текст из результатов распознавания.
    print("Text chunks:")
    for chunk in req['response']['chunks']:
        print(chunk['alternatives'][0]['text'])
    

    Где:

    • key — IAM-токен сервисного аккаунта;
    • filelink — ссылка на аудиофайл в Object Storage.
  3. Выполните созданный файл:

    python3 test.py
    

Решение проблемРешение проблем

Если в ответе возвращается пустота, пустой файл или ошибка Invalid audio received, проверьте кодек, которым закодирован ваш аудиофайл. Чтобы файл был корректно распознан, недостаточно изменить его расширение.

Чтобы конвертировать файл с расширением OGG в поддерживаемый формат OggOpus, воспользуйтесь утилитой FFmpeg:

ffmpeg -i audio.ogg -c:a libopus -b:a 65536 audio_new.ogg

См. такжеСм. также

  • API v2 асинхронного распознавания
  • Асинхронное распознавание аудиофайлов в формате LPCM в API v2
  • Регулярное асинхронное распознавание аудиофайлов из Yandex Object Storage
  • Аутентификация в API SpeechKit

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

Предыдущая
Асинхронное распознавание формата LPCM — API v2
Следующая
Регулярное асинхронное распознавание аудиофайлов — API v2
Проект Яндекса
© 2025 ООО «Яндекс.Облако»