Голосовой ввод

Что это
Страница, на которой медсестра может надиктовать запись в журнал голосом. Система:
- Преобразует голос в текст.
- Распознаёт, что именно сказано (кабинет / журнал / данные).
- Показывает черновик — «понял так?».
- После подтверждения записывает в соответствующий журнал.
Это сокращает заполнение журналов с 5–8 кликов до «нажал → сказал → подтвердил».
Кому полезно
- При обходе кабинетов с телефоном/планшетом — руки заняты, мышью не покликать. См. Обход кабинетов.
- При большом количестве однотипных записей — быстрее, чем заполнять формы.
- Сотрудникам, которым удобнее «надиктовать», чем тыкать в форму.
Как открыть
Сайдбар → Голосовой ввод.
Видна всем, у кого есть право VoiceInputPage.viewAny (по умолчанию — все медсёстры).
Как пользоваться
- На странице — большая круглая кнопка с микрофоном.
- Нажмите на неё — браузер попросит разрешение на микрофон, дайте.
- Кнопка станет красной и начнёт пульсировать — это значит, система слушает.
- Диктуйте в свободной форме, например:
«В первом кабинете утром температура 22 градуса, влажность 55».
- Распознанный текст появляется в поле под кнопкой — можно поправить руками опечатки.
- Нажмите «Распознать команду» — система покажет черновик карточки:
- какой кабинет;
- какой журнал;
- какие данные;
- уверенность распознавания (в процентах).
- «✓ Верно, записать» — запись создаётся в соответствующем журнале.
- «✗ Передиктовать» — черновик отменяется, можно начать заново.
Поддерживаемые журналы
На текущий момент:
- ✓ Температура и влажность
- ✓ Текущие уборки — включая дезсредства
- ✓ УФ-обеззараживание
Остальные журналы — на голосовом вводе пока не поддерживаются (расширение по мере необходимости).
Что распознаётся в каждом журнале
Температура и влажность
«В кабинете номер один утром температура помещения 22 градуса, сухого 21, влажного 18, влажность 55».
Распознаётся:
- кабинет;
- утро/вечер;
- 4 числовых значения.
Текущие уборки
«В первом кабинете уборка протиранием в восемь утра алмадезом». «В кабинете номер один утром орошение алмадезом 1 процент». «В кабинете номер один утром орошение трилоксом-спреем».
Распознаётся:
- кабинет;
- тип уборки (Типы уборок);
- время;
- дезсредство (Дезсредства) — если назван только бренд («алмадезом») без концентрации, система предложит все варианты этого бренда и предупредит уточнить.
УФ-обеззараживание
«В первом кабинете УФ-лампу включили в девять утра, выключили в десять, в присутствии людей, обработка воздуха». «В кабинете номер один УФ-сеанс с 14:00 до 14:30, без людей, поверхность».
Распознаётся:
- кабинет;
- время вкл/выкл (длительность вычисляется автоматически);
- условия обеззараживания (
in-presence/in-absence); - объект (
air/surface); - режим (если назван).
Технически — два движка распознавания речи
Под капотом — два разных способа превращения голоса в текст:
-
Web Speech API в браузере (Google) — по умолчанию. Работает в Chrome / Edge / Yandex.
- Плюсы: бесплатно, аудио не уходит на сервер.
- Минусы: не работает в Safari / iPad.
- Что вы увидите: внизу страницы метка «Движок: браузер (Web Speech API)».
-
SaluteSpeech от СБЕР — fallback на серверное распознавание.
- Включается автоматически, если браузер не поддерживает Web Speech API.
- Или вручную: при ошибке «not-allowed» появится кнопка «Использовать серверное распознавание».
- Плюсы: работает в Safari и через MAX-бот (когда подключим).
- Минусы: аудио идёт на сервер; задержка пара секунд.
После распознавания текст обрабатывается через GigaChat (Russian LLM от СБЕР), который превращает свободную речь в структурированную запись.
Если микрофон не работает
Самая частая ошибка — браузер не получил разрешения.
В Chrome / Edge:
- В адресной строке слева — значок 🔒 → «Настройки сайта».
- Микрофон → Разрешить.
- Перезагрузить страницу.
На macOS:
- Системные настройки → Конфиденциальность и безопасность → Микрофон.
- Включите галку для Chrome / Edge / Yandex.
- Перезагрузите браузер и страницу.
После этого Chrome должен спросить «Разрешить доступ к микрофону?» — нажмите «Разрешить».
Если всё равно не работает — нажмите «Использовать серверное распознавание» на странице. Тогда страница начнёт записывать аудио через MediaRecorder и слать на сервер в SaluteSpeech (тоже нужен микрофон, но иногда работает там, где Web Speech блокируется политикой Chrome).
Что записывается
Каждая команда сохраняется как черновик в таблице voice_drafts. Это нужно для:
- возможности вернуться к черновику, если случайно закрыли окно;
- разбора ошибок парсинга;
- понимания, какие команды дают плохой результат.
Если LLM «галлюцинирует» (придумает несуществующий кабинет) — система это поймает: после парсинга проверяет cabinet_id с реальной таблицей и поля с реальной схемой журнала. Если что-то не сошлось — уверенность падает, в UI пометка «требует проверки».
Связанные документы
- Голосовой ввод (бэклог) — техническое описание архитектуры.
- Версия 1.6.0 (когда выйдет) — что вошло в первый релиз голоса.
Что важно
- Всегда проверяйте черновик перед нажатием «✓ Верно, записать». Голосовой ввод — это удобство, но за корректность данных отвечает медсестра.
- Голос не отменяет ЭЦП. Запись создаётся, но ЭЦП подписывается отдельно — кликом по кнопке «Подписать ЭЦП» на странице записи.
- При обходе кабинетов — это самый удобный способ. Открыли страницу обхода → перешли в нужный журнал → диктуете прямо на месте.