Whisper, GigaAM или API: как я выбирал модель распознавания

Недавно писал, что прохожу стажировку в команде, которая делает Telegram-бота для учёта личных финансов. Работаю там как Backend-разработчик и ML-инженер. Хочу рассказать чуть подробнее про одну конкретную задачу оттуда, возможно, кому-то будет полезно или просто интересно.

Разрабатываю Telegram-бота FinMate для учёта личных финансов (aiogram 3.x, Python). Одна из задач это распознавание речи: пользователь голосом диктует трату, бот должен превратить это в текст и извлечь сумму/категорию.

Стал сравнивать Whisper и GigaAM-v3, смотрел на точность распознавания, например в метро, требования к ресурсам (RAM/GPU) и скорость инференса. На бумаге GigaAM выглядел лучше, был обучен именно под русский язык. Но при более глубоком сравнении оказалось, что для MVP-масштаба это избыточное решение: свои модели нужно где-то хостить, а это аренда сервера, фиксированные расходы независимо от того, сколько реально людей пользуется сервисом. В итоге мы с командой выбрали Yandex SpeechKit: оплата по факту использования (за токены/запросы), без затрат на инфраструктуру, логично для этапа, когда пользователей ещё немного и нагрузка непредсказуема.

Для меня это стало наглядным уроком: локальная модель, даже более продвинутая или заточенная под конкретный язык, не всегда лучше готового решения через API.

Кроме этого, в проекте: асинхронная архитектура на httpx, работа с Yandex Vision API для распознавания чеков, аутентификация через X-Service-Key.

Кстати, всё ещё в поиске первой коммерческой позиции Backend/ML