{ "_note": "Sprecher-Pool fuer die Funk-Pille. Pro Audio-ID festes Mapping. 8 Profile, davon 4 Pilot*innen rotierend ueber die 14 Helis (Heli-Key bestimmt zugewiesenen Pool-Eintrag).", "speakers": { "tower_f": { "label": "Tower", "role": "Tower-Lotsin", "gender": "female", "image": "img/speakers/tower_f.png" }, "briefing_f": { "label": "Briefing", "role": "Briefing-Offizierin", "gender": "female", "image": "img/speakers/briefing_f.png" }, "pilot_a_m": { "label": "Pilot Hannes", "role": "Pilot", "gender": "male", "image": "img/speakers/pilot_a_m.png" }, "pilot_b_f": { "label": "Pilotin Marlene", "role": "Pilotin", "gender": "female", "image": "img/speakers/pilot_b_f.png" }, "pilot_c_m": { "label": "Pilot Stefan", "role": "Pilot", "gender": "male", "image": "img/speakers/pilot_c_m.png" }, "pilot_d_f": { "label": "Pilotin Sarah", "role": "Pilotin", "gender": "female", "image": "img/speakers/pilot_d_f.png" }, "retter_m": { "label": "Flugretter", "role": "Bergrettung", "gender": "male", "image": "img/speakers/retter_m.png" }, "sani_f": { "label": "Sanitäterin", "role": "Notfallsanitaeterin", "gender": "female", "image": "img/speakers/sani_f.png" } }, "_pilot_by_helikey": "Welcher Pilot*innen-Pool-Eintrag zu welchem Heli-Stuetzpunkt gehoert. Ab 2026-05-31: ALLE Stützpunkte sind Marlene (pilot_b_f) zugewiesen — konsistent mit Onboarding (Marlene = zentrale Chefpilotin/Mentorin). Die Profile pilot_a_m / pilot_c_m / pilot_d_f bleiben im System fuer spaetere Versionen mit erweiterter Pilot*innen-Vielfalt.", "pilot_by_helikey": { "c1": "pilot_b_f", "c2": "pilot_b_f", "c3": "pilot_b_f", "c4": "pilot_b_f", "c5": "pilot_b_f", "c6": "pilot_b_f", "c7": "pilot_b_f", "c8": "pilot_b_f", "c9": "pilot_b_f", "c10": "pilot_b_f", "c11": "pilot_b_f", "c12": "pilot_b_f", "c14": "pilot_b_f", "c16": "pilot_b_f", "ara": "pilot_b_f" }, "_rules": "Erste passende Regel gewinnt. Die {pilot}-Variable wird via pilot_by_helikey aufgeloest, abhaengig von der Mission. Tower-Audios bekommen weiter ein wechselndes Label-Suffix (Innsbruck/Wien/Salzburg/...) — Bild bleibt aber immer tower_f.", "rules": [ { "match": "^r_mission_intro_", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_tower\\d+$", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_success\\d?$", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_zwischenlandung_pflicht", "speaker": "pilot_b_f", "label": "Pilotin Marlene" }, { "match": "^r_start_erfolg", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_nachtrag_", "speaker": "pilot_b_f", "label": "Pilotin Marlene" }, { "match": "^r_mission_geo_", "speaker": "briefing_f", "label": "Briefing-Offizierin" }, { "match": "^r_mission_start_", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_caution_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_patient_aboard_m$", "speaker": "retter_m", "label": "Flugretter" }, { "match": "^r_patient_aboard$", "speaker": "sani_f", "label": "Sanitäterin" }, { "match": "^r_kurs_klinik(_m)?$", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_mission_success$", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_mission_abort(_m)?$", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_im_zielgebiet(_m)?$", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_warteschleife(_m)?$", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_start_erfolg(_m)?$", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_tower_geo_", "speaker": "briefing_f", "label": "Briefing-Offizierin" }, { "match": "^r_tower_(approach|extract|start)_", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_tower_(hw|sea)_(approach|extract)_", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_tower_handover_", "speaker": "tower_f", "label": "Tower" }, { "match": "^r_tower_lesson_", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_tower_strike_", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_wp_geo_", "speaker": "briefing_f", "label": "Briefing-Offizierin" }, { "match": "^r_pilot_call_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_pilot_hw_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_pilot_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_retter_hw_", "speaker": "sani_f", "label": "Sanitäterin" }, { "match": "^r_retter_", "speaker": "retter_m", "label": "Flugretter" }, { "match": "^r_land_(rescuer_down|rescuer_ready)", "speaker": "retter_m", "label": "Flugretter" }, { "match": "^r_land_disembark", "speaker": "tower_f", "label": "Tower {tower_city}" }, { "match": "^r_land_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_nav_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_warn_", "speaker": "{pilot}", "label": "{pilot_label}" }, { "match": "^r_strike|^r_ouch|^r_takeover", "speaker": "{pilot}", "label": "{pilot_label}" } ], "_tower_city_by_helikey": "Welche Tower-Stadt zu welchem Heli gehoert (real, nicht erfunden). c2/c3/c14/c16 sind AFIS-Plaetze und sprechen mit Wien Information.", "tower_city_by_helikey": { "c1": "Innsbruck Tower", "c2": "Wien Information", "c3": "Wien Information", "c4": "Innsbruck Tower", "c5": "Innsbruck Tower", "c6": "Salzburg Tower", "c7": "Klagenfurt Tower", "c8": "Innsbruck Tower", "c9": "Wien Tower", "c10": "Linz Tower", "c11": "Klagenfurt Tower", "c12": "Graz Tower", "c14": "Wien Information", "c16": "Wien Information", "ara": "Innsbruck Tower" } }