API потокового распознавания речи (gRPC)
Этот протокол больше не поддерживается. Рекомендуем использовать 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
, подробнее читайте в разделе Доступные форматы аудио
Язык для распознавания речи.
Возможные значения:
ru-RU
— русский. Значение по умолчанию.en-US
— английский.kk-KZ
— казахский. Доступно по отдельной заявке, напишите на почту SaluteSpeech@sberbank.ru
Фильтр обсценной лексики.
Возможные значения: true
и false
. Значение по умолчанию — false
Распознавание либо одного, либо нескольких предложений.
Возможные значения: true
и false
. Значение по умолчанию — false
Отправка промежуточных гипотез распознавания речи.
Возможные значения: true
и false
. Значение по умолчанию — false
Количество сообщаемых альтернативных гипотез распознанной речи.
Любое число от 0 до 10. Значение по умолчанию — 1
Интервал ожидания речи пользователя.
Любое число от 2 до 20.
По умолчанию – 7 секунд
Определение максимальной длины высказывания до форсированного EOU.
Любое число от 0,5 до 20.
По умолчанию – 20 секунд
Количество каналов в многоканальном аудио.
Об ограничениях читайте в разделе Доступные форматы аудио
Hints object
Хинты (составной тип, см. ниже — Hints)
Список слов или фраз, распознавание которых мы хотим усилить.
Здесь можно перечислить слова, которые с высокой вероятностью будет произносить пользователь
Модель коротких фраз, улучшающая распознавание отдельных букв и коротких слов.
Возможные значения: true
и false
. Значение по умолчанию — false
Настройка распознавания конца фразы (End of Utterance — eou).
Такое распознавание будет ожидаться после конца фразы столько секунд, сколько установлено в этом параметре.
Возможные значения от 0.5 до 5 секунд. По умолчанию распознавание конца фразы срабатывает после 1 секунды
SpeakerSeparationOptions object
Параметры разделения спикеров для фрагментов одновременной речи.
Включение функции разделения спикеров.
Возможные значения: true
и false
. Значение по умолчанию — false
Возвращение только главного спикера. Главный находится по max(main_speaker_confidence)
.
Возможные значения: true
и false
. Значение по умолчанию — false
Максимальное число спикеров. В текущей реализации распознаются записи с двумя спикерами.
Контракт взаимодействия описан в 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[]
Массив результатов распознавания
Признак окончания распознанного предложения (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
Результаты детекции активности речи
Номер канала аудио
Метка времени обработанного аудио
Время с момента начала произнесения
Контракт взаимодействия описан в proto-файле.
Коды ошибок
Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации .
Некоторые коды и описание ошибок:
Код | Описание |
---|---|
|
Клиент неправильно заполнил параметры распознавания речи |
|
Не определена модель из запроса |
|
Клиенту недоступно API распознавания речи |
|
Клиент превысил квоту |
|
Слишком много запросов |
|
Ошибка в работе сервиса распознавания речи |
|
Клиент не предоставил, либо предоставил истекший/невалидный |