Распознавание коротких аудио
Распознавание коротких аудио отличается быстрой скоростью ответа и подходит для одноканального аудио небольшого размера.
Если вы хотите распознавать речь в рамках одного соединения, используйте потоковый режим. В потоковом режиме вы сможете получать промежуточные результаты распознавания.
Требования к аудио
Передаваемое аудио должно соответствовать требованиям:
- Максимальный размер файла — 1 МБ.
- Максимальная длительность — 30 секунд.
- Максимальное количество аудиоканалов — 1.
Если ваш файл больше, длиннее или у него больше аудиоканалов, используйте распознавание длинных аудио.
HTTP-запрос
POST https://stt.api.cloud.yandex.net/speech/v1/stt:recognize
Используйте заголовок "Transfer-Encoding: chunked"
для потоковой передачи данных.
Query-параметры
Параметр | Описание |
---|---|
lang | string Язык, для которого будет выполнено распознавание. Допустимые значения:
|
topic | string Языковая модель, которую следует использовать при распознавании. Чем точнее выбрана модель, тем лучше результат распознавания. В одном запросе можно указать только одну модель. Допустимые значения зависят от выбранного языка. Значение параметра по умолчанию: general . |
profanityFilter | boolean Параметр, регулирующий работу фильтра ненормативной лексики в распознанной речи. Допустимые значения:
|
format | string Формат передаваемого аудио. Допустимые значения:
|
sampleRateHertz | string Частота дискретизации передаваемого аудио. Применяется, если значение format равно lpcm . Допустимые значения:
|
folderId | string Идентификатор каталога, к которому у вас есть доступ. Требуется для авторизации с пользовательским аккаунтом (см. ресурс UserAccount ). Не используйте это поле, если вы делаете запрос от имени сервисного аккаунта. Максимальная длина строки в символах — 50. |
Параметры в теле запроса
В теле необходимо передать двоичное содержимое аудиофайла.
Ответ
Распознанный текст возвращается в ответе в поле result
.
{
"result": <распознанный текст>
}
Примеры
Чтобы распознать русскую речь, отправьте аудиофрагмент, например speech.ogg.
Пример запроса
POST /speech/v1/stt:recognize?topic=general&lang=ru-RU&folderId={идентификатор-каталога} HTTP/1.1
Host: stt.api.cloud.yandex.net
Authorization: Bearer <IAM-TOKEN>
... (двоичное содержимое аудиофайла)
$ export FOLDER_ID=b1gvmob95yysaplct532
$ export IAM_TOKEN=CggaATEVAgA...
$ curl -X POST \
-H "Authorization: Bearer ${IAM_TOKEN}" \
-H "Transfer-Encoding: chunked" \
--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 = "b1gvmob95yysaplct532" # Идентификатор каталога
IAM_TOKEN = "CggaATEVAgA..." # 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)
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 = 'CggaATEVAgA...'; # IAM-токен
$folderId = "b1gvmob95yysaplct532"; # Идентификатор каталога
$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, 'Transfer-Encoding: chunked'));
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"
}