Skip to the content.

Generated Announcements

⚠️ EXPERIMENTAL FEATURE ⚠️

🧪 This is an advanced, experimental feature that I’m releasing early for feedback and ideas.

🔬 While fully functional, it may have unexpected behaviors or limitations. Your feedback will help shape its development!

💡 Pro tip: If you’re new to the app, consider getting familiar with the basic features first.

TL;DR Summary

🎯 Use free Azure or ElevenLabs Text To Speech (TTS) to generate fully compatible sound files on the fly using your dynamic flight info

Important Note

💡 Continue to use existing sound packs like normal - reality is best, but…

This feature doesn’t replace your existing high-quality airline sound packs. It’s designed to fill in the gaps when you don’t have custom audio for specific announcements or airlines. Maybe you don’t want to use English files all the time etc. Use real recordings when available, but let this TTS handle the rest!

Why This Feature is Amazing

The Generated TTS feature is pretty interesting because:

Overview

The Generated TTS feature automatically synthesizes missing airline announcements using Azure or ElevenLabs (will add more providers next) Text-to-Speech, providing a seamless fallback before default audio is used. This ensures your passengers always hear appropriate announcements, even when custom audio files are missing.

Setting up a TTS Provider

So far we have Azure (free for 8 hours) or ElevenLabs (a limited free plan, 20 mins on Flash, although paid for voice clone/customization). Here’s how to set up, as you’ll need one of them work to use this feature:

Getting Started with Azure TTS

To use this feature, you’ll need to set up an Azure Text-to-Speech API key. I’ve found two excellent step-by-step guides that walk you through the entire process:

Important: You’ll need both your API Key and your Azure Region/Location for the app to work properly. Make sure to note both values when setting up your Azure Speech service.

Getting Started with ElevenLabs TTS

You can sign up for a free key and try out these voices. A paid plan allows you to clone your voice and do all sorts of weird and wonderful things. There are free voices to use as well but limited compared to Azure.

Here’s a short guide on how to get your API key: ElevenLabs API Key

..or to create an API key you can go here once you have an account: https://elevenlabs.io/app/settings/api-keys

IMPORTANT If you restrict the API key you’ll need the follow permissions on it for this to work:

Models See the ElevenLabs documentation on the best model to use. Flash is cheaper than MultiLang for example but reduced quality. In this app’s case it doesn’t really matter about super low latency.

How It All Works

Source Text Priority

The system follows this lookup order to find announcement text to say:

  1. Airline-specific: example: Airline/BoardingWelcome.txt (highest priority, an override used per airline, manually edit)
  2. Global default: example: Default/SafetyBriefing.txt next priority if no airline one found (you can edit this in the app and it’ll save your version in your Default folder)
  3. Built-in template: Automatically copied to the airline folder on first use

Output and Storage

Generated announcements are saved as .ogg files alongside their corresponding .txt files in the airline folder. Once created, these files are reused automatically on subsequent flights, eliminating the need for repeated API calls.

To regenerate an announcement: Simply edit the .txt file and delete or rename the associated .ogg file.

Performance and Reliability

Example Use Case 1: Virtual Airline Setup - On the Fly Generated

Let’s walk through setting up a virtual airline that doesn’t have a sound pack yet and you want to generate the sound files as you go on a flight:

Step-by-Step Setup

  1. Create Airline Folder: Create an XYZ folder in your sound packs directory for your virtual ‘XYZ Airlines’
  2. Pick a Voice: In the new Settings / Generated tab choose the nationality and accent that works best for the airline, over 100 to choose from. Remember the ‘Test Voice’ uses your free credits, but you can select an existing announcement and try it out first. The generation uses the last one selected.
  3. Set Up Flight: File a SimBrief plan or set a callsign in MSFS with XYZ 123 as your flight id
  4. Automatic Generation: The new announcements will be generated and play with your flight info, automatically saving .ogg sound files as it goes
  5. Add Music: You’ll still need your own BoardingMusic.ogg - go hunt for some disco or something classy to use! 🕺
  6. Customize Your Airline:
    • Rename the generated files to match your preferences, e.g. AfterTakeoff[1].ogg to keep ‘sets’ of numbered files together.
    • Create airline-specific text files like BoardingWelcome.txt in your airline folder - remember it doesn’t have to be in English anymore or use an English accent voice. The TTS works great across accents and languages.

