Пример использования API v1 синхронного распознавания
Статья создана
Обновлена 27 сентября 2024 г.
Пример показывает, как с помощью API v1 распознать речь, записанную в аудиофайле формата OggOpus, в режиме синхронного распознавания.
В примере заданы следующие параметры:
- язык — русский;
- остальные параметры оставлены по умолчанию.
Формирование и отправка запроса к серверу, выполняющему распознавание, происходит с помощью утилиты cURL
Аутентификация происходит от имени аккаунта на Яндексе или федеративного аккаунта с помощью IAM-токена. Если вы используете сервисный аккаунт, передавать в запросе идентификатор каталога не нужно. Подробнее об аутентификации в API SpeechKit.
Пример запроса
POST-запрос
cURL
Python 3
PHP
Отправьте запрос на преобразование речи в текст:
POST /speech/v1/stt:recognize?topic=general&lang=ru-RU&folderId={<идентификатор_каталога>} HTTP/1.1
Host: stt.api.cloud.yandex.net
Authorization: Bearer <IAM-токен>
... (двоичное содержимое аудиофайла)
Где:
topic
— языковая модель.lang
— язык, для которого будет выполнено распознавание.folderId
— идентификатор каталога.<IAM-токен>
— 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}"
Где:
FOLDER_ID
— идентификатор каталога.IAM_TOKEN
— IAM-токен.--data-binary
— имя аудиофайла для распознавания.topic
— языковая модель.
Отправьте запрос на преобразование речи в текст:
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"))
Где:
FOLDER_ID
— идентификатор каталога.IAM_TOKEN
— IAM-токен.speech.ogg
— имя аудиофайла для распознавания.topic
— языковая модель.lang
— язык, для которого будет выполнено распознавание.
Отправьте запрос на преобразование речи в текст:
<?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);
Где:
token
— IAM-токен.folderId
— идентификатор каталога.audioFileName
— имя аудиофайла для распознавания.lang
— язык, для которого будет выполнено распознавание.format
— формат передаваемого аудио.
Пример ответа
HTTP/1.1 200 OK
YaCloud-Billing-Units: 15
{
"result": "твой номер 212-85-06"
}