You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
tiers.ipa_phone is reserved in the annotation schema and mapped in python/textgrid_io.py:34,47 as the TextGrid Phones tier. No production code writes it. Verified via grep: zero matches for tiers['ipa_phone'] = across python/. Tier slot exists in the schema, no writer, no reader (except export config).
User-visible effect
TextGrid exports include an empty Phones tier.
Phone-marking workflows are not supported.
Why deferred
PARSE does not currently do individual phone marking. The tier is reserved for a future capability but is not thesis-critical right now. Confirmed by Lucas 2026-05-10.
Full-mode IPA writer: extend _compute_speaker_ipa at python/server_routes/annotate.py:1678 to compute phone-level intervals via the chosen phoneme aligner (candidate: reuse xlsr-53-espeak-cv-ft already used for ORTH word alignment) and assign tiers['ipa_phone'].
Partial-mode refresh (concept-windows / edited-only): same in _compute_speaker_ipa_concept_windows at python/server_routes/annotate.py:1614.
Tagged-only refresh: extend _persist_speaker_rerun_writes in python/app/http/tag_filtered_rerun_handlers.py with an align_ipa_phones DI callable mirroring align_ortho_words from PR fix(ortho): rebuild word tier after partial reruns #350, threaded through the loop and all three production callers (compute job, sync HTTP, MCP).
Single-lexeme rerun: also covered by the same DI pattern — the frontend's saveSpeaker flow needs to refresh the per-window phone intervals.
Current state
tiers.ipa_phoneis reserved in the annotation schema and mapped inpython/textgrid_io.py:34,47as the TextGridPhonestier. No production code writes it. Verified via grep: zero matches fortiers['ipa_phone'] =acrosspython/. Tier slot exists in the schema, no writer, no reader (except export config).User-visible effect
Phonestier.Why deferred
PARSE does not currently do individual phone marking. The tier is reserved for a future capability but is not thesis-critical right now. Confirmed by Lucas 2026-05-10.
When implemented — fix shape
Mirror the pattern PR #350 used for
ortho_words:_compute_speaker_ipaatpython/server_routes/annotate.py:1678to compute phone-level intervals via the chosen phoneme aligner (candidate: reusexlsr-53-espeak-cv-ftalready used for ORTH word alignment) and assigntiers['ipa_phone']._compute_speaker_ipa_concept_windowsatpython/server_routes/annotate.py:1614._persist_speaker_rerun_writesinpython/app/http/tag_filtered_rerun_handlers.pywith analign_ipa_phonesDI callable mirroringalign_ortho_wordsfrom PR fix(ortho): rebuild word tier after partial reruns #350, threaded through the loop and all three production callers (compute job, sync HTTP, MCP).saveSpeakerflow needs to refresh the per-window phone intervals.logger.exceptionfor graceful degrade on aligner failure (mirrors PR fix(ortho): rebuild word tier after partial reruns #350's pattern).References
ortho_wordsrebuild + graceful-degrade (the pattern to mirror)