Audio files
How are sounds stored in Cyberpunk 2077
Summary
Published: June 9, 2024 by Zhincore
Cyberpunk uses Wwise audio system, which uses mostly proprietary ("secret", non-opensource) formats. But thanks to the community we have the tools to dig into them. This page explains the technicalities behind audio.
Wait, that's not what I want!
Perhaps you only care about how to find or replacing audio:
Finding an audio fileReplacing sounds effectsPrimary file types
There two main ways Cyberpunk 2077 stores audio:
WEM files
The game stores voice-overs and most music as .wem
files which are directly in the game's .archive
s and their exporting/importing is handled as any other asset.
Opuspaks and bnks
On the other hand sound effects, grunts, and some music are packed together in files ending with .opuspak
. Those paks are mapped by a single .opusinfo
file. If you want to manipulate them, check out the guide on replacing sound effects.
Few sounds, mostly car noises, are so-called preloaded (or embedded) in .bnk
files, they're mostly duplicated and can be found elsewhere, but some sounds are only preloaded. VGMStream is able to extract some of them, but not all, because they differ in audio format.
Some sounds do not exist are handled differently. For example generated (noise, sine wave, etc.), or generated by CDPR's custom Wwise plugins. This might require more research, but you most probably don't need those sounds anyway.
How are SFX handled by the engine
The aforementioned .bnk files are primarily for other purpose than storing audio. They describe how and which the audio should be played.
The process of playing a sound when something happens goes something like this: The game sends an event to Wwise, those are described in eventsmetadata.json
file in the game's archives. Those events are connected to a tree of nodes described in .bnk
files, this may include random selection of next node, layering, volume modification, switching between the next nodes according to a condition, etc. At the end is a node that points to an audio file (or a plugin) and that sound is played. Or multiple sounds are played at once, according to the previous nodes.
This happens every time V has to grunt, when a weapon shoots, car starts, crashes, or when you enter a building and ominous music starts to play, that went through bnks, too! This does not seem to happen for most voice-overs (apart for exceptions, for example I think the Konpeki Plaza alarm (voice-over) uses CDPR's Voice Broadcast plugin (SFX)).
How are voice-overs connected to subtitles
Every subtitle in the game has a String ID (which is a really long number) that is universal between languages. What .wem
audio file belongs to which String ID is mapped inside files starting with voiceover
and ending in .json
. Some of them are for holocall voice-overs, some for when the character has a helmet on. Then there is more .json
files in the subtitles
folders that contain the subtitles for each String ID... and by more I mean few thousands. So, again, it is easier to search those using the SoundDB.
Last updated