Commentary

The Commentary page brings your iRacing sessions to life with AI-generated, real-time voice commentary powered by ElevenLabs text-to-speech. A full broadcast crew of up to five distinct voice roles — Crew Chief, Spotter, Sportscaster 1, Sportscaster 2, and Pit Reporter — reacts to on-track events as they happen, alongside a sixth MAIRA voice that speaks the app’s own status announcements.

This feature requires an ElevenLabs account and a valid API key. See the Account section below for setup instructions.

Note: Currently only the MAIRA and Spotter roles are shipped and visible in the app — these are the only roster slots and sections you will see on the page. The Crew Chief, Sportscaster 1, Sportscaster 2, and Pit Reporter roles are still in development and are not yet available, so their roster slots and sections are hidden for now. They are described below so you know what is coming, but you cannot use them yet.

Master

Enabled

Master on/off switch for the entire Commentary system. When off, no voices will speak and no ElevenLabs API calls will be made, even if individual roles are enabled.

Default: OFF

Language

Selects the language used for all generated commentary phrases. MAIRA ships with phrase templates for 36 languages. Changing this setting takes effect immediately — no restart required.

Default: English (US)

Master volume

Global volume multiplier applied on top of each individual voice slot’s own volume setting.

Default: 85%

Account

MAIRA uses the ElevenLabs API to generate speech. You need a free or paid ElevenLabs account and an API key to use this feature.

Step 1 — Create an ElevenLabs account

  1. Go to elevenlabs.io and click Sign Up.
  2. Complete registration (email or Google/GitHub login).
  3. Verify your email address if prompted.

The free tier gives you a limited number of characters per month. Because MAIRA caches generated audio to disk, repeated phrases (especially common spotter calls like “car left” and “clear”) are played back from cache without consuming any additional API characters. The Spotter’s phrase set is small and repetitive by nature, so the cache fills up quickly and very few new API characters are consumed after the first session. This means the free tier is more than sufficient for the vast majority of MAIRA users who just want the Spotter. The sportscaster and crew chief roles — when they become available — will produce a much wider variety of unique phrases, so a paid plan may be worth considering at that point.

Step 2 — Create an API key

  1. Log in and click your profile icon (bottom-left), then choose Profile + API key.
  2. Under the API keys section, click Create API key.
  3. Give it a name (e.g. “MAIRA”) and click Create.
  4. Copy the key — you will only see it once.

Step 3 — Required API key permissions

MAIRA needs the following permissions to function correctly. When creating your API key, make sure all four of these are enabled:

  • Voices — read (so MAIRA can populate the voice picker)
  • Models — Read (so MAIRA can populate the model picker)
  • Text-to-Speech (so MAIRA can generate speech)
  • User — read (so MAIRA can display your subscription usage)

Step 4 — Enter your API key in MAIRA

  1. Paste your API key into the API key field on this page.
  2. Click the Verify key button. MAIRA will check all four required permissions and report the result.
  3. If verification passes, the voice and model pickers will populate automatically.

Your API key is stored encrypted on your PC using Windows DPAPI (Data Protection API). It is never written to MAIRA’s settings file in plain text and never leaves your machine except to reach the ElevenLabs API.

Model

Selects the ElevenLabs speech model used for all voice slots. Different models offer different trade-offs between speed, quality, and cost (characters per API call).

The Eleven v3 model is strongly recommended. It is the only model that supports emotion cues — the expressive tags embedded in MAIRA’s phrase templates (such as [excitedly], [urgently], and [seriously]) that give each voice role its personality. Without v3, those cues are ignored and the delivery will be noticeably flatter. The free tier is sufficient for Spotter-only use with the v3 model.

Default: Eleven v3 (recommended — required for emotion cue support)

Beneath the model selector, MAIRA displays a single Usage progress bar showing your ElevenLabs subscription usage — the characters consumed so far in the current billing period against your plan’s limit — so you can keep an eye on your quota.

