No description
  • Kotlin 94.7%
  • C 2.8%
  • CMake 1.3%
  • Nix 1.2%
Find a file
2026-05-11 10:00:28 -05:00
.idea update Kotlin to 2.1.21 2025-05-31 20:33:38 -07:00
app feat: moved settings around 2026-05-11 10:00:28 -05:00
gradle/wrapper update Gradle to 8.14.3 2025-07-15 13:48:27 -07:00
lib feat: added noise suppression 2026-05-10 16:41:02 -05:00
llama.cpp@389ff61d77 feat: made models a runtime dependency 2026-05-10 21:47:06 -05:00
rnnoise@70f1d256ac feat: made models a runtime dependency 2026-05-10 21:47:06 -05:00
whisper.cpp@51c6961c7b update whisper.cpp to 1.7.5 2025-05-11 03:07:33 -07:00
.gitattributes initial commit & version 1/0.1.0 2024-03-25 23:18:59 -07:00
.gitignore feat: added pyannote model 2026-05-10 12:36:39 -05:00
.gitmodules feat: added noise suppression 2026-05-10 16:41:02 -05:00
build.gradle.kts update Android Gradle plugin to 8.12.0 2025-08-06 18:27:49 -07:00
CONTRIBUTING.md add cloning instructions to CONTRIBUTING.md 2025-05-31 20:14:51 -07:00
flake.lock chore: added flake 2026-05-10 10:32:07 -05:00
flake.nix chore: added flake 2026-05-10 10:32:07 -05:00
gradle.properties increase JVM heap memory to 4096 MB to prevent running out while building 2025-05-11 04:30:00 -07:00
gradlew update Gradle to 8.14.1 2025-05-31 20:39:54 -07:00
gradlew.bat update Gradle to 8.14.1 2025-05-31 20:39:54 -07:00
ic_launcher.svg initial commit & version 1/0.1.0 2024-03-25 23:18:59 -07:00
LICENSE.openai-whisper.txt initial commit & version 1/0.1.0 2024-03-25 23:18:59 -07:00
LICENSE.silero-vad.txt initial commit & version 1/0.1.0 2024-03-25 23:18:59 -07:00
LICENSE.txt update copyright notice 2025-05-12 04:03:55 -07:00
LICENSE.whisper.cpp.txt update dependencies 2024-04-25 19:54:10 -07:00
README.md feat: rebranded app and split settings 2026-05-10 20:05:34 -05:00
Screenshot_20250214-223133.png Add files via upload 2025-02-14 22:33:35 -08:00
settings.gradle.kts feat: rebranded app and split settings 2026-05-10 20:05:34 -05:00

Stenosis

Stenosis is a private and on-device speech recognition app for Android. It is a fork of Transcribro with two focused modes:

  • Conversation transcription — open the app, hit record, and get a live transcript of a conversation with optional speaker diarization (pyannote + wespeaker).
  • Keyboard transcription — a voice-input IME for dictating into other apps, like the original Transcribro.

It uses whisper.cpp to run the OpenAI Whisper family of models, Silero VAD for voice activity detection, RNNoise for optional noise suppression, and on-device pyannote segmentation + wespeaker embeddings for speaker diarization. All processing happens locally — no audio leaves the device.

Language support

Stenosis currently ships with the tiny.en Whisper model — English only. Multilingual support is possible but not yet wired up.

Build

This project uses a nix flake for the dev shell. From the repo root:

nix develop
./gradlew :app:assembleDebug

Or use the bundled flake apps:

nix run .#install   # build + install the debug APK to a connected device
nix run .#run       # install + launch
nix run .#logcat    # tail logcat for the debug app id

The debug build uses applicationIdSuffix = ".debug" so it installs alongside any prod build.

Attribution

Stenosis is a fork of soupslurpr/Transcribro (ISC License). The original keyboard transcription path, JNI whisper.cpp bindings, and much of the recognition service plumbing come from there.