1e51ef7def
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
267 lines
6.8 KiB
JSON
267 lines
6.8 KiB
JSON
{
|
|
"_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"
|
|
}
|
|
} |