If ElevenLabs rejects a voice request — for example a voice that is only available on a paid plan, or a monthly quota that has run out — MAIRA now shows the reason in orange text directly beneath the Usage bar. When commentary stays silent, look here first: the message includes the response code and ElevenLabs’ own explanation, so you know exactly what needs fixing. The notice clears automatically the next time a voice plays successfully.

Voice roster

The Voice roster is designed around six role slots, each representing a different on-air personality. You can assign any ElevenLabs voice to a slot, tune the voice parameters independently, and enable or disable each role separately.

Currently only the MAIRA and Spotter slots are shown in the app. The Crew Chief, Sportscaster 1, Sportscaster 2, and Pit Reporter slots are still in development and are hidden for now — they are listed below so you know what each role will do, but you cannot assign or use them yet.

The six roles are:

  • MAIRA — The app’s own system voice. Clear, calm, and consistent. Speaks MAIRA’s own status announcements rather than race commentary — for example when crash protection or curb protection kicks in. Listed first in the UI.
  • Crew Chief (not yet available) — Tactical, authoritative, calm. Speaks directly to you about your own car: fuel warnings, tire warnings, pit window, incidents.
  • Spotter — Clipped, fast, safety-critical. Calls proximity (car left / car right / clear) and flag conditions in real time.
  • Sportscaster 1 (not yet available) — Warm, theatrical, lead play-by-play. Calls session starts/ends, overtakes, and fastest laps.
  • Sportscaster 2 (not yet available) — Analytical, measured, colour commentary. Calls overtakes for other drivers, close battles, and caution flags.
  • Pit Reporter (not yet available) — Energetic, on-the-ground, breathless. Calls pit stop entries and exits for other cars in the field.

Each slot expands to show the following settings:

Voice

Selects the ElevenLabs voice assigned to this role. The list is populated from your ElevenLabs account and includes all voices available to you — both ElevenLabs stock voices and any custom voices you have created. See the section below on creating your own custom voice.

Consistency

Controls how consistent the voice sounds from phrase to phrase (ElevenLabs “Stability” parameter). Higher values make the voice more predictable and uniform. Lower values allow more natural variation and expressiveness between takes, but can occasionally produce unexpected results.

Dramatic

Controls how much the voice exaggerates emotion and delivery (ElevenLabs “Style Exaggeration” parameter). Higher values produce a more theatrical, punchy performance. Lower values give a flatter, more neutral delivery.

Similarity boost

Controls how closely the output sticks to the original trained voice sample. Higher values hew more tightly to the voice’s characteristic timbre. Lower values give the model more freedom to vary the delivery.

Slot volume

Per-slot volume level. This is multiplied with the Master volume to produce the final playback level for this role.

Default: 100%

Enabled

Enables or disables this individual voice slot. When a slot is disabled, no API calls are made for it and it will not speak even if the Master switch is on.

Speaker boost

Enables ElevenLabs speaker-boost processing on this slot. Can improve clarity and presence for some voices. Not all models support this option.

Test Voice

Sends a short test phrase to ElevenLabs using the current voice and parameter settings for this slot so you can audition it without needing to be in a race session. The master switch and this slot must both be enabled for the button to be active.

Creating Your Own Custom Voice

ElevenLabs lets you clone or design your own voices using their Voice Design (AI-generated) or Voice Clone (from recordings) tools — both are accessible from your ElevenLabs account under Voices → Add Voice.

Once you create a custom voice in your ElevenLabs account it will appear automatically in MAIRA’s voice picker the next time you open the page (or re-verify your key).

Example: Creating a NASCAR-style spotter voice

Go to Voices → Add Voice → Voice Design in ElevenLabs and paste in a prompt like this:

A NASCAR spotter with a thick Southern American accent — Tennessee or Alabama. Male voice, mid-thirties. Talks fast, punchy, and direct. Short clipped sentences. Alert and focused, never slow. The kind of voice that has called a thousand races from a spotter’s stand at Talladega. Slightly gravelly, confident, with just a hint of urgency always in the background.

You can experiment with the accent, age, and personality description until you get something you like. Generate a few previews and pick the best one, then save it to your Voice Library. It will show up in MAIRA’s voice picker right away.

