Не пиши голосовое! — мобильное приложение с локальным распознаванием речи
Пуртов Роман · 22 апреля 2026
Roman Purtov · April 22, 2026
За два дня собрал и выпустил в RuStore Android-приложение «Не пиши голосовое!». Наговорил в микрофон, получил расшифровку. Всё прямо на телефоне: ни облака, ни аккаунта, ни интернета. Голосовые часто содержат чувствительные вещи, и отправлять их на чужие серверы — так себе идея. Стек такой: Expo SDK 54, React Native 0.81 с New Architecture, запись в 16 kHz mono WAV через @siteed/audio-studio, движок sherpa-onnx, модель GigaAM v3 от Сбера (NeMo CTC, INT8). На русском она в 2,5 раза точнее Whisper-large-v3. Модель скачивается один раз, весит около 320 мб, дальше работает офлайн. Длинные записи режу на чанки, всё короче 250 мс отбрасываю как шум. Интерфейс минимальный: один главный экран со списком заметок и плавающей кнопкой записи. Волнограмма отрисовывается в реальном времени, пульсация и свечение играют в такт громкости, свайп влево удаляет, темы светлая и тёмная. Лендинг negolosom.ru собрал на скорую руку: одностраничник с кнопками в RuStore и к контактам.
Shipped an Android app «Ne pishi golosovoe!» («Don’t send voice notes!») to RuStore in two days. Speak into the mic, get a transcript. All on the device: no cloud, no account, no internet. Voice notes often carry sensitive stuff, and pushing them off to someone else’s servers is a bad default. The stack: Expo SDK 54, React Native 0.81 with the New Architecture, 16 kHz mono WAV recording via @siteed/audio-studio, sherpa-onnx engine, Sber’s GigaAM v3 (NeMo CTC, INT8). On Russian it’s about 2.5× more accurate than Whisper-large-v3. The model downloads once, weighs around 320 MB, then runs offline. I slice long recordings into chunks and drop anything under 250 ms as noise. The UI is minimal: one main screen with a list of notes and a floating record button. A real-time waveform, pulse and glow animations in sync with loudness, swipe-left deletes, light and dark themes. Put the negolosom.ru landing together in a sitting: a one-pager with buttons to RuStore and contacts.