[web] Голосовой ввод в чате: запись → проверка распознанного текста → отправка #117
Notifications
Due Date
No due date set.
Blocks
Depends on
#115 [epic] Грант ВШЭ и пилот «Династия»: голосовой ввод + сад (геймификация)
MedITron/PTSRaiAgent
Reference: MedITron/PTSRaiAgent#117
Reference in New Issue
Block a user
Описание
Часть эпика «Демо к гранту ВШЭ и пилоту „Династия“». UI голосового ввода по слайду 11: 1 Записать → 2 Проверить → отправить. Зависит от backend-ручки
/me/{token}/stt.Желаемый результат
FreeTextвweb/src/screens/Flow.tsx, чат и шаги дневника) появляется кнопка микрофона. Показывается только приcapabilities.voice_input.00:24и кнопка «Остановить запись», как на макете слайда 11. Лимит 60 с, затем автостоп.getUserMedia→ AudioContext/AudioWorklet → ресемплинг → WAV. Должно работать в Chrome, Android и iOS Safari.web/src/content/ru.ts.Подзадачи
web/src/voice/recorder.ts: запись, ресемплинг, WAV-энкодер, лимитweb/src/components/VoiceButton.tsx: состояния idle, recording, transcribing, errorweb/src/api/client.ts:transcribe(token, blob)FreeText(Flow.tsx)ru.tsАнализ
Ограничения и риски
getUserMediaработает только в secure context (https или localhost). Для демо на сервере нужен https, проверить nginx вweb/nginx.conf.Как проверить
make up→ вход Андреем → чат → микрофон → сказать фразу → текст в поле → исправить → отправить → ответ агента. Проверить на телефоне в Safari.2026-10-31
recorder.ts(WAV 16 кГц в браузере),VoiceInputв чате и шагах со свободным текстом, nginx 4 МБ. PR #124.