Glosso Studio is an offline-first pronunciation training application built with Kotlin Multiplatform and Jetpack Compose. It provides real-time phonetic assessment and a structured curriculum to help users improve their pronunciation in English (UK/US), French, Spanish, German and Latin.
The application runs a wav2vec2 acoustic model (facebook/wav2vec2-lv-60-espeak-cv-ft, int8-quantized ONNX) directly on device via ONNX Runtime. It processes 16 kHz raw waveform input (no MFCC feature extraction) and maps predictions to eSpeak phoneme labels, which are compared against the sentence's canonical eSpeak IPA using a language-specific phoneme similarity matrix (alignment, per-phoneme feedback and minimal-pair hints).
The application is designed to be fully functional offline once the initial assets are retrieved.
- ONNX Runtime: Executes the acoustic model (
wav2vec2_espeak_cv_ft_int8.onnx) directly on the device. - Dynamic Asset Download: To keep the APK size minimal, the acoustic model, vocabulary and per-language curriculum databases are downloaded on-demand from the GitLab generic package registry when first needed.
- Room Database: Manages the repository of practice sentences and user progress.
- Curriculum Levels: Six difficulty tiers (A1-C2) from Beginner to Mastery.
- Mastery System: Sentences are marked as mastered when users achieve a threshold score (85%+).
- Spaced Repetition: Mastered sentences enter a review queue with growing intervals.
- Streak Tracking: Encourages consistent practice through a daily streak system verified against activity logs.
- Statistics: Progress screen with mastery timeline, practice calendar, weakest phonemes and review backlog.
- Framework: Kotlin Multiplatform (KMP)
- UI: Jetpack Compose (Material 3)
- Dependency Injection: Koin
- Database: Room (Android)
- Networking: Ktor Client
- Machine Learning: ONNX Runtime for Android
- Phonetic Model: facebook/wav2vec2-lv-60-espeak-cv-ft (int8-quantized ONNX) with eSpeak phoneme labels
- Text-to-Speech: Android system
TextToSpeechengine for reference playback - Audio Processing: 16 kHz PCM capture, raw waveform model input
- Serialization: Kotlinx Serialization
The main repository is on GitLab: https://gitlab.com/shirobyte421/glosso-studio (issues and merge requests go there). https://github.com/IgnacioLD/glosso-studio is a read-only mirror.
Requirements: Android Studio (or the Android SDK command-line tools) and JDK 17 or newer.
git clone https://gitlab.com/shirobyte421/glosso-studio.git
cd glosso-studio
./gradlew :androidApp:assembleFdroidDebugThe app has two product flavors: fdroid (no Google Play libraries) and playstore (adds the in-app review prompt).
Debug builds need no signing setup. Release builds read the signing key from local.properties
(signing.storeFile, signing.storePass, signing.alias, signing.keyPass) or the matching SIGNING_* environment variables.
The acoustic model (~300 MB), its vocabulary and the sentence databases are not in the repository. The app downloads them on first use
from the GitLab package registry (version pinned by dataVersion in androidApp/src/main/java/me/shirobyte42/glosso/di/AppModule.kt).
Run it on a device or emulator with API 26 or higher.
The project follows a clean architecture pattern within the Kotlin Multiplatform structure:
sharedmodule: Contains the domain logic, repositories, and cross-platform use cases.androidAppmodule: Contains the Compose UI, Android-specific data implementations (Room, Audio), and the ONNX integration.
Known issues and planned work are listed in docs/BACKLOG.md.
Bug reports and merge requests are welcome on GitLab. See CONTRIBUTING.md.
- wav2vec2-lv-60-espeak-cv-ft acoustic model (Apache-2.0)
- ai-pronunciation-trainer for the original pronunciation scoring approach (AGPL-3.0)
- Qwen3-TTS for reference audio generation
- ONNX Runtime and Koin
This project is licensed under the GNU Affero General Public License v3 (AGPLv3). See the LICENSE file for the full license text.
Glosso Studio is designed to be compatible with F-Droid.
- Metadata: Located in
fastlane/metadata/android. - Build Recipe:
metadata/me.shirobyte42.glosso.ymlis provided as a reference for F-Droid inclusion.