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
. Параметры этого сообщения:
csi
;call_features
;csi, call_features
.
Аудиокодек.
Возможные значения смотрите в разделе Доступные форматы аудио
Частота дискретизации.
Зависит от значения audio_encoding
, подробнее читайте в разделе Доступные форматы аудио
Фильтр обсценной лексики.
Возможные значения: true
и false
. Значение по умолчанию — false
Распознавание либо одного, либо нескольких предложений.
Возможные значения: true
и false
. Значение по умолчанию — false
Отправка промежуточных гипотез распознавания речи.
Возможные значения: true
и false
. Значение по умолчанию — false
Количество сообщаемых альтернативных гипотез распознанной речи.
Любое число от 0 до 10. Значение по умолчанию — 1
Интервал ожидания речи пользователя.
Любое число от 2 до 20.
По умолчанию – 7 секунд
Определение максимальной длины высказывания до форсированного EOU.
Любое число от 0,5 до 20.
По умолчанию – 20 секунд
Количество каналов в многоканальном аудио.
Об ограничениях читайте в разделе Доступные форматы аудио
Хинты
Список слов или фраз, распознавание которых мы хотим усилить.
Здесь можно перечислить слова, которые с высокой вероятностью будет произносить пользователь
Модель коротких фраз, улучшающая распознавание отдельных букв и коротких слов.
Возможные значения: true
и false
. Значение по умолчанию — false
Настройка распознавания конца фразы (End of Utterance — eou).
Такое распознавание будет ожидаться после конца фразы столько секунд, сколько установлено в этом параметре.
Возможные значения от 0.5 до 5 секунд. По умолчанию распознавание конца фразы срабатывает после 1 секунды
Параметры разделения спикеров для фрагментов одновременной речи
Включение функции разделения спикеров.
Возможные значения: true
и false
. Значение по умолчанию — false
Возвращение только главного спикера. Главный находится по max(main_speaker_confidence)
.
Возможные значения: true
и false
. Значение по умолчанию — false
Максимальное число спикеров. В текущей реализации распознаются записи с двумя спикерами
Принудительный перевод латиницы в кириллицу.
Возможные значения: true
и false
. Значение по умолчанию — false
Модели SaluteSpeech Insights для анализа удовлетворенности клиентов.
Возможные значения:
Подробнее читайте в разделе Insights модели
VAD (Voice Activation Detection) — обнаружение голосовой активности.
Возможные значения: true
и false
. Значение по умолчанию — false
Параметры нормализации
Включение нормализации.
Возможные значения: true
и false
. Значение по умолчанию — false
Фильтр обсценной лексики.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Расстановка знаков препинания.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Расстановка заглавных букв.
Возможные значения: true
и false
. Значение по умолчанию соответствует значению NormalizationOptions.enable
Расстановка вопросительных знаков.
Возможные значения: 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
со следующими параметрами:
Признак окончания распознанного предложения.
Если true
, то данный результат распознавания можно считать финальным.
Если false
, то возможно уточнение распознавания в следующих сообщениях
Список гипотез распознавания речи.
Гипотезы отсортированы по убыванию вероятности
Не нормализованный результат распознавания (например, сто двадцать три
)
Нормализованный результат распознавания (например, 123
)
Время от начала аудиозаписи до начала данной гипотезы в ней
Время от начала аудиозаписи до конца данной гипотезы в ней
Список эмоций ответа пользователя.
Значения эмоционального окраса ответа пользователя приходят в виде коэффициентов в диапазоне от 0 до 1, где 1 — наиболее вероятная эмоция ответа, а 0 — наименее вероятная.
Значения заполняются только, если eou=true
Позитивный оттенок ответа пользователя
Нейтральный оттенок ответа пользователя
Негативный оттенок ответа пользователя
Информация об использованных версиях модели и сервера
Наименование модели, использованной для распознавания
Версия модели, использованной для распознавания
Версия сервера, использованного для распознавания
Время начала обработанного фрагмента аудио
Время окончания обработанного фрагмента аудио
Информация о разделении спикеров
Идентификатор результата распознавания.
У результата с обоими спикерами он всегда -1
Маркер главного спикера.
Может принимать значения от 0 до 1. Наибольшее значение обозначает главного спикера
Коды ошибок
Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации.
Некоторые коды и описание ошибок:
Код | Описание |
---|---|
|
Клиент неправильно заполнил параметры распознавания речи |
|
Не определена модель из запроса |
|
Клиенту недоступно API распознавания речи |
|
Клиент превысил квоту |
|
Слишком много запросов |
|
Ошибка в работе сервиса распознавания речи |
|
Клиент не предоставил, либо предоставил истекший/невалидный |