Skip to content

bobo52310/TypeLate-android

Repository files navigation

繁體中文 | English

TypeLate logo

TypeLate Android

Too late to type — just speak.

Tap the mic, speak naturally, and your voice becomes polished text — right inside any app.

MIT License

Features

Three Input Modes

  • IME Keyboard — A custom input method that commits transcription directly into any text field
  • Floating Overlay — A draggable mic button that works across any app, auto-pastes via accessibility
  • Dashboard App — Usage stats, transcription history, custom dictionary, and settings

Core Capabilities

  • Groq Whisper API speech recognition (Large v3 / Turbo)
  • LLM text enhancement — auto-corrects typos, removes filler words, adds punctuation
  • Hallucination filter — 4-layer detection (speed, blocklist, repetition, low-energy) prevents garbage output
  • Custom dictionary to improve proper noun recognition
  • Google Drive sync — bidirectional vocabulary sync across devices
  • Usage analytics with daily trend charts
  • Material 3 dynamic color theming

Privacy-First

Your API key goes directly to Groq — voice data never passes through our servers. All transcriptions are stored locally on your device.

Quick Start

  1. Build and install the app (see Development below).
  2. Enable TypeLate as an input method in Android Settings → Keyboard.
  3. Open the app and enter your Groq API Key (free to obtain).
  4. Switch to TypeLate keyboard in any app, tap the mic, speak, and the transcription fills in automatically.

Architecture

User taps mic → VoiceRecorder → MediaRecorder → audio file
User taps stop → VoiceRecorder.stopAndTranscribe()
  → Groq Whisper API (OkHttp multipart POST)
  → HallucinationFilter (4-layer check)
  → TextEnhancer (optional LLM polish)
  → TextOutputHandler:
      IME:     InputConnection.commitText()
      Overlay: AccessibilityService.pasteText()
  → AppDatabase.insertTranscription()

Package Structure

app/src/main/kotlin/com/typelate/android/
├── ime/            # IME service, keyboard UI, recorder, state machine
├── overlay/        # Floating overlay foreground service, animations
├── accessibility/  # Accessibility service (auto-paste)
├── data/           # SettingsRepository, SQLite database
├── sync/           # Google Drive vocabulary sync
├── ui/screens/     # Dashboard, History, Dictionary, Settings
└── ui/theme/       # Material 3 theme

Tech Stack

Component Technology
Language Kotlin 2.3.20
UI Framework Jetpack Compose (BOM 2026.03.00)
Build System AGP 9.1.0
HTTP Client OkHttp 5.3.2
Serialization kotlinx-serialization 1.10.0
Settings DataStore 1.2.1
Auth Credential Manager 1.5.0
AI / Speech Groq API (Whisper STT + LLM enhancement)
Min SDK / Target SDK 26 (Android 8.0) / 36

Development

Prerequisites

  • Android SDK (ANDROID_HOME env var or sdk.dir in local.properties)
  • just command runner (brew install just)
  • Groq API Key (entered in app settings)

Setup

git clone https://github.com/bobo52310/TypeLate-android.git
cd TypeLate-android

# List all available commands
just

# Launch emulator
just emulator

# Build + install + launch
just run

# Or all-in-one (emulator + install + launch)
just full

Common Commands

Command Description
just build Build debug APK
just release Build release APK (with ProGuard)
just install Install to device
just run Build + install + launch
just dev Build + install + launch + logcat
just emulator Launch emulator and wait for boot
just screenshot Capture screenshot and open
just logcat Filtered app log output
just clear Clear app data on device
just check Full build + lint check

Build with Gradle

./gradlew assembleDebug      # Build debug APK
./gradlew assembleRelease    # Build release APK (ProGuard enabled)
./gradlew installDebug       # Build and install to connected device
./gradlew build              # Full build (compile + lint)

Setup Guide

  1. Enable IME Keyboard — Settings → System Keyboard Settings → Enable TypeLate
  2. Enable Accessibility — Settings → Accessibility → Enable TypeLate (for overlay auto-paste)
  3. Grant Overlay Permission — Settings → Grant floating window permission
  4. Enter API Key — Settings → Enter Groq API Key → Save
  5. Google Drive Sync (optional) — Settings → Google Drive Sync → Sign in

Related Projects

  • TypeLate — macOS / Windows desktop app (Tauri + React + Rust)

License

MIT

About

Voice-to-text Android app — tap mic, speak, get polished text in any app. 100% free, welcome to fork!

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors