[backend][B] STT в РФ-контуре для пилота: SaluteSpeech + запрет зарубежного STT вне демо #121
Notifications
Due Date
No due date set.
Blocks
Depends on
#115 [epic] Грант ВШЭ и пилот «Династия»: голосовой ввод + сад (геймификация)
MedITron/PTSRaiAgent
Reference: MedITron/PTSRaiAgent#121
Reference in New Issue
Block a user
Описание
Часть эпика «Демо к гранту ВШЭ и пилоту „Династия“». STT через OpenRouter допустим только на синтетике (ADR-014). Для пилота с реальными пациентами голос должен обрабатываться в РФ-контуре (152-ФЗ, ст. 12 и ст. 18 ч. 5). Это же стоит в бюджете стипендии: «LLM API и распознавание речи — 30 тыс.».
Образец — vobot:
agent/stt/salute_stt.py(SaluteSpeech, gRPC и protobuf-стабы вagent/stt/salute/) иagent/stt/yandex_stt.py. Для дневника потоковое распознавание не нужно, достаточно синхронного или асинхронного распознавания файла (REST SaluteSpeech).Желаемый результат
SaluteSTTреализует тот же протоколSpeechToText(app/llm/stt.py), выбирается черезSTT_PROVIDER=salute.SALUTE_SPEECH_CREDENTIALSи scope хранятся в.env. OAuth-токен кешируется по образцу GigaChat вapp/llm/giga.py.STT_PROVIDER=openrouterзапрещён приDEMO_CLOCK=false/ прод-флаге: приложение не стартует с понятной ошибкой.Подзадачи
SaluteSTT(REST, WAV 16 кГц).env.exampleАнализ
Ограничения и риски
Нужен договор и ключ SaluteSpeech (Сбер) до 01.02.2027. Ключ выдаёт человек, не агент.
Как проверить
STT_PROVIDER=salute→ запись в web → расшифровка.make lint test.Лог
2026-10-31
Код готов — PR #127, ADR-016. SaluteSpeech через синхронный REST (без gRPC), токен кешируется, TLS с
SALUTE_SPEECH_CA. Guard:openrouterприDEMO_CLOCK=falseне даёт стартовать;autoвне демо без кредов выключает голос.Осталось (нужен человек): договор и ключ SaluteSpeech →
SALUTE_SPEECH_CREDENTIALSв.env, сертификат Минцифры →SALUTE_SPEECH_CA; затем живая проверка «запись в web → расшифровка» и закрытие задачи.