Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex SpeechKit
  • Начало работы
  • Релизы
  • Распознавание речи
    • О технологии
    • Распознавание коротких аудио
    • Распознавание длинных аудио
    • Потоковое распознавание
    • Форматы аудио
    • Модели распознавания
  • Синтез речи
    • О технологии
    • Описание метода API
    • Список голосов
    • Использование SSML
    • Список поддерживаемых фонем в SSML
  • Интеграция телефонии
  • Использование API
    • Аутентификация в API
    • Формат ответа
    • Диагностика ошибок
  • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • Правила до 1 января 2019 года
  • Вопросы и ответы
  1. Распознавание речи
  2. Распознавание коротких аудио

Распознавание коротких аудио

  • Требования к аудио
  • HTTP-запрос
    • Query-параметры
    • Параметры в теле запроса
  • Ответ
  • Примеры
    • Пример запроса
    • Пример ответа

Распознавание коротких аудио отличается быстрой скоростью ответа и подходит для одноканального аудио небольшого размера.

Если вы хотите распознавать речь в рамках одного соединения, используйте потоковый режим. В потоковом режиме вы сможете получать промежуточные результаты распознавания.

Требования к аудио

Передаваемое аудио должно соответствовать требованиям:

  1. Максимальный размер файла — 1 МБ.
  2. Максимальная длительность — 30 секунд.
  3. Максимальное количество аудиоканалов — 1.

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

HTTP-запрос

POST https://stt.api.cloud.yandex.net/speech/v1/stt:recognize

Используйте заголовок "Transfer-Encoding: chunked" для потоковой передачи данных.

Query-параметры

Параметр Описание
lang string
Язык, для которого будет выполнено распознавание.
Допустимые значения:
  • ru-RU (по умолчанию) — русский язык,
  • en-US — английский язык.
  • tr-TR — турецкий язык.
topic string
Языковая модель, которую следует использовать при распознавании.
Чем точнее выбрана модель, тем лучше результат распознавания. В одном запросе можно указать только одну модель.
Допустимые значения зависят от выбранного языка. Значение параметра по умолчанию: general.
profanityFilter boolean
Параметр, регулирующий работу фильтра ненормативной лексики в распознанной речи.
Допустимые значения:
  • false (по умолчанию) — ненормативная лексика не будет исключена из результатов распознавания;
  • true — ненормативная лексика будет исключена из результатов распознавания.
format string
Формат передаваемого аудио.
Допустимые значения:
  • lpcm — LPCM без WAV-заголовка.
  • oggopus (по умолчанию) — OggOpus.
sampleRateHertz string
Частота дискретизации передаваемого аудио.
Применяется, если значение format равно lpcm. Допустимые значения:
  • 48000 (по умолчанию) — частота дискретизации 48 кГц;
  • 16000 — частота дискретизации 16 кГц;
  • 8000 — частота дискретизации 8 кГц.
folderId string

Идентификатор каталога, к которому у вас есть доступ. Требуется для авторизации с пользовательским аккаунтом (см. ресурс UserAccount ). Не используйте это поле, если вы делаете запрос от имени сервисного аккаунта.

Максимальная длина строки в символах — 50.

Параметры в теле запроса

В теле необходимо передать двоичное содержимое аудиофайла.

Ответ

Распознанный текст возвращается в ответе в поле result.

{
  "result": <распознанный текст>
}

Примеры

Чтобы распознать русскую речь, отправьте аудиофрагмент, например speech.ogg.

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

POST-запрос
cURL
Python
PHP
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"
}
В этой статье:
  • Требования к аудио
  • HTTP-запрос
  • Query-параметры
  • Параметры в теле запроса
  • Ответ
  • Примеры
  • Пример запроса
  • Пример ответа
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»