API потокового распознавания речи (gRPC)
Используется, если требуется распознавать речь в процессе ее записи, например, протоколы телефонии или запись аудио на мобильном устройстве.
Возможно отображение промежуточных результатов и автоматическое определение конца фразы.
Максимальный размер аудио – 1 Гб. Для многоканального аудио распознается только первый канал.
Запросы на распознавание передаются на адрес:
smartspeech.sber.ru
Заголовки запросов и ответов для всех шагов одинаковы:
Заголовки запроса
Заголовки ответа
Создание приложения
Для работы с сервисом распознавания речи SaluteSpeech вам необходимо создать клиентское приложение. Вы можете использовать любой язык программирования, который есть в библиотеке для работы с gRPC.
При написании приложения используйте proto-файл.
Подробную инструкцию по написанию клиентских приложений для gRPC с примерами вы найдете в официальной документации gRPC (английский язык).
Передача параметров распознавания
При обращении по gRPC-протоколу с запросом распознавания речи клиентское приложение использует метод Recognize
. В первом сообщении клиент должен отправить опции распознавания в сообщении типа RecognitionOptions
. Параметры этого сообщения:
Процесс распознавания речи
Клиент передает аудио в составе сообщений RecognitionRequest.audio_chunk
типа bytes
, которые заполняет чанками (кусочек потокового аудио) бинарного потока аудио, и закрывает со своей стороны соединение на запись, если знает, что поток аудио на этом чанке прерывается.
Размер одного сообщения — не более 4 Мб. Длительность одного чанка — не более 2 секунд.
Пауза между сообщениями не должна превышать 5 секунд. Оптимально, чтобы длина паузы совпадала с длиной следующего чанка. Если такое ограничение не подходит, используйте асинхронное распознавание.
В режиме enable_multi_utterance=false
распознавание подаваемого клиентом потока звука продолжается до тех пор, пока сервис распознавания речи не определит конец предложения и не оповестит клиента об этом. Клиенту при этом передается финальный результат распознавания с проставленным флагом eou=true
. Далее сервер закрывает соединение, все оставшиеся чанки звука будут проигнорированы.
В режиме enable_multi_utterance=true
распознавание речи не останавливается с окончанием очередного предложения, которое будет отмечено в потоке ответов финальной гипотезой с флагом eou=true
. После распознавания финальной фразы сервер закрывает соединение со статусом 0.
Заголовки ответа
В качестве заголовка в ответе передаются метаданные. Подробнее о читайте в официальной документации gRPC.
Содержимое ответа
Сервис в ответ асинхронно передает клиенту сообщения RecognitionResponse
со следующими параметрами:
Коды ошибок
Сервис SaluteSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации.
Некоторые коды и описание ошибок:
Код | Описание |
---|---|
|
Клиент неправильно заполнил параметры распознавания речи |
|
Клиенту недоступно API распознавания речи |
|
Клиент превысил квоту на распознавание речи |
|
Ошибка в работе сервиса распознавания речи |
|
Клиент не предоставил, либо предоставил истекший/невалидный |