Асинхронное распознавание аудиофайлов в формате LPCM в API v2
Ниже рассмотрен пример асинхронного распознавания речи из аудиофайла с помощью API v2 SpeechKit. В примере заданы параметры:
- язык — русский;
- языковая модель —
general
; - формат передаваемого аудиофайла — LPCM с частотой дискретизации 8000 Гц;
- количество аудиоканалов — 1 (значение по умолчанию);
- остальные параметры оставлены по умолчанию.
Вы можете сформировать и отправить запрос на распознавание речи с помощью утилиты cURL
Аутентификация происходит от имени сервисного аккаунта с помощью IAM-токена. Подробнее об аутентификации в API SpeechKit.
Перед началом работы
-
Создайте бакет и загрузите в него аудиофайл, который вы хотите распознать.
-
Создайте сервисный аккаунт.
Важно
Асинхронно распознать аудиофайлы можно только от имени сервисного аккаунта. Не используйте для этого другие аккаунты в Yandex Cloud.
-
Назначьте сервисному аккаунту роли
storage.uploader
иai.speechkit-stt.user
на каталог, в котором вы ранее создали бакет. -
Получите IAM-токен или API-ключ для созданного сервисного аккаунта.
Если у вас нет аудиофайла формата LPCM, вы можете скачать пример файла
Выполните распознавание с помощью API
-
Получите ссылку на аудиофайл в Object Storage.
-
Создайте файл
body.json
и добавьте в него код:{ "config": { "specification": { "languageCode": "ru-RU", "model": "general", "audioEncoding": "LINEAR16_PCM", "sampleRateHertz": 8000, "audioChannelCount": 1 } }, "audio": { "uri": "<ссылка_на_аудиофайл>" } }
Где:
-
languageCode
— язык, для которого будет выполнено распознавание. -
model
— модель распознавания речи. -
audioEncoding
— формат передаваемого аудиофайла. -
sampleRateHertz
— частота дискретизации аудиофайла в Гц. -
audioChannelCount
— количество аудиоканалов. -
uri
— ссылка на аудиофайл в Object Storage. Пример ссылки:https://storage.yandexcloud.net/speechkit/speech.pcm
.Для бакета с ограниченным доступом в ссылке присутствуют дополнительные query-параметры (после знака
?
). Эти параметры не нужно передавать в SpeechKit — они игнорируются.
-
-
Выполните созданный файл:
export API_KEY=<API-ключ_сервисного_аккаунта> && \ curl \ --insecure \ --header "Authorization: Api-Key ${API_KEY}" \ --data "@body.json"\ https://transcribe.api.cloud.yandex.net/speech/stt/v2/longRunningRecognize
Пример результата:
{ "done": false, "id": "e03sup6d5h1q********", "createdAt": "2019-04-21T22:49:29Z", "createdBy": "ajes08feato8********", "modifiedAt": "2019-04-21T22:49:29Z" }
Сохраните идентификатор (
id
) операции распознавания, полученный в ответе. -
Подождите, пока закончится распознавание. Одна минута одноканального аудио распознается примерно за 10 секунд.
-
Отправьте запрос на получение информации об операции:
curl \ --insecure \ --header "Authorization: Api-key ${API_KEY}" \ https://operation.api.cloud.yandex.net/operations/<идентификатор_операции_распознавания>
Пример результата:
{ "done": true, "response": { "@type": "type.googleapis.com/yandex.cloud.ai.stt.v2.LongRunningRecognitionResponse", "chunks": [ { "alternatives": [ { "words": [ { "startTime": "0.160s", "endTime": "0.500s", "word": "привет", "confidence": 1 }, { "startTime": "0.580s", "endTime": "0.800s", "word": "мир", "confidence": 1 } ], "text": "Привет мир", "confidence": 1 } ], "channelTag": "1" } ] }, "id": "e03jjenu23uc********", "createdAt": "2024-08-22T11:39:22Z", "createdBy": "aje3bg430agh********", "modifiedAt": "2024-08-22T11:39:23Z" }