ym88659208ym87991671
gRPC API потокового распознавания речи сервиса SaluteSpeech для двух каналов | Документация для разработчиков

API потокового распознавания двух каналов (gRPC v2)

Обновлено 18 июля 2025

Используется, если требуется распознавать речь в процессе ее записи, например, протоколы телефонии или запись аудио на мобильном устройстве.

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

Максимальный размер аудио – 1 Гб.

Запросы на распознавание передаются на адрес:

smartspeech.sber.ru

Заголовки запросов и ответов для всех шагов одинаковы:

Заголовки запроса

authorization
Bearer <Access token>
required

Информация об аутентификации с помощью Access Token, переданная через OAuth 2.0 .
Пример: Bearer eyJhbGciOi.cCI6IkpXVCJ9.eyJzd.1hcnRzcG.KUkw

Заголовки ответа

x-request-id
string
required

Уникальный идентификатор запроса, генерируемый сервером. 36 символов.
Пример: 22345200-abe8-4f60-90c8-0d43c5f6c0f6

Создание приложения

Для работы с сервисом распознавания речи SaluteSpeech вам необходимо создать клиентское приложение. Вы можете использовать любой язык программирования, который есть в библиотеке для работы с gRPC.

При написании приложения используйте proto-файл.

Подробную инструкцию по написанию клиентских приложений для gRPC с примерами вы найдете в официальной документации gRPC (английский язык).

Передача параметров распознавания

При обращении по gRPC-протоколу с запросом распознавания речи клиентское приложение использует метод Recognize. В первом сообщении клиент должен отправить опции распознавания в сообщении типа RecognitionOptions. Параметры этого сообщения:

audio_encoding
enum (AudioEncoding)
required

Аудиокодек.
Возможные значения смотрите в разделе Доступные форматы аудио

sample_rate
int32

Частота дискретизации.
Зависит от значения audio_encoding, подробнее читайте в разделе Доступные форматы аудио

enable_multi_utterance
boolean

Распознавание либо одного, либо нескольких предложений.
Возможные значения: true и false. Значение по умолчанию — false

enable_partial_results
boolean

Отправка промежуточных гипотез распознавания речи.
Возможные значения: true и false. Значение по умолчанию — false

hypotheses_count
int32

Количество сообщаемых альтернативных гипотез распознанной речи.
Любое число от 0 до 10. Значение по умолчанию — 1

no_speech_timeout
Duration

Интервал ожидания речи пользователя.
Любое число от 2 до 20.
По умолчанию – 7 секунд

max_speech_timeout
Duration

Определение максимальной длины высказывания до форсированного EOU.
Любое число от 0,5 до 20.
По умолчанию – 20 секунд

channels_count
int32

Количество каналов в многоканальном аудио.
Об ограничениях читайте в разделе Доступные форматы аудио

Hints array

Хинты (составной тип, см. ниже — Hints)

words
repeated string

Список слов или фраз, распознавание которых мы хотим усилить.
Здесь можно перечислить слова, которые с высокой вероятностью будет произносить пользователь

enable_letters
boolean

Модель коротких фраз, улучшающая распознавание отдельных букв и коротких слов.
Возможные значения: true и false. Значение по умолчанию — false

eou_timeout
Duration

Настройка распознавания конца фразы (End of Utterance — eou). Такое распознавание будет ожидаться после конца фразы столько секунд, сколько установлено в этом параметре.
Возможные значения от 0.5 до 5 секунд. По умолчанию распознавание конца фразы срабатывает после 1 секунды

SpeakerSeparationOptions array

Параметры разделения спикеров для фрагментов одновременной речи.

enable
boolean

Включение функции разделения спикеров.
Возможные значения: true и false. Значение по умолчанию — false

enable_only_main_speaker
boolean

Возвращение только главного спикера. Главный находится по max(main_speaker_confidence).
Возможные значения: true и false. Значение по умолчанию — false

count
int32

Ожидаемое количество спикеров. Определяет, на сколько голосов разделять аудиопоток.

insight_models
repeated string

Модели SaluteSpeech Insights для анализа удовлетворенности клиентов.
Возможные значения:

  • csi;
  • call_features;
  • is_solved;
  • csi, call_features, is_solved.

Подробнее читайте в разделе Insights модели.

enable_vad
boolean

VAD (Voice Activation Detection) — обнаружение голосовой активности.
Возможные значения: true и false. Значение по умолчанию — false

language
string

Возможные значения: [ru-RU, en-US, kk-KZ, ky-KG, uz-UZ]

По умолчанию: RU

Язык распознавания в формате RFC-3066.
Возможные значения: RU (русский), EN (английский), KZ (казахский), UZ (узбекский).

model
string

Модель распознавания речи.
Позволяет выбрать специализированную модель для конкретного сценария использования.
Доступные модели зависят от выбранного языка и конфигурации сервиса.

NormalizationOptions array

Параметры нормализации (составной тип, см. ниже — NormalizationOptions)

enable
boolean

Включение нормализации.
Возможные значения: true и false. Значение по умолчанию — false

profanity_filter
boolean

Фильтр обсценной лексики.
Возможные значения: true и false. Значение по умолчанию соответствует значению NormalizationOptions.enable

punctuation
boolean

Расстановка знаков препинания.
Возможные значения: true и false. Значение по умолчанию соответствует значению NormalizationOptions.enable

