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

API потокового распознавания речи (gRPC)

Обновлено 19 февраля 2025

Этот протокол больше не поддерживается. Рекомендуем использовать API потокового распознавания двух каналов (gRPC v2).

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

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

Максимальный размер аудио – 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)

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

sample_rate
int32

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

language
string

Язык для распознавания речи.
Возможные значения:

  • ru-RU — русский. Значение по умолчанию.
  • en-US — английский.
  • kk-KZ — казахский. Доступно по отдельной заявке, напишите на почту SaluteSpeech@sberbank.ru
enable_profanity_filter
boolean

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

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 object

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

words
repeated string

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

enable_letters
boolean

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

eou_timeout
Duration

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

SpeakerSeparationOptions object

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

enable
boolean

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

enable_only_main_speaker
boolean

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

count
int32

Максимальное число спикеров. В текущей реализации распознаются записи с двумя спикерами.

Контракт взаимодействия описан в proto-файле.

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

Клиент передает аудио в составе сообщений 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

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

    Контракт взаимодействия описан в proto-файле.

    Коды ошибок

    Сервис 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 в настройках своего браузера.