Download .env.example from wzender/mathly: direct link, hf CLI and curl.
- Browser
- Download file 3.71 kB
-
https://huggingface.co/spaces/wzender/mathly/resolve/main/.env.example
- Command line
-
hf download hf://spaces/wzender/mathly/.env.example
-
curl -L -o .env.example https://huggingface.co/spaces/wzender/mathly/resolve/main/.env.example
3.71 kB
| # Copy to .env and fill in. .env is git-ignored and is not copied into the Docker image. | |
| # On Hugging Face, set these as Space *secrets* instead (Settings -> Variables and secrets). | |
| # Sawtak Arabi TTS key for the model-answer playback (https://sawtakarabi.ai/dashboard). | |
| # Without it the page falls back to the device's Arabic voice. | |
| SAWTAK_API_KEY= | |
| # Optional: the edge-tts voice of the spoken Hebrew prompts. Empty = he-IL-HilaNeural. | |
| HEBREW_VOICE= | |
| # Optional: where the generated speech (Arabic answers, Hebrew prompts) is cached. Empty = ~/.cache/ihki-tts. | |
| TTS_CACHE_DIR= | |
| # Optional: the Hugging Face CTC phoneme model the scorer runs. Unset = facebook/wav2vec2-xlsr-53-espeak-cv-ft. | |
| # Leave the line commented out rather than empty: an empty value is used as is and fails to load. | |
| # scripts/bench.py and scripts/rescore.py read it too, so a benchmark runs on the same model as the server. | |
| # MODEL_ID=facebook/wav2vec2-xlsr-53-espeak-cv-ft | |
| # Optional: how a vowel's GOP pools its frames (docs/gop-pooling.md): max | mean | topk | lse | energy | gated. | |
| # Empty = gated. "max" is the scoring before pooling. The lab's results show it beside the version, to compare runs. | |
| GOP_RATIO_POOL= | |
| # Optional: which frames a vowel's competitors are read from. Empty = wide (from the sound before to the one after, | |
| # as consonants). "narrow" = its aligned frames +- 1, or a number for another margin. Narrow drops spikes in the | |
| # transitions, but also misses a substitution held just outside it; see scripts/gop_window_bench.py. | |
| GOP_VOWEL_WINDOW= | |
| # Google sign-in through Supabase (Project Settings -> API Keys). Both values are public: the page gets them too. | |
| # Empty = no sign-in, the service is open. On Hugging Face these can be plain Space *variables*. | |
| SUPABASE_URL= | |
| SUPABASE_PUBLISHABLE_KEY= | |
| # Optional: the teacher's account (or several, separated by commas or spaces). After sign-in a teacher chooses | |
| # between "תרגול" (the same as a student) and "ניהול" (the management panel: every student's progress, and the | |
| # classes). Who may sign in is set by the classes the teacher opens there (see the README), not here. | |
| TEACHER_EMAILS= | |
| # Bootstrap accounts with full access, including the Lab. Admins do not get Lab access. Keep at least one address here | |
| # so database permission mistakes cannot lock every developer out. | |
| DEVELOPER_EMAILS= | |
| # Needed by the management panel and the classes: the project's secret key (Project Settings -> API Keys -> secret, or the | |
| # legacy service_role key). It reads every student's rows, so it is NOT public: on Hugging Face set it as a *secret*. | |
| # scripts/bench.py needs it (with the two values above) to read the lab's recordings. | |
| SUPABASE_SECRET_KEY= | |
| # Optional: accounts (separated by commas or spaces) that, like the teachers, get a flag under each score, for a recording they said | |
| # right and the system scored wrong. A flag is kept in the Supabase table `flags` with its recording (see the README), | |
| # so it needs SUPABASE_SECRET_KEY. These accounts may sign in without being in a class. | |
| TUTORS_EMAIL= | |
| # Optional deployment metadata shown to teachers at the bottom of the management panel. | |
| # Without these, the app uses a content hash, the newest source-file time, and the local git commit when available. | |
| APP_VERSION= | |
| BUILD_DATE= | |
| GIT_COMMIT= | |
| GIT_COMMIT_MESSAGE= | |
| # Lets a developer replace SAWTAK_API_KEY / ANTHROPIC_API_KEY from the management panel (kept encrypted in Supabase, | |
| # table app_secrets; see the README). Make one with: | |
| # python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" | |
| # Keep it only here / as a Space secret. Losing it loses the keys set in the panel (the ones above still work). | |
| SECRETS_MASTER_KEY= | |