An accessible English‑learning desktop application designed for visually impaired learners. The app bundles an Electron shell, a React front end, and a Flask backend to deliver guided listening, self‑recording, and pronunciation comparison in a single package.
.
├── app
│ ├── backend/ # Flask API, data stores, sample generation script
│ ├── client/ # React source code and assets
│ ├── main.js # Electron main process (lanches Flask + React)
│ └── package.json # Electron + orchestration scripts
├── scripts/ # Cross-platform start scripts
├── README.md # English README
└── README-zh.md # 中文说明
Key data directories (created on first run or via create_sample_data.py):
app/backend/databaseOrigin/ – JSON metadata & transcript .txt files.app/backend/audioOrigin/ – Reference audio clips (WAV).app/backend/audioSelf/ – User recordings (auto-created).python, pip in PATH).node, npm in PATH).# Python dependencies
cd app/backend
pip install -r requirements.txt
# JavaScript dependencies (client + Electron)
cd ../../app/client
npm install
cd ..
npm install
# From repository root (Bash)
./scripts/start.sh
# Or on Windows (PowerShell)
pwsh scripts/start.ps1
The script frees ports 3000/5000 if needed, starts the Flask API, boots the React dev server, and opens the Electron window automatically. React stays inside the Electron shell—no browser tab will appear.
If you need fresh demo content, regenerate it:
cd app/backend
python create_sample_data.py
This populates databaseOrigin/ with transcripts and audioOrigin/ with synthesised placeholder audio.
/): select a lesson on the left, read the large transcript, play audio, record attempts, and review similarity scores on the right panel. Waveforms auto-scale vertically to fit both signals./admin): filter materials, record new reference audio, preview recordings, and upload replacements. Transcripts are preserved whenever admin audio is updated.app/backend/audioSelf, and metadata is stored in databaseSelf.cd app
npm run build # Builds the React bundle into client/build
For packaging the Electron app you can integrate electron-packager or a similar tool (not yet scripted in this repo).
npx kill-port 3000 5000.pip install wheel) are available and reinstall librosa dependencies.Apache License 2.0 – see LICENSE for details.