Some tips for a great spotter or crew chief voice:

  • Short, punchy sentences work better with a fast-talking voice than long flowing ones.
  • Set Consistency high (80–95%) for the Spotter slot — you want it to sound exactly the same every time it calls “car left.”
  • Set Dramatic lower (10–20%) for the Spotter — over-exaggerated delivery on a safety call sounds strange.
  • Sportscaster voices benefit from a lower Consistency (30–50%) and higher Dramatic (60–80%) to give more natural, varied energy across play-by-play calls.

Spotter commentary

Controls the real-time spotter calls made by the Spotter voice slot.

Proximity calls

Enables proximity calls — “car left”, “car right”, “car on both sides”, and “clear” — whenever another car is alongside you on track. These calls are made in real time every tick while a car is present, with a configurable reminder interval to avoid repeating the same call too rapidly.

This is not a single on/off toggle. Instead you get three independent switches, one for each session phase, so you can decide exactly when the spotter calls proximity:

  • Practice — proximity calls during practice sessions.
  • Qualifying — proximity calls during qualifying sessions.
  • Race — proximity calls during race sessions.

Default: Practice ON, Qualifying ON, Race ON

Flag calls

Enables the spotter to announce flag conditions such as caution flags and green flag restarts.

Like Proximity calls, this is not a single on/off toggle — it is three independent per-phase switches:

  • Practice — flag calls during practice sessions.
  • Qualifying — flag calls during qualifying sessions.
  • Race — flag calls during race sessions.

Default: Practice ON, Qualifying ON, Race ON

Car proximity reminder interval

How often (in seconds) the spotter will repeat a proximity call while a car remains alongside you. Setting this lower makes the spotter more insistent; higher makes it more relaxed.

Default: 3.0 seconds

Commentary phrases

This section is a phrase editor that lets you customize the exact things MAIRA can say. For each on-track event, MAIRA keeps a list of phrases and picks one at random when the event fires. Here you can read those phrases, edit them, add your own, remove ones you don’t like, and turn whole groups off. Edits are made in the currently selected Language (from the Master section) and are saved to your Documents folder, where they override the built-in phrases.

Search…

Type here to filter the list of event groups below. Only the groups whose event key matches what you type remain shown, which makes it easy to jump to a specific call in a long list.

Event groups

The phrases are organized into expandable groups, one per event key (for example the different spotter proximity and flag calls). Click a group to expand it and reveal that event’s Enable switch, its list of phrases, and the buttons for adding, removing, and resetting phrases.

Enabled (per group)

Each event group has its own Enable switch. Turn it off to stop MAIRA from ever using that group of phrases in live commentary, even when the event itself occurs. Groups you switch off are remembered between sessions; every group is enabled by default.

Default: ON (every group enabled)

Phrase list

Inside each group is the list of phrases MAIRA can say for that event. Edit any phrase directly in its text box — your change is saved when the box loses focus. Each phrase row also has two buttons:

  • Test — sends this single phrase to ElevenLabs and plays it back, so you can hear exactly how it will sound with the current voice and language.
  • Remove (−) — deletes this phrase from the group.

Add phrase

Adds a new, empty phrase to the group so you can type your own line for that event. You can use the same emotion cue tags (such as [excitedly] or [urgently]) that the built-in phrases use when the Eleven v3 model is selected.

Reset

Restores just this event group’s phrases back to MAIRA’s built-in set for the current language, discarding any edits, additions, or removals you made to that group.

How Commentary Works

MAIRA monitors iRacing telemetry every frame and fires commentary events when specific on-track situations occur. Each event type has an independent cooldown timer to prevent the same call from triggering too frequently. When an event fires, MAIRA picks a random phrase from its built-in template library (available in 36 languages), substitutes in the relevant driver names, positions, and lap times, and sends the text to ElevenLabs.

Generated audio is cached to disk so that repeated phrases (especially common spotter calls) are played back instantly from cache without making another API call. The cache lives in:

Documents\MarvinsAIRA Refactored\TTS\Cache\


Previous page: Captions

Next page: Sounds