Потоковое распознавание (gRPC)
Используется, если требуется распознавание речи в процессе ее записи: протоколы телефонии, запись аудио на мобильных устройствах и прочее. Возможно отображение промежуточных результатов и автоматическое определение конца фразы.
Максимальный размер аудио – 1 Гб. Для многоканального аудио распознается только первый канал.
Запросы на распознавание передаются на адрес:
smartspeech.sber.ru
Создание приложения
Для работы с сервисом распознавания речи SmartSpeech вам необходимо создать клиентское приложение. Вы можете использовать любой язык программирования, который есть в библиотеке для работы с gRPC.
При написании приложения используйте proto-файл из архива.
Подробную инструкцию по написанию клиентских приложений для gRPC с примерами вы найдете в официальной документации gRPC (английский язык).
Передача параметров распознавания
При обращении по gRPC-протоколу с запросом распознавания речи клиентское приложение использует метод Recognize. В первом сообщении клиент должен отправить опции распознавания в сообщении типа RecognitionOptions. Параметры этого сообщения описаны ниже в таблице.
Параметр | Описание |
---|---|
|
Аудиокодек Возможные значения смотрите в разделе Доступные кодировки аудио |
|
Частота дискретизации Зависит от значения |
|
Международный код языка для распознавания речи На данный момент поддерживается только русский язык — ru-RU |
|
Фильтр обсценной лексики
|
|
Распознавание либо одного, либо нескольких предложений
|
|
Отправка промежуточных гипотез распознавания речи
|
|
Количество сообщаемых альтернативных гипотез распознанной речи Любое число больше нуля и до 10, по умолчанию 1 |
|
Имя акустической модели для распознавания речи Подробнее читайте в разделе Акустические модели |
|
Интервал ожидания речи пользователя Возможные значения от 2 до 20 секунд. По умолчанию – 7 секунд |
|
Определение максимальной длины высказывания до форсированного EOU Возможные значения – от 0,5 до 20 секунд. По умолчанию – 20 секунд |
|
Количество каналов в многоканальном аудио. Об ограничениях читайте в разделе Доступные кодировки аудио |
| Hints — составной тип, описан ниже |
|
Список слов или фраз, распознавание которых мы хотим усилить. Здесь можно перечислить слова, которые с высокой вероятностью будет произносить пользователь |
|
Модель коротких фраз, улучшающая распознавание отдельных букв и коротких слов
|
|
Настройка распознавания конца фразы (End of Utterance — eou). Такое распознавание будет ожидаться после конца фразы столько секунд, сколько установлено в этом параметре Возможные значения от 0.5 до 5 секунд. По умолчанию распознавание конца фразы срабатывает после 1 секунды |
Процесс распознавания речи
Клиент передает аудио в составе сообщений RecognitionRequest.audio_chunk типа bytes, которые заполняет чанками (кусочек потокового аудио) бинарного потока аудио, и закрывает со своей стороны соединение на запись, если знает, что поток аудио на этом чанке прерывается.
note
Размер одного сообщения — не более 4 Мб. Длительность одного чанка — не более 2 секунд.
note
Пауза между сообщениями не должна превышать 5 секунд. Оптимально, чтобы длина паузы совпадала с длиной следующего чанка. Если такое ограничение не подходит, используйте асинхронное распознавание.
Сервис в ответ асинхронно передает клиенту сообщения RecognitionResponse, содержимое которых описано ниже.
Поле | Описание |
---|---|
|
Признак окончания распознанного предложения. Если true, то данный результат распознавания можно считать финальным. Если false, то возможно уточнение распознавания в следующих сообщениях
|
|
Список гипотез распознавания речи Гипотезы отсортированы по убыванию вероятности |
|
Не нормализованный результат распознавания (например, "сто двадцать три") |
|
Нормализованный результат распознавания (например, "123") |
|
Время от начала аудио-записи до начала данной гипотезы в ней |
|
Время от начала аудио-записи до конца данной гипотезы в ней |
|
Список эмоций ответа пользователя Значения эмоционального окраса ответа пользователя приходят в виде коэффициентов в диапазоне от 0 до 1, где 1 — наиболее вероятная эмоция ответа, а 0 — наименее вероятная. Значения заполняются только, если |
|
Позитивный оттенок ответа пользователя |
|
Нейтральный оттенок ответа пользователя |
|
Негативный оттенок ответа пользователя |
|
Информация об использованных версиях модели и сервера |
|
Наименование модели, использованной для распознавания |
|
Версия модели, использованной для распознавания |
|
Версия сервера, использованного для распознавания |
|
Время начала обработанного фрагмента аудио |
|
Время окончания обработанного фрагмента аудио |
В режиме enable_multi_utterance=false распознавание подаваемого клиентом потока звука продолжается до тех пор, пока сервис распознавания речи не определит конец предложения и не оповестит клиента об этом. Клиенту при этом передается финальный результат распознавания с проставленным флагом eou=true. Далее сервер закрывает соединение, все оставшиеся чанки звука будут проигнорированы.
В режиме enable_multi_utterance=true распознавание речи не останавливается с окончанием очередного предложения, которое будет отмечено в потоке ответов финальной гипотезой с флагом eou=true. После распознавания финальной фразы сервер закрывает соединение со статусом 0.
Сообщения об ошибках
Сервис SmartSpeech сообщает об ошибках стандартными gRPC-статусами, про которые можно подробно прочесть в официальной документации. Ниже в таблице приведены некоторые коды и описание ошибок.
Код | Описание |
---|---|
|
Клиент неправильно заполнил параметры распознавания речи |
|
Клиенту недоступно API распознавания речи |
|
Клиент превысил квоту на распознавание речи |
|
Ошибка в работе сервиса распознавания речи |
|
Клиент не предоставил, либо предоставил истекший/невалидный Access Token в заголовке Authorization |
Для каждого из сообщений подробное описание произошедшей ошибки указывается в поле message
.
Заметили ошибку?
Выделите текст и нажмите Ctrl
+ Enter
, чтобы сообщить нам о ней