Skip to content

Latest commit

 

History

182 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Taleka

Taleka hero banner

Taleka is a mobile platform for preserving and learning endangered indigenous languages, starting with Semai in Malaysia.

Live project Demo video

Overview

Taleka connects community elders and language learners in one learning flow:

  1. Elders record and review spoken language.
  2. The system transcribes recordings and checks them against a curated lexicon.
  3. Verified recordings can become illustrated stories.
  4. Learners study vocabulary, read stories, practice games, and use the AI Coach.

Why Semai?

Semai is an Aslian language spoken by approximately 30,000 people in Peninsular Malaysia. It has limited digital presence and limited support in commercial AI and natural-language tools.

Taleka provides dedicated infrastructure for recording, verifying, organizing, and learning Semai content. The project is designed to support additional indigenous languages as suitable corpora and language tools become available.

Language scope

Semai has the complete dictionary, transcription, translation, and coaching flow in the current version.

The interface also includes seven additional indigenous ASEAN languages as placeholders for future corpus and model integration:

  • Tandia
  • Mlabri
  • Chong
  • Arta
  • Arem
  • Kristang
  • Moken

User flows

Elder workflow

  • Record spoken language with waveform feedback
  • Generate a transcription through the OmniASR ensemble
  • Review and verify the transcription against the Semai lexicon
  • Publish verified recordings as illustrated stories
  • Browse the community sound archive

Learner workflow

  • Select a learning language and complete onboarding
  • Practice vocabulary with spaced repetition
  • Read community stories with scene-level translations
  • Use learning games and quizzes
  • Ask the AI Coach for language guidance
  • Track progress, XP, and weekly activity

Features

Elder Studio

Voice recording and transcription for community elders. Recordings are processed through a multi-language OmniASR ensemble, then reviewed against the Semai lexicon before they become part of the learning experience.

Stories

Verified recordings can be published as illustrated stories. The story flow creates scenes from verified transcription and translation text, then generates cover and background images.

Language Garden

Vocabulary is organized by category and practiced through spaced repetition. Learning progress is stored in Supabase and reflected in the learner profile.

AI Coach

The AI Coach combines deterministic rules with model providers. Known words and common language requests are handled through verified language data before model generation is used.

Translation

The translation flow prioritizes verified glossary matches and sentence examples, then uses constrained model generation and a word-level fallback when necessary.

Learning games

  • VocabMaster for flashcard practice
  • WordleGame for daily word guessing
  • QuizGame for category and comprehension practice

Profile and progress

Role-based navigation, onboarding, avatars, XP, progress tracking, and a weekly leaderboard are supported for learners and elders.

Architecture

flowchart LR
    App[Ionic mobile app] --> Auth[Supabase Auth]
    App --> DB[(Supabase database and storage)]
    App --> Helper[Local transcription proxy]
    Helper --> ASR[OmniASR ensemble]
    App --> Functions[Supabase Edge Functions]
    Functions --> Coach[AI Coach]
    Functions --> Translate[Translation]
    Functions --> Stories[Story generation]
    Stories --> Image[Image generation provider]
Loading

The client uses Ionic, React, and Capacitor. Supabase provides authentication, database access, storage, and edge functions. The local helper handles the transcription flow and candidate scoring.

Technology

Area Tools
Mobile app Ionic, React, Capacitor, Vite
State and UI Zustand, Tailwind CSS
Data and auth Supabase Postgres, Auth, Storage
Speech OmniASR ensemble
AI Coach Claude Agent SDK, Gemini
Translation Cerebras, SEA-LION integration
Image generation OpenRouter, GPT Image 2
Testing Vitest, Testing Library
Local services Node.js transcription proxy

Repository layout

.
|-- src/
|   |-- components/       # Shared UI components
|   |-- lib/              # Auth, AI, storage, and domain helpers
|   |-- navigation/       # Auth and role-based routing
|   |-- pages/            # Application screens
|   |-- stores/           # Zustand stores
|   |-- types/            # Application and database types
|   |-- utils/            # Validation and progress helpers
|-- ai-helper/            # Local transcription proxy
|-- supabase/
|   |-- migrations/       # Database schema
|   |-- functions/        # Edge functions
|-- assets/               # Flags and landing-page assets
|-- docs/                 # Supporting project documentation

Getting started

Prerequisites

  • Node.js 22 or newer
  • A Supabase project
  • Supabase CLI
  • Optional Hugging Face access for transcription

Install and configure

git clone https://github.com/pablonification/taleka.git
cd taleka
npm install
cp .env.example .env

Configure the Supabase URL and public key in the environment file. Keep provider credentials in Supabase secrets or local environment files, and never commit them.

Run the local app

npm run dev

The Vite development server runs on port 5173.

Run the transcription helper

npm run ai-helper:dev

The helper runs on port 8787 and is required for the Elder Studio transcription flow.

Database and edge functions

Apply migrations and deploy the functions needed by your environment:

npx supabase db push
npx supabase functions deploy ai-coach
npx supabase functions deploy ai-translate
npx supabase functions deploy generate-story-cover
npx supabase functions deploy seed-words

Provider configuration

Provider secrets are configured in Supabase. The services may require credentials for:

  • Gemini or Claude Agent SDK for the AI Coach
  • Cerebras or SEA-LION for translation
  • OpenRouter for story image generation
  • Hugging Face or the configured OmniASR service for transcription

Development

Common development commands:

npm run dev
npm run ai-helper:dev
npm run typecheck
npm run lint
npm run test
npm run test:run
npm run check

Mobile builds require the relevant iOS or Android platform toolchain.

Current limitations

  • Semai is the only language with a complete content and model flow.
  • Additional language options require suitable corpora and language-specific tooling.
  • Transcription requires the local helper and its configured model providers.
  • Story generation requires the configured image-generation provider.
  • Mobile builds require the platform toolchain for the target device.

License

MIT. See LICENSE.

About

Taleka: a mobile platform for preserving and learning endangered indigenous languages with speech AI, grounded translation, and Supabase.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages