Что мы на нём делаем
Whisper превращает поле формы в то, что можно заполнить голосом, а не с клавиатуры. Мы подключаем его двумя разными способами — в зависимости от того, где живёт поле ввода.
За веб-фронтендом аудио записывается в браузере, отправляется на эндпоинт транскрипции на существующем бэкенде, и текст возвращается в то же поле, для которого его записали. Внутри Flutter-приложения мы встраиваем Whisper прямо в бинарник — сборку на GGML, работающую через FFI, — так что транскрипция происходит на устройстве: без загрузки на сервер, без похода по сети и обратно, и это продолжает работать вообще без связи.
Где мы его применили
Formtastic — первый проект, где это появилось. Его веб-приложение обращается к новому эндпоинту транскрипции на существующем бэкенде Django, а не к отдельному сервису, — Django и так уже отвечает за аутентификацию и хранение в рамках запроса. Его приложения на Flutter несут модель при себе, так что заполнить форму без сигнала можно ровно так же, как и по Wi-Fi.
Когда мы его рекомендуем
Whisper стоит применять там, где в форме есть длинные поля свободного текста — заметки, отчёты, открытые ответы, — которые долго набирать на телефоне и естественно проговорить вслух.
Какая именно интеграция подходит, зависит от клиента. Веб-приложению, у которого уже есть бэкенд, мало смысла тащить веса модели в браузер, поэтому серверный эндпоинт — меньшее изменение. Мобильному приложению вариант с моделью на устройстве оправдан именно тогда, когда оно должно работать офлайн или когда отправлять аудио с устройства нельзя. Плата за это — больший размер приложения и вычисления на самом устройстве, а взамен — никакой зависимости от сети и ничего, что покидало бы устройство.
