gRPC API сервиса распознавания речи


Исходная схема: apis_ru/tinkoff/cloud/stt/v1/stt.proto

Services

SpeechToText

Распознавание речи.

Имя методаТип запросаТип ответаОписание
RecognizeRecognizeRequestRecognizeResponseМетод для распознавания аудио целиком: загружаем аудио полностью, получаем полный ответ.
StreamingRecognizeStreamingRecognizeRequest streamStreamingRecognizeResponse streamМетод для поточного распознавания.
LongRunningRecognizeLongRunningRecognizeRequesttinkoff.cloud.longrunning.v1.OperationМетод для создания задачи отложенного распознавания аудио. Созданная операция существует в течение ограниченного времени, после чего автоматически удаляется.

Enumerations

AudioEncoding

Формат кодирования аудио. Задаёт и контейнер, и кодек.

ИмяЗначениеОписание
ENCODING_UNSPECIFIED0Не задан - недопустимое значение. Используется в качестве значения по умолчанию для исключения случайных ошибок.
LINEAR161PCM без заголовков с целыми знаковыми 16-битными сэмплами в линейном распределении.
MULAW3PCM без заголовков с 8-битными сэмплами в распледелении Mu-law (aka PCMU).
ALAW8PCM без заголовков с 8-битными сэмплами в распледелении A-law (aka PCMA).
RAW_OPUS11Фрэймы Opus запакованные в сообщения Protobuf.
ВАЖНО: каждый фрэйм Opus должен быть запакован в поле "content" сообщения RecognitionAudio.
При этом, каждый фрэйм необходимо отправлять ровно так, как он был закодирован.
Т. е. нельзя просто так взять и сконкатенировать несколько фрэймов Opus и отправить их одним куском в "content".
MPEG_AUDIO12Аудиопоток MPEG.

Messages

InterimResultsConfig

Конфигурация режима промежуточных гипотез.

ПолеТипОписание
enable_interim_resultsboolФлаг для включения промежуточных гипотез. Выключены по умолчанию.
intervalfloatЖелаемый интервал отправки промежуточных гипотез в секундах.
Реальный интервал между гипотезами выбирается на основе внутреннего устройства сервиса в угоду минимизации задержки отдачи актуальных данных.

LongRunningRecognizeRequest

Запрос на создание задачи отложенного распознавания по методу LongRunningRecognize.

ПолеТипОписание
configRecognitionConfigКонфигурация распознавания.
audioRecognitionAudioАудио для распознавания.
В отличие от RecognizeRequest, тут допустимо использование Uri к ресурсу, загруженному через S3-совместимое хранилище
groupstringГруппа, в которую следует поместить операцию.
Это произвольная строка, позволяющая объединять операции распознавания в логические группы.
Пустая строка является допустимым значением.

RecognitionAudio

Аудио для распознавания.

ПолеТипОписание
contentbytesВходящее аудио целиком.
uristringНа данный момент допустимо только внутри LongRunningRecognizeRequest. URI входящего аудио.
Должен соответствовать формату
storage://s3.api.tinkoff.ai/inbound/<имя_файла>

Подробнее см в разделе Загрузка файлов для отложенной обработки.

RecognitionConfig

Общие настройки для распознавания.

ПолеТипОписание
encodingAudioEncodingФормат кодирования аудио. Задаёт и контейнер, и кодек. Должен задаваться явно.
sample_rate_hertzuint32Частота дискретизации аудио на входе в Герцах.
Для MPEG_AUDIO должна соответствовать частоте дискретизации закодированного аудио. Должна задаваться явно.
language_codestringИгнорируется на данный момент. Язык речи для распознавания.
max_alternativesuint32Максимальное количество версий фраз в моменте для финальных и промежуточных результатов. Значение по умолчанию: 1.
profanity_filterboolНе используется на данный момент.
speech_contextsSpeechContextНе используется на данный момент. Задаёт словарь слов и фраз для распознавания с большей вероятностью.
enable_automatic_punctuationboolВключает автоматическую расстановку пунктуации для первой (наиболее вероятной) версии финальной гипотезы.
modelstringМодель распознавания. В случае если поле не задано, используется модель по умолчанию.
num_channelsuint32Количество каналов для входящего аудио. Для MPEG_AUDIO должно соответствовать количеству каналов в аудиопотоке.
do_not_perform_vadboolФлаг выключающий разбиение на фразы, т. е. VAD.
Весь распознанный текст будет получен в виде одной фразы.
vad_configVoiceActivityDetectionConfigСтруктура для переопределения настроек VAD.

