--- title: Language Attrition - derive & model emoji: 📊 colorFrom: indigo colorTo: pink sdk: gradio sdk_version: 4.44.1 python_version: "3.10" app_file: app.py pinned: false license: mit --- # Language Attrition: derive the numbers, then model them A point-and-click tool for the *Bye-lingual* seminar. No transcribing, no Spanish, no Praat, no code. Runs on CPU (it does **not** transcribe audio). **Tab 1 - Derive.** Upload a recording **and its transcript** (the existing word-timestamped `.json`). The app derives ~25 linguistic factors: disfluency (filled / empty pauses, repetitions, retractions), fluency (speech / articulation rate, phonation %), complexity (MLU, TTR, MTLD), and acoustics (F0, jitter, shimmer, HNR, spectral tilt, MFCCs). Stack several speakers and download the table. **Tab 2 - Model.** Use the table you built (or upload a CSV joined with your questionnaire predictors), pick two variables, and get the scatter, the correlation (Pearson or Spearman), and the regression line. A correlation heatmap shows all variables at once. The numbers are identical to the course pipeline (same `markers.py` / `acoustic_markers.py`). Transcription is **not** done here: this Space consumes an existing transcript. Phase-2 markers (VOT, vowel space, rhythm) need forced alignment (MFA) and are not produced. ## Transcript format A JSON file, either a bare list or `{"chunks": [...]}`, where each chunk is: ```json {"text": "Pues", "timestamp": {"start": 2.94, "end": 3.08}} ``` The `[*]` disfluency markers must be kept. Per-speaker transcripts can be exported from the pipeline with `pipeline/export_transcripts_json.py`. ## Files - `app.py` - Gradio UI (Derive + Model tabs) - `features.py` - parse transcript → extract_markers → flat feature row - `markers.py`, `acoustic_markers.py`, `alignment_markers.py` - vendored from `pipeline/`