Skip to content

Race Engineer Voices

The Race Engineer speaks with a voice pack — a folder of recorded lines that iRaceDeck plays during a session, plus a callout script for each voice that says how those lines are put together. iRaceDeck comes with its own, and you can add more — downloaded from iRaceDeck itself, or installed by hand.

Voice packs live outside the plugin folder, in your own AppData directory:

%LOCALAPPDATA%\iRaceDeck\Race Engineer\Voices\

That location matters: because packs are not inside the plugin, updating or reinstalling iRaceDeck never removes them. Install a voice once and it stays until you delete it.

The folder is shared by all three iRaceDeck plugins. If you use a Stream Deck and a Mirabox on the same PC, they read the same voices — you never download or store the same pack twice.

Open iRaceDeck Settings from any action’s Property Inspector, go to the Race Engineer section, and pick from the Race Engineer Voice dropdown. Every installed voice appears there, under the name its pack gave it. The change takes effect on the next callout — there is no need to restart anything.

Some voices are listed with their pack’s name in front, as Pack: Voice. That happens when the voice’s name alone could be ambiguous — a pack providing more than one voice, or a pack whose own name differs from its voice’s. A pack that provides a single voice with a matching name is listed by that name alone. The rule depends only on the pack itself, so installing another pack never renames a voice you have already chosen.

Installed Voices just below the dropdown lists every pack iRaceDeck has loaded, with its version and where it came from — Built-in for the voice that ships with iRaceDeck itself, Downloaded for one from iRaceDeck’s own catalog, and Installed by hand for one you placed in the folder yourself. Anything in the folder that iRaceDeck could not load is listed underneath, with the reason — so a pack that is present but silent tells you why without you going looking for it.

The built-in voice is listed like any other pack, but has no Remove button: it comes with iRaceDeck and stays available whatever is in the folder, so there is nothing to remove. The row reads Included with the plugin in place of the button.

A voice is more than its recordings. Beside the clips, each voice in a pack carries a callout script — the file voice/<voice>/callouts.json inside the pack — and that script is what turns the recordings into callouts. It decides the wording of every line, the order its pieces are spoken in, and which callouts the voice makes at all. A pack can phrase a call its own way, reorder the pieces of a lap time or drop its lead-in, or leave a callout out altogether — and one it leaves out simply stays quiet in that voice, without affecting any other callout or any other voice.

What a pack can never change is when a callout fires and what it may interrupt. The moment the engineer speaks up, how often he is allowed to repeat himself, and which calls take priority over which stay with iRaceDeck, the same for every voice — so a pack can never have the engineer talk over a flag, or nag you more often than he should. The script only says what he says, never whether.

Every callout comes from the script. Flags, pit service and the readback, the start lights, position and gap readouts, lap times, incidents, the spotter — each one is a line in the voice’s callouts.json, so a pack decides the wording of all of them, and the radio frame around them, from the same file. A voice with no script therefore has nothing to say: it loads, it can be selected, and it stays quiet, with the banner below telling you why.

A pack that ships a voice without a script — one built before scripts existed, or one whose script file went missing — still loads. The voice is listed under Installed Voices and you can select it, but every callout is skipped in it — the script is where every callout comes from — so the engineer goes quiet. While a scriptless voice is the one selected, a banner at the top of the Settings window and of every key’s Property Inspector names it and says what to do: reinstall the pack, or pick another voice. The banner clears by itself as soon as the selected voice has a script.

If you build packs, the script is an ordinary JSON file that references iRaceDeck’s own vocabulary of callouts, conditions and spoken values by name. The Voice Packs section is written for you: what a pack can and cannot change, the format of the script, a tutorial that ends with your own voice playing three callouts, and reference pages — generated from iRaceDeck’s code and its bundled pack — listing every callout, everything a script may name, and every line a full pack records.

iRaceDeck publishes its own voice packs and can download and install one for you — no folder to find, no archive to extract.

Open iRaceDeck Settings, go to the Race Engineer section, and look under Voices. Alongside the packs you already have, iRaceDeck lists any pack from its own catalog that you don’t, each with an Install button — or Update, once a newer version of a pack you already have has been published. Press it, and iRaceDeck downloads, verifies, and installs the pack for you.

