tutorial · 2026-02-26
What Is a DialogueVoice Asset in UE5 and How Do You Use One?
A practical guide to UE5's DialogueVoice asset, how it differs from a raw SoundWave, and how to wire one up as an NPC speaker.
DialogueVoice versus a raw SoundWave
If you have searched for how to use an Unreal Engine DialogueVoice asset, the first thing worth clearing up is that a DialogueVoice is not a clip of audio. A USoundWave is the actual recording — the PCM samples Unreal plays back. A DialogueVoice (the DV_ assets you see in the Content Browser) is a lightweight descriptor that represents a speaker: it carries metadata such as the character's gender and locale, and it is the thing UE's built-in Dialogue system treats as the entity doing the talking.
In other words, the SoundWave is what is said and the DialogueVoice is who says it. You pair a DialogueVoice (the speaker) with one or more SoundWaves (the lines) inside a Dialogue Wave, and Unreal uses the speaker's locale and gender to pick the correct localised take and to drive subtitle and context routing. This separation is why the native system scales to localisation: swap the locale, and the same dialogue structure resolves to a different recording without you rewiring anything.
The Fantasy NPC Voices complete pack ships 21 DialogueVoice assets, one per character archetype, named with the DV_ prefix (for example DV_Old_Wizard_Male). Each one is pre-configured so you can drop it straight into UE's native dialogue flow rather than authoring DialogueVoice descriptors by hand for an entire cast.
Gender and locale configuration
Every DialogueVoice exposes two fields that matter: a gender enumeration and a set of supported locales. Open any DV_ asset in the editor and you can read and set these directly. In the Fantasy NPC Voices pack each DV is already configured with the gender and locale appropriate to that archetype, so a male war-god voice and a female witch voice carry the right metadata out of the box.
Gender exists because some languages inflect dialogue differently depending on the speaker's gender; Unreal's Dialogue Wave editor can resolve a different line for a male versus female speaker of the same role. Locale is the localisation key: when you add a recording to a Dialogue Wave, you associate it with one or more locales, and the engine matches against the playing project's culture to choose the take. If you only ship a single language, you can leave a single locale configured and the system simply always resolves to it.
The practical upshot is that you rarely need to edit these DialogueVoice assets at all. They are reference data. You point your Dialogue Waves at the supplied DV_ speaker, and the gender and locale travel with it.
Assigning a DialogueVoice as the speaker
Here is the minimal path to get a character speaking through Unreal's native Dialogue system using one of the supplied DV_ assets.
1. Create a Dialogue Wave asset (right-click in the Content Browser, then choose the Dialogue Wave type). This is the container that binds a spoken line to its speakers.
2. In the Dialogue Wave, add a context. Set its 'Speaker' to the character's DialogueVoice — for the wizard archetype that is DV_Old_Wizard_Male. Leave the 'Directed At' list empty for a monologue, or add another DialogueVoice if the line is addressed to a specific listener.
3. Assign the SoundWave for the locale you are targeting. The Dialogue Wave will use the speaker's locale and gender metadata to resolve the correct recording at runtime.
4. At runtime, play the line. From Blueprint you can use 'Play Dialogue at Location' or 'Play Dialogue 2D' on the Dialogue Wave with a populated Dialogue Context (the speaker and any targets). The engine routes the audio and can surface the associated subtitle automatically.
Because the pack provides a ready-made DialogueVoice per character, the only authoring you do is binding lines to the right speaker — you are not hand-building 21 speaker descriptors first.
When to use UE's Dialogue system versus a DataTable approach
The native DialogueVoice and Dialogue Wave system is the right choice when you need its specific strengths: built-in subtitle support, gender-aware line resolution, and locale-driven take selection for a fully localised title. If you are shipping in several languages and want the engine to manage which recording plays per culture, lean on DialogueVoice.
For a great many games, though, you do not need that machinery and a DataTable-driven approach is faster to query and easier to script. The Fantasy NPC Voices pack supports both. Alongside the 21 DialogueVoice assets it ships a unified data layer: 105 DataTables (five per character — DT_Dialogue, DT_CharacterProfile, DT_Equipment, DT_Quests and DT_WrittenContent), all sharing the same five row structs so a single query helper works for every NPC.
With the DataTable route you drive lines by gameplay context rather than by authored Dialogue Waves. In Blueprint you reference a character's DT_Dialogue, get all row names, filter rows whose ContextTags contain the situation you want (for example a combat or greeting tag), pick a random match, then LoadSynchronous the VoiceAudio soft reference and Play Sound 2D or 3D — optionally showing the row's ResponseText in your UI. In C++ the equivalent is GetAllRows for the dialogue row type, filter on ContextTags.Contains, and play a random VoiceAudio after LoadSynchronous. Because the audio is referenced as a TSoftObjectPtr, nothing loads until the first play.
A reasonable rule of thumb: reach for DialogueVoice when localisation and native subtitles are the priority, and reach for the DataTables when you want context-tagged, randomly varied barks and lines wired straight into gameplay. Nothing stops you mixing the two in the same project.
DialogueVoice (native) versus a DataTable-driven approach
| Concern | DialogueVoice + Dialogue Wave | DataTable (DT_Dialogue) |
|---|---|---|
| What the asset represents | A speaker descriptor (gender, locale) | A table of lines with ContextTags and audio refs |
| Localisation | Built-in, locale-driven take selection | Roll your own per-locale tables |
| Subtitles | Native subtitle support | Show ResponseText in your own UI |
| Context-tagged barks | Not the focus | Filter rows by ContextTags, pick at random |
| Audio loading | Resolved via Dialogue Wave | TSoftObjectPtr, LoadSynchronous on first play |
Both are supported by the Fantasy NPC Voices pack; pick the one that matches your needs.
FAQ
What is a DialogueVoice asset in Unreal Engine and how do you use one?
A DialogueVoice is a speaker descriptor used by UE's built-in Dialogue system — it carries a character's gender and locale but no audio of its own. You use one by creating a Dialogue Wave, setting its Speaker to the DialogueVoice (for example DV_Old_Wizard_Male), assigning the SoundWave recordings for your locales, and playing the Dialogue Wave at runtime. The Fantasy NPC Voices pack ships 21 of these, one per character, pre-configured.
What is the difference between a DialogueVoice and a SoundWave?
A SoundWave is the actual audio recording the engine plays back. A DialogueVoice is metadata that represents who is speaking, including gender and locale. You bind the two together inside a Dialogue Wave: the DialogueVoice is the speaker, the SoundWaves are the lines.
Do I have to use DialogueVoice to play these voice lines?
No. The Fantasy NPC Voices pack also exposes every character through DataTables (DT_Dialogue and four others). You can query lines by ContextTags, pick one at random, LoadSynchronous the VoiceAudio soft reference and Play Sound 2D or 3D — no Dialogue Wave required. Use DialogueVoice when you want native subtitles and locale-driven take selection.
How are the DialogueVoice assets named in the pack?
They use the DV_ prefix, one per character archetype — for example DV_Old_Wizard_Male. There are 21 in total, sitting under the pack's DialogueVoices folder, each configured with the gender and locale appropriate to that character.
Fantasy NPC Voices
The complete fantasy voice megabundle: roughly 33 hours of dialogue across 13,668 voiced WAVs at 44.1 kHz — paladins, vampires, witches, wizards, bards, goblins, necromancers and more. One library to voice an entire RPG cast.