Pro tip: If you only have the .txt file (and no .ogg), the system will read it and generate the audio on demand

Example Use Case 2: Virtual Airline Setup - Pregenerated

Here’s the steps for setting up a series of announcements up front before you fly:

Step-by-Step Setup

  1. Create the airline folder
    • In your sound packs, create XYZ (e.g., ...\Announcements\XYZ).
  2. Open Settings → Generated
    • Pick your TTS voice (you can use Test Voice to hear it first).
  3. Select the target airline
    • Set the Airline dropdown to XYZ (not Default). The Generate buttons will enable.
  4. Pick a template
    • In the left template list, choose (for example) BoardingWelcome. Items in bold/green already have a matching .ogg in the selected airline.
  5. Edit the text (optional)
    • Use the right editor to customize. You can use placeholders like {AIRLINE_NAME}, {ORIGIN_CODE}, {DESTINATION_NAME}, {AIRCRAFT_NAME}, {TIME_OF_DAY}.
  6. Save the text to the airline folder
    • Click “Save txt”. This writes XYZ\BoardingWelcome.txt (you’ll be asked to overwrite if it already exists).
  7. Generate the audio
    • Click “Generate” to create XYZ\BoardingWelcome.ogg, or
    • Click “Generate As..” to enter a different filename (e.g., BoardingWelcome[1].ogg) before saving.
    • Success is confirmed; the template list will refresh highlighting for files that now exist.
  8. Preview and use
    • Switch to Sound Files to preview; the new .ogg appears under XYZ.
    • At runtime, the app will just play your pre‑generated .ogg (no TTS call needed).

Tips

Multi-Lingual Announcements

It is fine to put two or more languages in a single announcement, but on Azure they will work better if you use a ‘Multilingual’ type voice. This example shows such a voice (language-Country-Name+MultilingualNeural) in use with English and Cantonese:

Picked Files

Configuration

Access the Generated TTS settings in Settings → Generated:

💡 If the voices seem too ‘clean’ you can use the new ‘Audio’ tab ‘PA Audio Mix’ setting

This feature simulates the audio pattern of a PA system, with a few presets on how light or heavy. The generated voices will use this if this option is turned on (it is off by default)

Testing Your Setup

Use the “Test Voice” button to verify your configuration:

Template Management

Built-in Templates

The template editor displays all available built-in announcement templates. Select any template to load its content for editing.

Template Actions

Available Placeholders

Enhance your announcements with dynamic content using these placeholders, so you can place these in the text:

Placeholder Description
{AIRLINE_CODE} Airline ICAO code (e.g., DAL)
{AIRLINE_NAME} Airline name (e.g., Delta Air Lines)
{ORIGIN_CODE} Origin airport ICAO code (e.g., KLAS)
{ORIGIN_NAME} Origin airport name (e.g., Harry Reid International)
{ORIGIN_CITY} Origin city/municipality (e.g., Las Vegas)
{ORIGIN_FULLNAME} Origin full name (e.g., Harry Reid International, Las Vegas)
{DESTINATION_CODE} Destination airport ICAO code (e.g., KJFK)
{DESTINATION_NAME} Destination airport name (e.g., John F. Kennedy International)
{DESTINATION_CITY} Destination city/municipality (e.g., New York)
{DESTINATION_FULLNAME} Destination full name (e.g., John F. Kennedy International, New York)
{AIRCRAFT_CODE} Aircraft type ICAO code (e.g., A320)
{AIRCRAFT_NAME} Aircraft type name (e.g., Airbus A320)
{TIME_OF_DAY} Morning, Afternoon, or Evening (based on local sim time)

Notes:

Example valid txt entry: “Ladies and gentlemen, good {TIME_OF_DAY}. Welcome on board our {AIRLINE_NAME} flight to {DESTINATION_FULLNAME}, on this {AIRCRAFT_NAME} aircraft. Our {ORIGIN_CITY} based crew is pleased to be with you.”

Best Practices


Note: This feature provides a robust solution for missing announcements while maintaining the authentic airline experience your passengers expect.