API потокового распознавания двух каналов (gRPC v2)
Используется, если требуется распознавать речь в процессе ее записи, например, протоколы телефонии или запись аудио на мобильном устройстве.
Возможно отображение промежуточных результатов и автоматическое определение конца фразы.
Максимальный размер аудио – 1 Гб.
Запросы на распознавание передаются на адрес:
smartspeech.sber.ru
Заголовки запросов и ответов для всех шагов одинаковы:
Заголовки запроса
Информация об аутентификации с помощью Access Token, переданная через OAuth 2.0 .
Пример: Bearer eyJhbGciOi.cCI6IkpXVCJ9.eyJzd.1hcnRzcG.KUkw
Заголовки ответа
Уникальный идентификатор запроса, генерируемый сервером. 36 символов.
Пример: 22345200-abe8-4f60-90c8-0d43c5f6c0f6
Создание приложения
Для работы с сервисом распознавания речи SaluteSpeech вам необходимо создать клиентское приложение. Вы можете использовать любой язык программирования, который есть в библиотеке для работы с gRPC.
При написании приложения используйте proto-файл.
Подробную инструкцию по написанию клиентских приложений для gRPC с примерами вы найдете в официальной документации gRPC (английский язык).
Передача параметров распознавания
При обращении по gRPC-протоколу с запросом распознавания речи клиентское приложение использует метод Recognize
. В первом сообщении клиент должен отправить опции распознавания в сообщении типа RecognitionOptions
. Параметры этого сообщения:
Аудиокодек.
Возможные значения смотрите в разделе Доступные форматы аудио
Частота дискретизации.
Зависит от значения audio_encoding
, подробнее читайте в разделе Доступные форматы аудио
Распознавание либо одного, либо нескольких предложений.
Возможные значения: true
и false
. Значение по умолчанию — false
Отправка промежуточных гипотез распознавания речи.
Возможные значения: true
и false
. Значение по умолчанию — false
Количество сообщаемых альтернативных гипотез распознанной речи.
Любое число от 0 до 10. Значение по умолчанию — 1
Интервал ожидания речи пользователя.
Любое число от 2 до 20.
По умолчанию – 7 секунд
Определение максимальной длины высказывания до форсированного EOU.
Любое число от 0,5 до 20.
По умолчанию – 20 секунд
Количество каналов в многоканальном аудио.
Об ограничениях читайте в разделе Доступные форматы аудио
Hints array
Хинты (составной тип, см. ниже — Hints)
Список слов или фраз, распознавание которых мы хотим усилить.
Здесь можно перечислить слова, которые с высокой вероятностью будет произносить пользователь
Модель коротких фраз, улучшающая распознавание отдельных букв и коротких слов.
Возможные значения: true
и false
. Значение по умолчанию — false
Настройка распознавания конца фразы (End of Utterance — eou).
Такое распознавание будет ожидаться после конца фразы столько секунд, сколько установлено в этом параметре.
Возможные значения от 0.5 до 5 секунд. По умолчанию распознавание конца фразы срабатывает после 1 секунды
SpeakerSeparationOptions array
Параметры разделения спикеров для фрагментов одновременной речи.
Включение функции разделения спикеров.
Возможные значения: true
и false
. Значение по умолчанию — false
Возвращение только главного спикера. Главный находится по max(main_speaker_confidence)
.
Возможные зна чения: true
и false
. Значение по умолчанию — false
Ожидаемое количество спикеров. Определяет, на сколько голосов разделять аудиопоток.
Модели SaluteSpeech Insights для анализа удовлетворенности клиентов.
Возможные значения:
csi
;call_features
;is_solved
;csi, call_features, is_solved
.
Подробнее читайте в разделе Insights модели.
VAD (Voice Activation Detection) — обнаружение голосовой активности.
Возможные значения: true
и false
. Значение по умолчанию — false
Возможные значения: [ru-RU
, en-US
, kk-KZ
, ky-KG
, uz-UZ
]
По умолчанию: RU
Язык распознавания в формате RFC-3066.
Возможные значения: RU
(русский), EN
(английский), KZ
(казахский), UZ
(узбекский).
Модель распознавания речи.
Позволяет выбрать специализированную модель для конкретного сценария использования.
Доступные модели зависят от выбранного языка и конфигурации сервиса.
NormalizationOptions array
Параметры нормализации (составной тип, см. ниже — NormalizationOptions)
Включение нормализации.
Возможные значения: true
и false
. Значение по умолчанию — false
Фильтр обсценной лексики.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Расстановка знаков препинания.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Расстановка заглавных букв.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Расстановка вопросительных знаков.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Принудительный перевод латиницы в кириллицу.
Возможные значения: 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[]
Массив результатов распознавания
Признак окончания распознанного предложения (marks final result for this utterance).
Если true
, то данный результат распознавания можно считать финальным.
Причина окончания фразы (what caused the end of this utterance).
Заполняется только когда eou=true
.
Время начала обработанного фрагмента аудио
Время окончания обработанного фрагмента аудио
Номер канала в двухканальных аудио.
Hypothesis object[]
Список гипотез распознавания
Не нормализованный текст
Нормализованный текст
Время начала гипотезы
Время окончания гипотезы
WordAlignment object[]
Выравнивание слов
Распознанное слово
Время начала слова
Время окончания слова
Emotions object[]
Результаты анализа эмоций
Позитивная эмоция (общий коэффициент)
Нейтральная эмоция (общий коэффициент)
Негативная эмоция (общий коэффициент)
Позитивная эмо ция (акустический анализ)
Нейтральная эмоция (акустический анализ)
Негативная эмоция (акустический анализ)
Позитивная эмоция (текстовый анализ)
Нейтральная эмоция (текстовый анализ)
Негативная эмоция (текстовый анализ)
SpeakerInfo object[]
Информация о спикерах
Идентификатор спикера
Уверенность что это основной спикер
BackendInfo object[]
Информация о бэкенде
Название модели
Версия модели
Версия сервера
InsightResult object
Результаты анализа инсайтов
Текст результата анализа инсайта
VADResult object
Результаты детекции активности речи
Номер канала аудио
Метка времени обработанного аудио
Время с момента начала произнесения
Коды ошибок
Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации .
Некоторые коды и описание ошибок:
Код | Описание |
---|---|
|
Клиент неправильно заполнил параметры распознавания речи |
|
Не определена модель из запроса |
|
Клиенту недоступно API распознавания речи |
|
Клиент превысил квоту |
|
Слишком много запросов |
|
Ошибка в работе сервиса распознавания речи |
|
Клиент не предоставил, либо предоставил истекший/невалидный |