Пример использования API v1 синхронного распознавания

Пример показывает, как с помощью API v1 распознать речь, записанную в аудиофайле формата OggOpus, в режиме синхронного распознавания.

В примере заданы следующие параметры:

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

Формирование и отправка запроса к серверу, выполняющему распознавание, происходит с помощью утилиты cURL.

Аутентификация происходит от имени аккаунта на Яндексе или федеративного аккаунта с помощью IAM-токена. Если вы используете сервисный аккаунт, передавать в запросе идентификатор каталога не нужно. Подробнее об аутентификации в API SpeechKit.

Пример запроса

Отправьте запрос на преобразование речи в текст:

POST /speech/v1/stt:recognize?topic=general&lang=ru-RU&folderId={<идентификатор_каталога>} HTTP/1.1
        Host: stt.api.cloud.yandex.net
        Authorization: Bearer <IAM-токен>
        
        ... (двоичное содержимое аудиофайла)
        

Где:

Отправьте запрос на преобразование речи в текст:

export FOLDER_ID=<идентификатор_каталога>
        export IAM_TOKEN=<IAM-токен>
        curl \
          --request POST \
          --header "Authorization: Bearer ${IAM_TOKEN}" \
          --data-binary "@speech.ogg" \
          "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?topic=general&folderId=${FOLDER_ID}"
        

Где:

Отправьте запрос на преобразование речи в текст:

import urllib.request
        import json
        
        FOLDER_ID = "<идентификатор_каталога>" # Идентификатор каталога
        IAM_TOKEN = "<IAM-токен>" # IAM-токен
        
        with open("speech.ogg", "rb") as f:
            data = f.read()
        
        params = "&".join([
            "topic=general",
            "folderId=%s" % FOLDER_ID,
            "lang=ru-RU"
        ])
        
        url = urllib.request.Request("https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?%s" % params, data=data)
        # Аутентификация через IAM-токен.
        url.add_header("Authorization", "Bearer %s" % IAM_TOKEN)
        
        responseData = urllib.request.urlopen(url).read().decode('UTF-8')
        decodedData = json.loads(responseData)
        
        if decodedData.get("error_code") is None:
            print(decodedData.get("result"))
        

Где:

Отправьте запрос на преобразование речи в текст:

<?php
        
        $token = '<IAM-токен>'; # IAM-токен
        $folderId = "<идентификатор_каталога>"; # Идентификатор каталога
        $audioFileName = "speech.ogg";
        
        $file = fopen($audioFileName, 'rb');
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?lang=ru-RU&folderId=${folderId}&format=oggopus");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
        
        curl_setopt($ch, CURLOPT_INFILE, $file);
        curl_setopt($ch, CURLOPT_INFILESIZE, filesize($audioFileName));
        $res = curl_exec($ch);
        curl_close($ch);
        $decodedResponse = json_decode($res, true);
        if (isset($decodedResponse["result"])) {
            echo $decodedResponse["result"];
        } else {
            echo "Error code: " . $decodedResponse["error_code"] . "\r\n";
            echo "Error message: " . $decodedResponse["error_message"] . "\r\n";
        }
        
        fclose($file);
        

Где:

Пример ответа

HTTP/1.1 200 OK
        YaCloud-Billing-Units: 15
        {
          "result": "твой номер 212-85-06"
        }
        

См. также