PasaScope (ภาษา-สโคป): Mac app that helps speech-language therapists transcribe and measure Thai children's language samples, on their own computer. Not a diagnostic tool.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Record a therapy session, or open a recording, and PasaScope:
Everything runs on your computer: no account, no server, and recordings never leave it.
[!IMPORTANT] PasaScope does not diagnose. It does not say whether a child is autistic. Its measures are descriptive and have no Thai norms yet, and interpretation is the therapist's. Automatic transcripts can be wrong: check every line against the recording before attesting.
Screens show demonstration data written for the purpose, not a real child.
Measured on the current version (details in reports/metrics/EVALUATION_SUMMARY.md):
You need
The steps below are for the Mac; see Windows for a PC.
Open the latest release, scroll to Assets and click PasaScope-x.y.z.dmg (about 390 MB). The .sha256 file beside it checks the download and is optional.
Open the .dmg and drag PasaScope onto Applications.
Then close the window and eject PasaScope (⏏) in the Finder sidebar.
PasaScope is not notarised by Apple yet, so macOS blocks the first launch. Allow it once:
On macOS 12–14 you can instead right-click PasaScope and choose Open.
The window works like a code editor: cases and their sessions in the side bar, each session in its own tab, and a command palette (Ctrl/Cmd+Shift+P; Ctrl/Cmd+P opens a case or session by typing). The interface is in English; switch to Thai with Settings → Language. It follows the computer's light or dark appearance; choose one yourself in Settings → Appearance. Pages fade in briefly unless the computer's Reduce motion is on (Settings → Motion).
PasaScope-x.y.z-windows-x64-setup.exe (about 310 MB).Updates work the same way: PasaScope downloads and checks the new installer, closes, installs it without the wizard and opens again. Your data is in %APPDATA%\PasaScope and is kept on update and uninstall.
.cha).Help → Knowledge (F1) explains every measure and shows the age charts.
PasaScope checks for a new version once a day (you can switch this off), or use Help → Check for updates…. When there is one, it offers to back up your data, downloads the new version, checks its SHA-256 and installs it over this copy: choose Restart now and PasaScope reopens as the new version, or Later to install it when you next quit. Nothing needs uninstalling, and your cases are kept apart from the app, so updating does not remove them.
~/Library/Application Support/PasaScope on a Mac, %APPDATA%\PasaScope on Windows (File → Open data folder).Open an issue on GitHub Issues. Do not attach recordings, names or anything that identifies a child.
PasaScope is an educational and research prototype from the Department of Medical Technology, Mahidol University. It has not been clinically validated with Thai children.
PasaScope เป็นโปรแกรมช่วยนักแก้ไขการพูด ถอดเสียงภาษาไทยเป็น transcript รูปแบบ CHAT (แยกเสียงเด็กกับผู้ใหญ่ให้) ให้นักบำบัดตรวจแก้และรับรอง แล้วคำนวณตัวชี้วัดจากตัวอย่างภาษา เช่น MLU-w, NDW และอัตราที่เด็กตอบต่อจากผู้ใหญ่ ชี้จุดที่ควรกลับไปดู เช่น การพูดตาม และร่างรายงาน PDF ภาษาไทยหรืออังกฤษให้แก้และลงนาม ทุกอย่างทำงานบนเครื่อง ไม่มีบัญชีผู้ใช้ ไม่มีเซิร์ฟเวอร์ และไม่ใช่เครื่องมือวินิจฉัย
ติดตั้งบน Mac (Mac ชิป Apple, macOS 12 ขึ้นไป, พื้นที่ว่างประมาณ 5 GB)
PasaScope-x.y.z.dmg จากหน้าดาวน์โหลดรุ่นล่าสุด (หัวข้อ Assets)ติดตั้งบน Windows (Windows 10 หรือ 11 แบบ 64 บิต): ดาวน์โหลด PasaScope-x.y.z-windows-x64-setup.exe จากหน้าเดียวกัน เปิดไฟล์ ถ้า Windows SmartScreen แจ้งเตือน ให้กด More info แล้ว Run anyway จากนั้นทำตามตัวติดตั้ง (ไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ)
เริ่มใช้งาน: เพิ่มเคสและบันทึกความยินยอมของผู้ปกครอง → สร้าง session → ทำตามแท็บ เสียง → Transcript → ตัวชี้วัด → รายงาน
อัปเดต: ช่วยเหลือ → ตรวจหาอัปเดต… โปรแกรมสำรองข้อมูลก่อน แล้วติดตั้งรุ่นใหม่ทับรุ่นเดิมให้เอง กด "เปิดใหม่ตอนนี้" แล้วโปรแกรมจะเปิดขึ้นเป็นรุ่นใหม่ ไม่ต้องลบโปรแกรมเดิม ข้อมูลเคสเก็บแยกจากตัวโปรแกรมจึงไม่หาย
แจ้งปัญหา: GitHub Issues ห้ามแนบเสียง ชื่อ หรือข้อมูลที่ระบุตัวเด็ก
PasaScope is a research prototype that turns recordings and CHAT (.cha)
transcripts of children's speech into descriptive language-sample measures and
a draft report for a speech-language therapist to review. It is
not a diagnostic tool and has no Thai clinical validation.
v1.9.0packages/desktop/. It runs on one computer with SQLite and no server.docs/PROJECT_SOURCE_OF_TRUTH.md.
Folder map: docs/REPO_STRUCTURE.md.web-app-final.python3.12 -m venv .venv312
source .venv312/bin/activate
pip install -r requirements.txt -r apps/api/requirements.txt -r requirements-desktop.txt
./run_gui.sh # or: ./run_gui.sh --demo (seeded demo data)
Data lives in ~/Library/Application Support/PasaScope on macOS (override with
PASASCOPE_DESKTOP_HOME). The Thai Whisper model is downloaded on first use and
checked by SHA-256; to build it locally see models/README.md and
scripts/convert_thai_whisper.sh. Full setup: DEVELOPER_SETUP.md.
packages/desktop/ui PySide6 windows (workbench, session tabs, report preview)
packages/desktop/core DesktopService: consent checks, audit log, SQLite workspace
apps/api/app/services shared service layer (transcripts, features, reports, safety checks)
src/audio_pipeline Whisper ASR, VAD, child/adult speaker split, CHAT output
src/clinical_speech Thai LSA rules (thai_lsa.py), CHAT export, feature extraction
packages/features transcript, turn-taking and acoustic measures
packages/cha CHAT parser and the Thai word list
The desktop program calls apps/api/app/services in-process; it has no
formulas of its own. apps/api holds only that service layer, its database
models and repository, and their tests; the web API routes are gone.
python scripts/build_macos_dmg.py → dist/PasaScope-<version>.dmg.github/workflows/desktop-windows.yml runs scripts/build_windows.pydocs/DESKTOP_RELEASE.mdsite/ (GitHub Pages, .github/workflows/pages.yml)All results are in reports/metrics/, summarised in
reports/metrics/EVALUATION_SUMMARY.md.
Each comes from a script in scripts/:
| Result | Script |
|---|---|
| Thai ASR accuracy (own and public sets) | evaluate_thai_asr.py, evaluate_thai_asr_public.py |
| Core measures vs CLAN KIDEVAL (1,961 transcripts) | evaluate_core_measures_clan.py, run_clan_batch.py, parse_clan_kideval.py |
| Child/adult speaker attribution | evaluate_speaker_attribution.py, evaluate_clinic_speaker_model.py |
| Utterance boundaries, turn taking, echolalia cue | train_utterance_boundaries.py, evaluate_turn_taking.py, evaluate_echolalia_cue.py |
| Thai word segmentation | evaluate_thai_word_segmentation.py |
| End to end | evaluate_end_to_end.py, build_synthetic_thai_dialogues.py |
| Transcript ASD screening replication | replicate_transcript_asd_screening.py |
Evaluation audio and gold transcripts: data/evaluation/README.md.
TalkBank downloads: docs/TALKBANK_DOWNLOAD_RUNBOOK.md.
Earlier ML work (reference-evidence model, Gate 1) is in reports/ml/,
packages/ml/, scripts/ml/ and docs/ML_DECISION_SUPPORT_MODEL_CARD.md.
Public TalkBank/ASDBank transcripts are under data/ (Eigsti, Nadig,
NYU-Emerson, Flusberg, Rollins, QuigleyMcNally) with manifests in
data/manifests/. Raw corpus mirrors and audio stay out of git
(ADR 0003).
bash scripts/check_project.sh # consistency, secret scan, all Python tests
PYTHONPATH=apps/api:src pytest tests/test_desktop*.py -q # desktop only
PYTHONPATH=apps/api:src pytest -m "not audio" -q # what CI runs
On macOS run the Qt tests (tests/test_desktop*.py) in their own pytest
process, as check_project.sh does.
| Document | Purpose |
|---|---|
SCOPE_AND_DELIVERABLES.md | What the term paper presents and what is out of scope |
docs/TERM_PAPER_MAPPING.md | Paper sections mapped to code and evidence |
docs/FEATURE_GUIDE.md | Every measure, how it is counted, and its evidence |
docs/REPORT_LAYOUT.md | Report and PDF layout |
docs/AUDIO_PIPELINE.md | Recording → transcript draft |
docs/PILOT_USABILITY_PROTOCOL.md | Therapist usability test (not run yet) |
KNOWN_LIMITATIONS.md | Limitations |
docs/REFERENCES.md | Bibliography |
CHANGELOG.md | Version history |