User Settings Reference: Difference between revisions
No edit summary |
No edit summary Tag: Reverted |
||
| Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
<div style="border:1px solid #d9e2f1; border-radius:14px; padding:22px 24px; margin:0 0 18px 0; background:linear-gradient(135deg,# | <div style="border:1px solid #d9e2f1; border-radius:14px; padding:22px 24px; margin:0 0 18px 0; background:linear-gradient(135deg,#07111c 0%,#15314f 55%,#1d4ed8 100%); color:#ffffff; box-shadow:0 2px 8px rgba(15,23,42,.18);"> | ||
<div style="font-size:32px; font-weight:800; letter-spacing:.2px; line-height:1.2;">FSFO | <div style="font-size:32px; font-weight:800; letter-spacing:.2px; line-height:1.2;">FSFO Cabin Crew Announcements</div> | ||
<div style="font-size:16px; line-height:1.55; margin-top:8px; max-width:980px;">A practical guide to | <div style="font-size:16px; line-height:1.55; margin-top:8px; max-width:980px;">A practical guide to the Cabin Crew Announcements page, including Static, TTS, and AI setup, triggers, custom announcements, and response editing.</div> | ||
<div style="margin-top:14px; font-size:13px; opacity:.95;">Flight Simulator First Officer • Settings • | <div style="margin-top:14px; font-size:13px; opacity:.95;">Flight Simulator First Officer • Settings • Cabin Crew Announcements • Responses • OpenAI Setup</div> | ||
</div> | </div> | ||
<div style="border-left:5px solid #2563eb; background:#eff6ff; padding:12px 15px; margin:0 0 18px 0; border-radius:8px; color:#172554;"> | <div style="border-left:5px solid #2563eb; background:#eff6ff; padding:12px 15px; margin:0 0 18px 0; border-radius:8px; color:#172554;"> | ||
This page | This page explains the modern Cabin Crew Announcements screen in the same order it appears inside FSFO. Use it to configure automatic passenger announcements, manual callouts, and the cabin responses that are used when the cockpit or voice commands interact with the cabin crew. | ||
</div> | </div> | ||
<div style="display:grid; grid-template-columns:repeat(auto-fit,minmax( | <div style="display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; margin:18px 0 24px 0;"> | ||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[# | <div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[#Crew Modes|'''Crew Modes''']]<br><span style="color:#475569; font-size:90%;">Static, TTS, and AI</span></div> | ||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[#Announcement List|'''Announcement List''']]<br><span style="color:#475569; font-size:90%;">Enable, preview, trigger, edit</span></div> | |||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[#Responses|'''Responses''']]<br><span style="color:#475569; font-size:90%;">Cabin replies to cockpit calls</span></div> | |||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[# | <div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[#Custom Announcements|'''Custom Announcements''']]<br><span style="color:#475569; font-size:90%;">Add your own announcement</span></div> | ||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[# | <div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[#AI Cabin Crew Setup|'''AI Cabin Crew Setup''']]<br><span style="color:#475569; font-size:90%;">OpenAI API key and testing</span></div> | ||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[# | <div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[#Tips|'''Tips''']]<br><span style="color:#475569; font-size:90%;">Best practices and reminders</span></div> | ||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[# | |||
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:12px;">[[# | |||
</div> | </div> | ||
<div style="border-left:5px solid #f59e0b; background:#fffbeb; padding:12px 15px; margin:0 0 24px 0; border-radius:8px; color:#78350f;"> | <div style="border-left:5px solid #f59e0b; background:#fffbeb; padding:12px 15px; margin:0 0 24px 0; border-radius:8px; color:#78350f;"> | ||
''' | '''Important:''' FSFO always controls '''when''' announcements and replies are used. Your selected crew mode controls '''how they sound'''. That means Static uses pre-recorded WAV files, TTS uses a Windows SAPI voice, and AI generates the message dynamically with OpenAI. | ||
</div> | </div> | ||
== | == Crew Modes == | ||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | <div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | ||
At the top of the page, choose how FSFO should play cabin announcements and responses. | |||
<div style="clear:both; margin:18px 0 28px 0; text-align:center;"> | <div style="clear:both; margin:18px 0 28px 0; text-align:center;"> | ||
[[File: | [[File:FSFO_Announcements_ModeCards.png|1100px|frameless]] | ||
<div style="font-size:90%; color:#64748b; margin-top:7px;">The | <div style="font-size:90%; color:#64748b; margin-top:7px;">The three crew-mode cards at the top of the Cabin Crew Announcements page.</div> | ||
</div> | </div> | ||
{| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | {| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | ||
! style="width: | ! style="width:220px; background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Mode | ||
! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | What it does | ! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | What it does | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Static Crew | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Uses the pre-recorded cabin crew WAV files. This is the simplest option and does not require any API key. Static mode is the right choice if you want the original recorded cabin voice pack. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | TTS Crew | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Uses the text you define for each announcement and speaks it using the selected Windows SAPI voice. This is best if you want fully editable messages without using OpenAI. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | AI Cabin Crew | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Uses your OpenAI API key to generate dynamic cabin announcements and replies. FSFO still controls the flight trigger logic; OpenAI is used to generate the spoken message. | ||
|} | |} | ||
== | == Announcement List == | ||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | |||
The main table shows each supported announcement and its current trigger, delay, role, conditions, and actions. | |||
== | <div style="clear:both; margin:18px 0 20px 0; text-align:center;"> | ||
[[File:FSFO_Announcements_AddAndResponses.png|520px|frameless]] | |||
<div style="font-size:90%; color:#64748b; margin-top:7px;">The upper-right controls let you switch to Responses or add a custom announcement.</div> | |||
</div> | |||
=== Announcement Actions === | |||
{| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | {| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | ||
! style="width: | ! style="width:220px; background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Control | ||
! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | What it does | ! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | What it does | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Enable All | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Turns the announcement system on or off globally without clearing your individual announcement settings. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Per-row checkbox | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Enables or disables that single announcement. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Preview button | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Plays a preview using the currently selected crew mode. Static plays the configured WAV, TTS uses the SAPI voice, and AI generates a preview message. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Trigger button | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Opens the trigger editor so you can choose when the announcement should fire and how much delay to apply. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Edit button | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Opens the content editor. In TTS mode, you edit the spoken message. In AI mode, you edit the AI prompt. For a custom announcement in Static mode, this becomes a WAV file browser. | ||
|} | |} | ||
=== | === Current Announcement Set === | ||
FSFO currently supports the following primary cabin announcements on this page: | |||
# Boarding Welcome | |||
# Boarding Complete Call | |||
# Doors Armed | |||
# Departure Safety Briefing | |||
# Service Start | |||
# Top of Descent | |||
# Arrival Welcome | |||
# Cabin Secure for Landing | |||
# Doors Disarmed | |||
# Custom Announcement | |||
== Triggers == | |||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | <div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | ||
Most announcements can be set to automatic triggers based on flight phase, altitude, lighting, or ground movement. Others can be left as '''Manual Only'''. | |||
=== Common Trigger Behavior === | |||
* Use the '''Trigger''' button on any row to open the trigger editor. | |||
* Use '''Delay''' to wait a short time after the trigger occurs before the message plays. | |||
* Trigger options change depending on the announcement and its phase of flight. | |||
* Some announcements have special trigger lists instead of the normal segment-based list. | |||
=== Special Trigger Notes === | |||
{| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | {| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | ||
! style="width: | ! style="width:260px; background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Announcement | ||
! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | | ! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Available trigger notes | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Cabin Secure for Landing | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Can use approach-style triggers such as '''Below 15,000 ft''', '''Below 14,000 ft''', '''Below 13,000 ft''', '''Below 12,000 ft''', '''Below 11,000 ft''', '''Below 10,000 ft''', '''Below 9,000 ft''', '''Below 8,000 ft''', '''Below 7,000 ft''', '''Below 6,000 ft''', '''Below 5,000 ft''', and '''Landing Lights On'''. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Arrival Welcome | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Can use rollout and taxi-in triggers including '''Runway Exit''', '''Landing Lights Off''', '''Ground Speed Below 45 MPH''', and '''Ground Speed Below 20 MPH'''. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Doors Disarmed | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Uses the post-arrival trigger list: '''Beacon Off''', '''Taxi Off''', '''Engines Off''', or '''Doors Open'''. The default trigger is '''Engines Off'''. | ||
|} | |} | ||
== | == Responses == | ||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | |||
The '''Responses''' button switches the table from passenger announcements to cabin replies. These are the messages the cabin or flight deck will use when answering intercom questions from the communications panel or from supported voice-command flows. | |||
=== How Responses Work === | |||
* Static mode answers with the assigned static WAV file. | |||
* TTS mode answers with the same cabin SAPI voice used for cabin announcements. | |||
* AI mode generates a response using the OpenAI settings on this page. | |||
* This keeps the response voice consistent with the mode you selected for the announcement system. | |||
=== Typical Response Examples === | |||
* Boarding request approved or standby | |||
* Boarding complete acknowledged | |||
* Cabin ready for takeoff | |||
* Cabin ready for landing | |||
* Cabin service approved or delayed | |||
* Flight deck requests such as coffee or cockpit-door cover | |||
=== Editing Responses === | |||
* Click '''Responses''' to switch the grid. | |||
* Use the '''Preview''' button to hear the current reply. | |||
* Use the '''Edit''' button to change the TTS text or AI prompt. | |||
* Placeholders such as <code>{flight_number}</code>, <code>{dep_city}</code>, <code>{arr_city}</code>, <code>{weather}</code>, <code>{time}</code>, <code>{local_time}</code>, and <code>{status_reason}</code> can be used where supported. | |||
== Custom Announcements == | |||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | <div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | ||
Use '''+ Add Announcement''' to create one custom cabin announcement in the list. | |||
=== Custom Announcement Workflow === | |||
# Click '''+ Add Announcement'''. | |||
# Enter a name, trigger, delay, voice role, and conditions. | |||
# Save the announcement. | |||
# Use the pencil icon after saving to edit the content. | |||
=== Custom Announcement Content by Mode === | |||
{| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | {| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | ||
! style="width: | ! style="width:220px; background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Mode | ||
! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | What | ! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | What you edit | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | Static Crew | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Instead of editing a TTS message, the editor lets you browse to a WAV file. FSFO will play that file whenever the custom announcement is triggered. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | TTS Crew | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | You edit the exact message FSFO will speak with the selected SAPI voice. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | AI Cabin Crew | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | You edit the prompt FSFO sends to OpenAI so the AI can generate the final spoken announcement. | ||
|} | |} | ||
== | == Static, TTS, and AI Settings == | ||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | <div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | ||
The lower cards control the sound source and generation settings for each mode. | |||
<div style="clear:both; margin:18px 0 28px 0; text-align:center;"> | <div style="clear:both; margin:18px 0 28px 0; text-align:center;"> | ||
[[File: | [[File:FSFO_Announcements_CrewSettings.png|1100px|frameless]] | ||
<div style="font-size:90%; color:#64748b; margin-top:7px;">The | <div style="font-size:90%; color:#64748b; margin-top:7px;">The Static, AI, and TTS settings cards on the Cabin Crew Announcements page.</div> | ||
</div> | </div> | ||
=== Static Crew Settings === | |||
* '''Output Device''' chooses where static cabin WAV files play. | |||
* '''Voice Pack Region''' selects the recorded cabin voice pack or accent pack. | |||
* Static crew settings are saved with the cabin crew voice configuration used by the attendant system. | |||
=== TTS Crew Settings === | |||
* '''TTS Voice''' chooses the Windows SAPI voice used for cabin announcements and responses. | |||
* The message-variable chips remind you which placeholders can be used in TTS messages. | |||
* TTS is best when you want editable content without API billing. | |||
=== AI Cabin Crew Settings === | |||
* '''OpenAI API Key''' stores the API key FSFO uses for AI generation. | |||
* '''Test Key''' verifies that the entered key works before you rely on it in flight. | |||
* '''AI Style''' changes the tone or style target for generated announcements. | |||
* '''Voice Output''' selects the AI voice style for generated playback. | |||
* '''Creativity''' adjusts how conservative or creative the AI output should be. | |||
* '''Message Length''' helps constrain the size of generated announcements. | |||
* '''Global AI Prompt''' adds a reusable instruction that is applied to all AI-generated announcements. | |||
== AI Cabin Crew Setup == | |||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | <div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | ||
FSFO AI Cabin Crew requires an '''OpenAI API key'''. This is '''not''' the same thing as a normal ChatGPT subscription. | |||
<div style=" | <div style="border-left:5px solid #8b5cf6; background:#f5f3ff; padding:12px 15px; margin:0 0 18px 0; border-radius:8px; color:#4c1d95;"> | ||
'''Important:''' ChatGPT Plus or Pro is '''not required''' for FSFO AI Cabin Crew. API usage is billed separately through the OpenAI Platform. | |||
<div style=" | </div> | ||
=== Step 1: Open the OpenAI Platform === | |||
Go to: | |||
<div style="background:#f8fafc; border:1px solid #dbeafe; border-radius:10px; padding:12px 14px; margin:10px 0 18px 0; font-family:Consolas,monospace;"> | |||
https://platform.openai.com/ | |||
</div> | </div> | ||
Sign in with your OpenAI account or create one. | |||
=== | === Step 2: Add API billing or credits === | ||
Open the billing page: | |||
<div style="background:#f8fafc; border:1px solid #dbeafe; border-radius:10px; padding:12px 14px; margin:10px 0 18px 0; font-family:Consolas,monospace;"> | |||
https://platform.openai.com/settings/organization/billing/overview | |||
</div> | |||
Click '''Add payment details'''. | |||
For testing, a simple starting setup is: | |||
<div style="border | <div style="background:#f8fafc; border:1px solid #dbeafe; border-radius:10px; padding:12px 14px; margin:10px 0 18px 0; font-family:Consolas,monospace;"> | ||
Initial credit purchase: $5 or $10<br> | |||
Auto recharge: Off | |||
</div> | </div> | ||
This helps prevent surprise top-ups while you are testing the feature. | |||
<div style=" | === Step 3: Create an API key === | ||
Open the API keys page: | |||
<div style="background:#f8fafc; border:1px solid #dbeafe; border-radius:10px; padding:12px 14px; margin:10px 0 18px 0; font-family:Consolas,monospace;"> | |||
https://platform.openai.com/api-keys | |||
</div> | |||
Then: | |||
# Click '''Create new secret key'''. | |||
# Use a name like '''FSFO AI Cabin Crew'''. | |||
# Leave the default project unless you specifically use a different project. | |||
# Leave permissions at the default unless OpenAI requires otherwise. | |||
# Click '''Create secret key'''. | |||
<div style=" | <div style="border-left:5px solid #ef4444; background:#fef2f2; padding:12px 15px; margin:0 0 18px 0; border-radius:8px; color:#7f1d1d;"> | ||
'''Important security note:''' OpenAI only shows the full secret key once when it is created. Copy it immediately and keep it private. Do not post it in Discord, screenshots, forums, support tickets, or email unless trusted support explicitly tells you to. | |||
</div> | </div> | ||
=== Step 4: Add the key to FSFO === | |||
In FSFO, open the Cabin Crew Announcements page and paste the key into the '''OpenAI API Key''' field under '''AI Cabin Crew Settings'''. | |||
Then click '''Test Key'''. | |||
If the test succeeds, FSFO is ready to use OpenAI for AI cabin announcements and AI responses. | |||
=== Step 5: Enable AI Cabin Crew === | |||
At the top of the page, select '''AI Cabin Crew''' as your crew mode. | |||
After that: | |||
* Edit the AI prompt for any announcement you want to customize. | |||
* Edit AI response prompts under '''Responses''' if you want cockpit/cabin replies to be customized too. | |||
* Use the preview button to hear how the current AI-generated message sounds. | |||
== Useful Placeholders == | |||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | <div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | ||
These placeholders can be used in many TTS messages and AI prompts: | |||
{| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | {| class="wikitable" style="width:100%; margin:10px 0 26px 0; border-collapse:collapse;" | ||
! style="width: | ! style="width:220px; background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Placeholder | ||
! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | | ! style="background:#dbeafe; color:#0f172a; padding:10px; text-align:left;" | Meaning | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{flight_number}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Current flight number. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{airline}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Airline or operator name. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{origin}</code> or <code>{dep_city}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Departure airport or city. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{destination}</code> or <code>{arr_city}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Arrival airport or city. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{aircraft}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Aircraft name or code. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{cruise_altitude}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Planned cruise altitude when available. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{weather}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Arrival weather summary when available. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{time}</code> or <code>{local_time}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | Current local time text used in cabin messaging. | ||
|- | |- | ||
| style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | | | style="font-weight:700; vertical-align:top; padding:10px; background:#f8fafc;" | <code>{status_reason}</code> | ||
| style="vertical-align:top; padding:10px;" | | | style="vertical-align:top; padding:10px;" | A context-specific reason used in cabin response prompts, such as a delay reason or not-ready reason. | ||
|} | |} | ||
== Tips == | |||
<div style="height:4px; width:100%; background:#2563eb; border-radius:99px; margin:0 0 16px 0;"></div> | |||
* Start with '''Static Crew''' if you want a zero-setup experience. | |||
* Move to '''TTS Crew''' if you want full message control without API billing. | |||
* Use '''AI Cabin Crew''' if you want the most flexible and dynamic wording. | |||
* Keep one or two announcements enabled at first, test them, then expand once the timing feels right for your aircraft and procedure. | |||
* Use '''Manual Only''' for any announcement you only want to trigger from the UI or communications panel. | |||
* If you use AI, keep your OpenAI API key private and test it before flight. | |||
[[Category:FSFO]] | [[Category:FSFO]] | ||
[[Category:Settings]] | [[Category:Settings]] | ||
[[Category:User Guide]] | [[Category:User Guide]] | ||
Revision as of 20:52, 27 June 2026
This page explains the modern Cabin Crew Announcements screen in the same order it appears inside FSFO. Use it to configure automatic passenger announcements, manual callouts, and the cabin responses that are used when the cockpit or voice commands interact with the cabin crew.
Important: FSFO always controls when announcements and replies are used. Your selected crew mode controls how they sound. That means Static uses pre-recorded WAV files, TTS uses a Windows SAPI voice, and AI generates the message dynamically with OpenAI.
Crew Modes
At the top of the page, choose how FSFO should play cabin announcements and responses.
File:FSFO Announcements ModeCards.png
| Mode | What it does |
|---|---|
| Static Crew | Uses the pre-recorded cabin crew WAV files. This is the simplest option and does not require any API key. Static mode is the right choice if you want the original recorded cabin voice pack. |
| TTS Crew | Uses the text you define for each announcement and speaks it using the selected Windows SAPI voice. This is best if you want fully editable messages without using OpenAI. |
| AI Cabin Crew | Uses your OpenAI API key to generate dynamic cabin announcements and replies. FSFO still controls the flight trigger logic; OpenAI is used to generate the spoken message. |
Announcement List
The main table shows each supported announcement and its current trigger, delay, role, conditions, and actions.
File:FSFO Announcements AddAndResponses.png
Announcement Actions
| Control | What it does |
|---|---|
| Enable All | Turns the announcement system on or off globally without clearing your individual announcement settings. |
| Per-row checkbox | Enables or disables that single announcement. |
| Preview button | Plays a preview using the currently selected crew mode. Static plays the configured WAV, TTS uses the SAPI voice, and AI generates a preview message. |
| Trigger button | Opens the trigger editor so you can choose when the announcement should fire and how much delay to apply. |
| Edit button | Opens the content editor. In TTS mode, you edit the spoken message. In AI mode, you edit the AI prompt. For a custom announcement in Static mode, this becomes a WAV file browser. |
Current Announcement Set
FSFO currently supports the following primary cabin announcements on this page:
- Boarding Welcome
- Boarding Complete Call
- Doors Armed
- Departure Safety Briefing
- Service Start
- Top of Descent
- Arrival Welcome
- Cabin Secure for Landing
- Doors Disarmed
- Custom Announcement
Triggers
Most announcements can be set to automatic triggers based on flight phase, altitude, lighting, or ground movement. Others can be left as Manual Only.
Common Trigger Behavior
- Use the Trigger button on any row to open the trigger editor.
- Use Delay to wait a short time after the trigger occurs before the message plays.
- Trigger options change depending on the announcement and its phase of flight.
- Some announcements have special trigger lists instead of the normal segment-based list.
Special Trigger Notes
| Announcement | Available trigger notes |
|---|---|
| Cabin Secure for Landing | Can use approach-style triggers such as Below 15,000 ft, Below 14,000 ft, Below 13,000 ft, Below 12,000 ft, Below 11,000 ft, Below 10,000 ft, Below 9,000 ft, Below 8,000 ft, Below 7,000 ft, Below 6,000 ft, Below 5,000 ft, and Landing Lights On. |
| Arrival Welcome | Can use rollout and taxi-in triggers including Runway Exit, Landing Lights Off, Ground Speed Below 45 MPH, and Ground Speed Below 20 MPH. |
| Doors Disarmed | Uses the post-arrival trigger list: Beacon Off, Taxi Off, Engines Off, or Doors Open. The default trigger is Engines Off. |
Responses
The Responses button switches the table from passenger announcements to cabin replies. These are the messages the cabin or flight deck will use when answering intercom questions from the communications panel or from supported voice-command flows.
How Responses Work
- Static mode answers with the assigned static WAV file.
- TTS mode answers with the same cabin SAPI voice used for cabin announcements.
- AI mode generates a response using the OpenAI settings on this page.
- This keeps the response voice consistent with the mode you selected for the announcement system.
Typical Response Examples
- Boarding request approved or standby
- Boarding complete acknowledged
- Cabin ready for takeoff
- Cabin ready for landing
- Cabin service approved or delayed
- Flight deck requests such as coffee or cockpit-door cover
Editing Responses
- Click Responses to switch the grid.
- Use the Preview button to hear the current reply.
- Use the Edit button to change the TTS text or AI prompt.
- Placeholders such as
{flight_number},{dep_city},{arr_city},{weather},{time},{local_time}, and{status_reason}can be used where supported.
Custom Announcements
Use + Add Announcement to create one custom cabin announcement in the list.
Custom Announcement Workflow
- Click + Add Announcement.
- Enter a name, trigger, delay, voice role, and conditions.
- Save the announcement.
- Use the pencil icon after saving to edit the content.
Custom Announcement Content by Mode
| Mode | What you edit |
|---|---|
| Static Crew | Instead of editing a TTS message, the editor lets you browse to a WAV file. FSFO will play that file whenever the custom announcement is triggered. |
| TTS Crew | You edit the exact message FSFO will speak with the selected SAPI voice. |
| AI Cabin Crew | You edit the prompt FSFO sends to OpenAI so the AI can generate the final spoken announcement. |
Static, TTS, and AI Settings
The lower cards control the sound source and generation settings for each mode.
Static Crew Settings
- Output Device chooses where static cabin WAV files play.
- Voice Pack Region selects the recorded cabin voice pack or accent pack.
- Static crew settings are saved with the cabin crew voice configuration used by the attendant system.
TTS Crew Settings
- TTS Voice chooses the Windows SAPI voice used for cabin announcements and responses.
- The message-variable chips remind you which placeholders can be used in TTS messages.
- TTS is best when you want editable content without API billing.
AI Cabin Crew Settings
- OpenAI API Key stores the API key FSFO uses for AI generation.
- Test Key verifies that the entered key works before you rely on it in flight.
- AI Style changes the tone or style target for generated announcements.
- Voice Output selects the AI voice style for generated playback.
- Creativity adjusts how conservative or creative the AI output should be.
- Message Length helps constrain the size of generated announcements.
- Global AI Prompt adds a reusable instruction that is applied to all AI-generated announcements.
AI Cabin Crew Setup
FSFO AI Cabin Crew requires an OpenAI API key. This is not the same thing as a normal ChatGPT subscription.
Important: ChatGPT Plus or Pro is not required for FSFO AI Cabin Crew. API usage is billed separately through the OpenAI Platform.
Step 1: Open the OpenAI Platform
Go to:
Sign in with your OpenAI account or create one.
Step 2: Add API billing or credits
Open the billing page:
Click Add payment details.
For testing, a simple starting setup is:
Initial credit purchase: $5 or $10
Auto recharge: Off
This helps prevent surprise top-ups while you are testing the feature.
Step 3: Create an API key
Open the API keys page:
Then:
- Click Create new secret key.
- Use a name like FSFO AI Cabin Crew.
- Leave the default project unless you specifically use a different project.
- Leave permissions at the default unless OpenAI requires otherwise.
- Click Create secret key.
Important security note: OpenAI only shows the full secret key once when it is created. Copy it immediately and keep it private. Do not post it in Discord, screenshots, forums, support tickets, or email unless trusted support explicitly tells you to.
Step 4: Add the key to FSFO
In FSFO, open the Cabin Crew Announcements page and paste the key into the OpenAI API Key field under AI Cabin Crew Settings.
Then click Test Key.
If the test succeeds, FSFO is ready to use OpenAI for AI cabin announcements and AI responses.
Step 5: Enable AI Cabin Crew
At the top of the page, select AI Cabin Crew as your crew mode.
After that:
- Edit the AI prompt for any announcement you want to customize.
- Edit AI response prompts under Responses if you want cockpit/cabin replies to be customized too.
- Use the preview button to hear how the current AI-generated message sounds.
Useful Placeholders
These placeholders can be used in many TTS messages and AI prompts:
| Placeholder | Meaning |
|---|---|
{flight_number}
|
Current flight number. |
{airline}
|
Airline or operator name. |
{origin} or {dep_city}
|
Departure airport or city. |
{destination} or {arr_city}
|
Arrival airport or city. |
{aircraft}
|
Aircraft name or code. |
{cruise_altitude}
|
Planned cruise altitude when available. |
{weather}
|
Arrival weather summary when available. |
{time} or {local_time}
|
Current local time text used in cabin messaging. |
{status_reason}
|
A context-specific reason used in cabin response prompts, such as a delay reason or not-ready reason. |
Tips
- Start with Static Crew if you want a zero-setup experience.
- Move to TTS Crew if you want full message control without API billing.
- Use AI Cabin Crew if you want the most flexible and dynamic wording.
- Keep one or two announcements enabled at first, test them, then expand once the timing feels right for your aircraft and procedure.
- Use Manual Only for any announcement you only want to trigger from the UI or communications panel.
- If you use AI, keep your OpenAI API key private and test it before flight.
