{"id":51475366,"url":"https://github.com/asmuelle/parlo","last_synced_at":"2026-07-06T20:30:33.619Z","repository":{"id":366029315,"uuid":"1266479709","full_name":"asmuelle/parlo","owner":"asmuelle","description":"An AI speaking partner for language learners that runs entirely on the phone — unlimited conversation roleplay and pronunciation feedback, offline, at a quarter of Speak's price.","archived":false,"fork":false,"pushed_at":"2026-06-19T23:17:05.000Z","size":454,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T01:10:21.537Z","etag":null,"topics":["android","edge-ai","foundation-models","ios","language-learning","on-device-inference","speech-recognition"],"latest_commit_sha":null,"homepage":"https://asmuelle.github.io/parlo/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asmuelle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-11T16:50:55.000Z","updated_at":"2026-06-19T23:35:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/asmuelle/parlo","commit_stats":null,"previous_names":["asmuelle/parlo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/asmuelle/parlo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Fparlo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Fparlo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Fparlo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Fparlo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asmuelle","download_url":"https://codeload.github.com/asmuelle/parlo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmuelle%2Fparlo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35205739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","edge-ai","foundation-models","ios","language-learning","on-device-inference","speech-recognition"],"created_at":"2026-07-06T20:30:32.923Z","updated_at":"2026-07-06T20:30:33.600Z","avatar_url":"https://github.com/asmuelle.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Parlo\n\n[![CI](https://github.com/asmuelle/parlo/actions/workflows/ci.yml/badge.svg)](https://github.com/asmuelle/parlo/actions/workflows/ci.yml)\n\n\u003e An AI speaking partner for language learners that runs entirely on the phone — truly unlimited conversation roleplay and pronunciation feedback, offline on the commute or abroad, at a quarter of Speak's price.\n\n**Category:** Edge AI / on-device inference (iOS + Android) \n## Concept\n\nAn AI speaking partner for language learners that runs entirely on the phone — truly unlimited conversation roleplay and pronunciation feedback, offline on the commute or abroad, at a quarter of Speak's price.\n\n## Target User\nIntermediate (B1-B2) learners who need speaking volume above all: travelers, expats, and immigrants currently paying Speak $20/mo or Duolingo Max $30/mo and rationing metered practice minutes — plus shy learners who won't stumble through bad sentences into a cloud microphone.\n\n## Why Edge AI Is Structural (not decoration)\n\nWhisper-class on-device ASR with phoneme-level forced alignment for pronunciation scoring; AFM 3 Core / Core Advanced for conversation roleplay via Dynamic Profiles (café scene, job interview, haggling) with guided generation for inline corrections; Gemma 3n E2B audio-input multimodality via LiteRT-LM on Android lets learners speak directly to the model; on-device TTS replies. Structural: speaking practice is the highest-token activity in language learning — incumbents meter minutes precisely because every cloud turn costs money, so 'truly unlimited speaking' is a feature cloud economics forbid; and learners practice exactly where connectivity dies (planes, subways, abroad without data).\n\n## Why Now (2026 timing)\n\nGemma 3n audio input shipped and Gemma 4 (140+ languages) is in AICore Developer Preview; A19 Pro makes 20B-class on-device conversation quality real; subscription fatigue is quantified ($66/mo average AI spend, 53% cancel-and-restart), making a cheap annual/lifetime tutor the structural answer.\n\n\n## Tech Stack\n\niOS-first (primary platform, zero inference cost): Swift/SwiftUI; FoundationModels framework (iOS 26+, ~3B AFM) with @Generable guided generation emitting structured turns {reply, correction, naturalness note}; aggressive transcript condensation per Apple TN3193 to live inside the 4096-token context window; SpeechAnalyzer/SpeechTranscriber (iOS 26 on-device ASR) for supported locales with whisper.cpp small/medium (Metal) fallback for others; pronunciation scoring via a Core ML-converted wav2vec2 forced-alignment + GOP model, shipped explicitly as beta-grade syllable feedback, not Speak-parity scoring; TTS via AVSpeechSynthesizer premium voices or Kokoro-82M through MLX/Core ML. Android (phase 2, flagship-gated): MediaPipe LLM Inference API / LiteRT-LM running Gemma 3n E4B on GPU/NPU (hard-gate on 8GB+ RAM devices, Play Asset Delivery for the 3-4GB weights), Gemma 3n audio input or whisper.cpp for ASR, Android on-device TextToSpeech; adopt Gemini Nano/ML Kit GenAI and Gemma 4 via AICore only where the allowlist permits. Pragmatic escape hatch that admittedly dilutes the pure-edge story: optional Gemini Flash cloud path for unsupported devices/languages, off by default and clearly labeled. Launch scope: 2-3 high-resource target languages (Spanish, French, German) where 3B output quality is least embarrassing; expand only after per-language native-speaker QA.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmuelle%2Fparlo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasmuelle%2Fparlo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmuelle%2Fparlo/lists"}