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

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

Обновлено 19 февраля 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)

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

    sample_rate
    int32

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

    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
    array (составной тип, см. ниже — Hints)

    Хинты

    Hints.words
    repeated string

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

    Hints.enable_letters
    boolean

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

    Hints.eou_timeout
    Duration

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

    SpeakerSeparationOptions
    array (составной тип, см. ниже — SpeakerSeparationOptions)

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

    SpeakerSeparationOptions.enable
    boolean

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

    SpeakerSeparationOptions.enable_only_main_speaker
    boolean

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

    SpeakerSeparationOptions.count
    int32

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

    force_cyrillic
    boolean

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

    insight_models
    repeated string

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

    • csi;
    • call_features;
    • csi, call_features.

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

    enable_vad
    boolean

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

    NormalizationOptions
    array (составной тип, см. ниже — NormalizationOptions)

    Параметры нормализации

    NormalizationOptions.enable
    boolean

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

    NormalizationOptions.profanity_filter
    boolean

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

    NormalizationOptions.punctuation
    boolean

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

    NormalizationOptions.capitalization
    boolean

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

    NormalizationOptions.question
    boolean

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

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

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

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

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

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

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

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

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

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

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

    eou
    boolean

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

    results
    array (составной тип, см. ниже — Hypothesis)

    Список гипотез распознавания речи.
    Гипотезы отсортированы по убыванию вероятности

    Hypothesis.text
    string

    Не нормализованный результат распознавания (например, сто двадцать три)

    Hypothesis.normalized_text
    string

    Нормализованный результат распознавания (например, 123)

    Hypothesis.start
    google.protobuf.Duration

    Время от начала аудиозаписи до начала данной гипотезы в ней

    Hypothesis.end
    google.protobuf.Duration

    Время от начала аудиозаписи до конца данной гипотезы в ней

    emotions_result
    array (составной тип, см. ниже — Emotions)

    Список эмоций ответа пользователя.
    Значения эмоционального окраса ответа пользователя приходят в виде коэффициентов в диапазоне от 0 до 1, где 1 — наиболее вероятная эмоция ответа, а 0 — наименее вероятная.
    Значения заполняются только, если eou=true

    Emotions.positive
    float

    Позитивный оттенок ответа пользователя

    Emotions.neutral
    float

    Нейтральный оттенок ответа пользователя

    Emotions.negative
    float

    Негативный оттенок ответа пользователя

    backend_info
    array (составной тип, см. ниже — BackendInfo)

    Информация об использованных версиях модели и сервера

    BackendInfo.model_name
    string

    Наименование модели, использованной для распознавания

    BackendInfo.model_version
    string

    Версия модели, использованной для распознавания

    BackendInfo.server_version
    string

    Версия сервера, использованного для распознавания

    processed_audio_start
    google.protobuf.Duration

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

    processed_audio_end
    google.protobuf.Duration

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

    SpeakerInfo
    array (составной тип, см. ниже — SpeakerInfo)

    Информация о разделении спикеров

    SpeakerInfo.speaker_id
    int32

    Идентификатор результата распознавания.
    У результата с обоими спикерами он всегда -1

    SpeakerInfo.main_speaker_confidence
    float

    Маркер главного спикера.
    Может принимать значения от 0 до 1. Наибольшее значение обозначает главного спикера

Коды ошибок

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