Audio

Wwise Audio

When the dialogue already lives in a Wwise project, this path queues one job per Wwise Sound and solves each from the media Wwise's own conversion produced — not the source WAV. What ships in the game is what drives the face.

Pipeline stages

Resolve over WAAPIAt queue time
->
Transcode.wem -> WAV
->
Audio SolveVoice -> controls
->
Export Outputs
->
Save Assets

The first two stages run when you add the jobs, not when the batch starts. Enumerating over WAAPI and transcoding up front means an unconvertible sound is reported now, by name, instead of failing deep inside a batch hours later. From the solve onwards it is an ordinary audio job.

Required setup

Requirement Notes
UE 5.8 Audio solves use 5.8-only Performance APIs. On earlier engines an audio job fails immediately with a version message.
Wwise Authoring running, WAAPI enabled WwiseConsole's waapi-server works too. Both serve HTTP on port 8090 by default.
PCM conversions Vorbis, Opus, and ADPCM need the Wwise sound engine to decode. Those sounds are reported by name instead of queued — set the conversion to PCM for the platform you are solving from.
Wwise Unreal plugin (optional) Only needed for the event track on exported Level Sequences. Everything else works without it — no Wwise SDK is linked, and WAAPI is plain HTTP/JSON.

Queueing the sounds

Open Add Jobs..., pick the Audio source, then the Wwise sub-source. Refresh re-checks the WAAPI connection and lists the Sounds under the container; the platform and language pickers are populated from the platforms and languages the open Wwise project actually defines, so there is nothing to type.

Field What it does
Wwise container Object path of the work unit, folder, or actor-mixer holding the dialogue, e.g. \Containers\Dialogue. Every Sound beneath it becomes one job. Pre-filled from Global Settings.
Platform Which platform's converted media to resolve. Defaults to Windows.
Language Which language to resolve for Voice sounds. Defaults to English(US).

The endpoint and the default container live under Wwise in Global Settings. Sounds already in the queue are skipped, so re-running against a container after adding new dialogue queues only what is new.

What the plugin touches

Nothing Wwise owns is copied into the content tree. Each Sound's converted .wem is repacked as a standard WAV under Saved/MHAManager/WwiseAudio and imported transiently for the solve — Wwise's media is already RIFF, but its header carries a Wwise-private extension and extra chunks the engine's importer rejects, so the PCM payload is rewritten behind a plain 44-byte header.

Outputs land in a Wwise subfolder of the output base. Wwise take names are the sound designer's, not the shoot's, so they can collide with a local WAV of the same name — and two jobs sharing an output path means the second silently adopts the first's Performance.

Exported Level Sequences

A Wwise-sourced job's exported Level Sequence carries a Wwise event track rather than a sound wave track, so the cinematic plays its dialogue through the sound engine instead of a copied WAV. The track is resolved by reflection, so a project without the Wwise Unreal plugin simply skips it and says so in the job's warnings — nothing fails.

If the named event asset does not exist yet, generate SoundBanks and reconcile the Wwise assets in Unreal first; the event track needs a real AkAudioEvent asset to bind.

Silent Level Sequences: the Wwise integration is often installed with Unreal's own audio device disabled. In that mode every USoundWave is silent — including the sound wave track Epic writes onto an exported Level Sequence — so a perfectly exported audio cinematic plays nothing. The plugin detects this and records a warning on the job. The fix is Project Settings > Wwise > Integration Settings > Unreal Audio Routing set to "Both Wwise and Unreal audio", followed by an editor restart. There is no console command for it.

Driving it from a script

The same enumeration is available as an MCP tool, add_wwise_audio_jobs, which takes the container path, WAAPI endpoint, platform, and language, and returns the queued job ids plus the names of any sounds it could not convert. See MCP Toolset.