The download can happen while iRacing is running, including mid-race — iRaceDeck never opens a window to ask about it or report on it. Progress appears in the Voices section of the Settings window, if you happen to have it open. If you do not, the download is silent by design: the pack is simply there next time you look, and the Race Engineer keeps using whatever voice you already had until the new one is ready. Nothing interrupts a session to tell you about it.

If iRaceDeck can’t reach the catalog — no connection, or a bad one — nothing already installed is affected. Every voice you have keeps working exactly as before; iRaceDeck just has nothing new to offer until it can check again.

A downloaded pack is verified against a checksum before it replaces anything, so a corrupted or incomplete download is discarded rather than installed. A pack you no longer want can be removed from the same Voices section — every pack except the built-in voice, which has no Remove button.

The list of packs available to download shows only what you do not already have. Once a pack is installed it moves to Installed Voices and leaves that list, so a pack never appears twice. When you have every voice iRaceDeck publishes, the section says so rather than sitting empty.

Not every voice pack comes from iRaceDeck’s catalog — a pack someone shared with you directly, or one you built yourself, still installs the way voice packs always could. Voice packs are ordinary folders, so you can install one yourself:

  1. Open %LOCALAPPDATA%\iRaceDeck\Race Engineer\Voices\ — paste that path into the File Explorer address bar. Create the folders if they do not exist yet.
  2. Put the pack’s folder inside it. The folder must contain a voice-pack.json file and the pack’s audio — and, for each voice, its callout script at voice/<voice>/callouts.json, or that voice loads without one (see What a Voice Pack Decides).
  3. In iRaceDeck Settings, press Rescan voices.

The new voice appears in the dropdown immediately. You do not need to restart the deck software.

The folder name must match the pack’s own name — if a pack calls itself luca, its folder has to be luca. A pack whose folder has been renamed is ignored, because iRaceDeck would then have two different names for the same thing.

If you rescan and the voice does not appear, iRaceDeck ignored the pack — and it says so: the pack is listed under Installed Voices with the reason beside it. The same reason is written to the plugin log, at the normal logging level, so you do not need to turn anything on to find it there either. The usual causes:

  • No voice-pack.json — the folder is not a voice pack, or you copied the audio without the file that describes it.
  • voice-pack.json could not be read — the file is there, but something is holding it open or blocking access: a cloud-sync client still uploading it, an antivirus scanner, or a folder your account cannot read. The error code is shown with the message. Wait for the sync to finish, or check the folder’s permissions, then rescan.
  • The folder name does not match the pack’s name — rename the folder to match.
  • No audio in the pack — the pack declares a voice but ships no clips for it.
  • Clips iRaceDeck cannot play — the pack has audio under the voice, but not where iRaceDeck looks for it. Clips must sit at voice/<voice>/<group>/<name>.mp3 — one folder per group inside the voice folder — and the extension must be lowercase .mp3. A pack whose files are one level too shallow, or exported as .MP3, is refused with this reason rather than installing and then saying nothing.
  • A voice’s callout script is brokenvoice/<voice>/callouts.json is there but is not valid JSON, is not a script iRaceDeck can read, or could not be opened. That one voice is left out and the reason names the file and the place in it that failed; the pack’s other voices still load. A voice with no script file at all is not an error — it loads, and simply skips the callouts its script would have given it, as described under What a Voice Pack Decides.
  • Another pack already provides that voice — two packs cannot both supply the same voice. The one that comes first alphabetically wins and the other is ignored; rename or remove one of them.
  • iRaceDeck already includes that voice — a pack cannot take over a voice that comes with the plugin. The included one always wins.

Anyone can build a voice pack, and iRaceDeck will load one you install by hand.

A third-party pack is its author’s, not ours. It is distributed by whoever made it, on their terms; iRaceDeck has nothing to do with it beyond being able to play it. We do not host it, endorse it, verify it, or support it, and installing one is between you and its author — trust it the way you would trust any other file you choose to download. If you make a pack, it stays yours, and it is on you to have the right to distribute the voice in it.

There is no submission process for iRaceDeck’s own catalog — it lists only the packs we publish ourselves, and a third-party pack reaches you by sideload, never by appearing there.