RecognizeRequest

Запрос на распознавание аудио по методу Recognize.

ПолеТипОписание
configRecognitionConfigКонфигурация распознавания.
audioRecognitionAudioАудио для распознавания.

RecognizeResponse

Ответ с распознанными фразами по методу Recognize.

ПолеТипОписание
resultsSpeechRecognitionResultРаспознанные фразы.

SpeechContext

Не используется на данный момент. Задаёт словарь слов и фраз для распознавания с большей вероятностью.

ПолеТипОписание
phrasesstringФразы для распознавания с повышенной вероятностью.
wordsstringОтдельные слова для распознавания с повышенной вероятностью.

SpeechRecognitionAlternative

Версия распознанной фразы (или части фразы в случае промежуточной гипотезы).

ПолеТипОписание
transcriptstringРаспознанный текст.
confidencefloatОтносительный показатель уверенности (относительно других альтернативных гипотез при конфигурации с max_alternatives > 1).
wordsWordInfoНе поддерживается на данный момент. Список отдельных слов внутри фразы.

SpeechRecognitionResult

Распозная фраза для указанного аудио канала.

ПолеТипОписание
alternativesSpeechRecognitionAlternativeСписок версий фразы отсортированных по убыванию confidence.
channelint32Канал, к которому относится версия фразы (нумерация с 0).
start_timegoogle.protobuf.DurationВремя начала фразы внутри аудиопотока на входе.
end_timegoogle.protobuf.DurationВремя конца фразы внутри аудиопотока на входе.

StreamingRecognitionConfig

Конфигурация распознавания для вызова методом StreamingRecognize. Должна отправляться строго в первом сообщении вызова.

ПолеТипОписание
configRecognitionConfigКонфигурация распознавания.
single_utteranceboolФлаг для включения режима одной фразы. В этом режиме распознавание завершается сервисом сразу после распознавания первой фразы.
interim_results_configInterimResultsConfigКонфигурация для промежуточных гипотез. Т. е. версий текста в момент когда пришла лишь часть аудио, относящегося к фразе.

StreamingRecognitionResult

Распознанная фраза по методу StreamingRecognize.

ПолеТипОписание
recognition_resultSpeechRecognitionResultРезультат распознавания.
is_finalboolВыставленно в true если пришла финальная гипотеза. Значение false проставляется для промежуточных гипотез.
stabilityfloatНе используется на данный момент. Показатель стабильности распознавания.

StreamingRecognizeRequest

Запрос на распознавание по методу StreamingRecognize (сообщение от клиента к серверу).
Первым должно быть отправлено сообщение с заполненным

streaming_config
, а все последующие сообщения должны отправляться с заполненным
audio_content
.

ПолеТипОписание
streaming_configStreamingRecognitionConfigКонфигурация распознавания для поточного вызова. Должна отправляться строго в первом сообщении вызова.
audio_contentbytesФрагмент аудио на входе. Фрагменты должны отправляться после сообщения с конфигурацией распознавания.

StreamingRecognizeResponse

Ответ с распознанными фразами (сообщение от сервера к клиенту).

ПолеТипОписание
resultsStreamingRecognitionResultРаспознанные фразы.

VoiceActivityDetectionConfig

Структура для переопределения настроек VAD (все поля опциональны).

ПолеТипОписание
min_speech_durationfloatИгнорируется на данный момент. Минимальная длительность фразы при определении VAD в секундах.
max_speech_durationfloatИгнорируется на данный момент. Максимальная длительность фразы при определении VAD в секундах.
silence_duration_thresholdfloatДлительность тишины в секундах, при которой фраза считается завершённой. Значение по умолчанию зависит от конфигурации сервиса.
silence_prob_thresholdfloatПороговое значение вероятности тишины (в диапазоне от 0.0 до 1.0). При вероятности тишины ниже этого значения фрагмент аудио считается тишиной. Значение по умолчанию зависит от конфигурации сервиса.
aggressivenessfloatНе используется на данный момент.

WordInfo

Не поддерживается на данный момент. Детальная информация по слову внутри фразы.

ПолеТипОписание
start_timegoogle.protobuf.DurationВремя начала слова внутри аудиопотока на входе.
end_timegoogle.protobuf.DurationВремя конца слова внутри аудиопотока на входе.
wordstringСлово внутри фразы.
confidencefloatОтносительный показатель уверенности (относительно других слов в фразе и слов в альтернативных гипотезах при конфигурации запроса с max_alternatives > 1). Значение может быть отрицательным.