capitalization
boolean

Расстановка заглавных букв.
Возможные значения: true и false. Значение по умолчанию соответствует значению NormalizationOptions.enable

question
boolean

Расстановка вопросительных знаков.
Возможные значения: true и false. Значение по умолчанию соответствует значению NormalizationOptions.enable

force_cyrillic
boolean

Принудительный перевод латиницы в кириллицу.
Возможные значения: true и false. Значение по умолчанию — false

Процесс распознавания речи

Клиент передает аудио в составе сообщений RecognitionRequest.audio_chunk типа bytes, которые заполняет чанками (кусочек потокового аудио) бинарного потока аудио, и закрывает со своей стороны соединение на запись, если знает, что поток аудио на этом чанке прерывается.

Размер одного сообщения — не более 4 Мб. Длительность одного чанка — не более 2 секунд.

Пауза между сообщениями не должна превышать 5 секунд. Оптимально, чтобы длина паузы совпадала с длиной следующего чанка. Если такое ограничение не подходит, используйте асинхронное распознавание.

В режиме enable_multi_utterance=false распознавание подаваемого клиентом потока звука продолжается до тех пор, пока сервис распознавания речи не определит конец предложения и не оповестит клиента об этом. Клиенту при этом передается финальный результат распознавания с проставленным флагом eou=true. Далее сервер закрывает соединение, все оставшиеся чанки звука будут проигнорированы.

В режиме enable_multi_utterance=true распознавание речи не останавливается с окончанием очередного предложения, которое будет отмечено в потоке ответов финальной гипотезой с флагом eou=true. После распознавания финальной фразы сервер закрывает соединение со статусом 0.

Заголовки ответа

В качестве заголовка в ответе передаются метаданные. Подробнее о читайте в официальной документации gRPC .

Содержимое ответа

Сервис в ответ асинхронно передает клиенту сообщения RecognitionResponse со следующими параметрами:

Transcription object[]

Массив результатов распознавания

  • Array [
  • eou
    boolean

    Признак окончания распознанного предложения (marks final result for this utterance).
    Если true, то данный результат распознавания можно считать финальным.

    eou_reason
    string

    Причина окончания фразы (what caused the end of this utterance).
    Заполняется только когда eou=true.

    processed_audio_start
    google.protobuf.Duration

    Время начала обработанного фрагмента аудио

    processed_audio_end
    google.protobuf.Duration

    Время окончания обработанного фрагмента аудио

    channel
    int32

    Номер канала в двухканальных аудио.

    Hypothesis object[]

    Список гипотез распознавания

  • Array [
  • text
    string

    Не нормализованный текст

    normalized_text
    string

    Нормализованный текст

    start
    google.protobuf.Duration

    Время начала гипотезы

    end
    google.protobuf.Duration

    Время окончания гипотезы

    WordAlignment object[]

    Выравнивание слов

  • Array [
  • word
    string

    Распознанное слово

    start
    google.protobuf.Duration

    Время начала слова

    end
    google.protobuf.Duration

    Время окончания слова

  • ]
  • ]
  • Emotions object[]

    Результаты анализа эмоций

  • Array [
  • positive
    float

    Позитивная эмоция (общий коэффициент)

    neutral
    float

    Нейтральная эмоция (общий коэффициент)

    negative
    float

    Негативная эмоция (общий коэффициент)

    positive_a
    float

    Позитивная эмоция (акустический анализ)

    neutral_a
    float

    Нейтральная эмоция (акустический анализ)

    negative_a
    float

    Негативная эмоция (акустический анализ)

    positive_t
    float

    Позитивная эмоция (текстовый анализ)

    neutral_t
    float

    Нейтральная эмоция (текстовый анализ)

    negative_t
    float

    Негативная эмоция (текстовый анализ)

  • ]
  • SpeakerInfo object[]

    Информация о спикерах

  • Array [
  • speaker_id
    int32

    Идентификатор спикера

    main_speaker_confidence
    float

    Уверенность что это основной спикер

  • ]
  • ]
  • BackendInfo object[]

    Информация о бэкенде

  • Array [
  • model_name
    string

    Название модели

    model_version
    string

    Версия модели

    server_version
    string

    Версия сервера

  • ]
  • InsightResult object

    Результаты анализа инсайтов

    insight_result
    string

    Текст результата анализа инсайта

    VADResult object

    Результаты детекции активности речи

    channel
    int32

    Номер канала аудио

    processed_audio_time
    duration

    Метка времени обработанного аудио

    utterance_detection_time
    duration

    Время с момента начала произнесения

    Коды ошибок

    Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации .

    Некоторые коды и описание ошибок:

    КодОписание

    3

    INVALID_ARGUMENT

    Клиент неправильно заполнил параметры распознавания речи

    5

    NOT_FOUND

    Не определена модель из запроса

    7

    PERMISSION_DENIED

    Клиенту недоступно API распознавания речи

    8

    RESOURCE_EXHAUSTED: payment required

    Клиент превысил квоту

    8

    RESOURCE_EXHAUSTED

    Слишком много запросов

    13

    INTERNAL

    Ошибка в работе сервиса распознавания речи

    16

    UNAUTHENTICATED

    Клиент не предоставил, либо предоставил истекший/невалидный Access Token в заголовке Authorization

    ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.