Voice Transcriber - Native Android App for voice transcription serving as a semantic notebook for conversations
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| docs | ||
| gradle/wrapper | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| AGENTS.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| M003-CONTEXT.md | ||
| README.md | ||
| ROADMAP-OFFLINE.md | ||
| screenshot.png | ||
| screenshot2.png | ||
| screenshot3.png | ||
| settings.gradle.kts | ||
| transcriber-CONTEXT.md | ||
Voice Transcriber
Native Android app for voice transcription serving as a "semantic notebook for conversations."
Architecture
- UI: Jetpack Compose + Material 3 (slate dark theme)
- State: ViewModel + StateFlow
- DI: Hilt
- Persistence: Room Database
- Transcription: Android SpeechRecognizer API (planned)
- Background: Foreground Service with microphone type
Build
export ANDROID_HOME=~/Android/Sdk
export ANDROID_SDK_ROOT=~/Android/Sdk
./gradlew assembleDebug
Requires full JDK (not JRE-headless) for AGP 8.2+ with JDK 21.
Project Structure
app/src/main/java/com/voicetranscriber/
├── App.kt # Hilt application class
├── MainActivity.kt # Entry point, Compose UI
├── ui/theme/ # Material 3 theme
├── ui/screens/ # Screen composables
├── service/ # Foreground transcription service
├── data/database/ # Room database, DAOs, entities
├── data/repository/ # Repository layer
└── data/di/ # Hilt DI modules
Data Model
- RecordingSession: id, title, start/end time, notes
- TranscriptSegment: id, sessionId, text, speakerId, subjectId, timestamp, confidence
- Speaker: id, name, colorHex
- Subject: id, name, parentId (hierarchical)
Permissions
- RECORD_AUDIO
- FOREGROUND_SERVICE
- FOREGROUND_SERVICE_MICROPHONE
- POST_NOTIFICATIONS