Handle Skyrim audio files including FUZ, XWM, and WAV formats. Use when the user wants to inspect audio, extract voice files, create FUZ files, or convert audio formats.
Handle Skyrim audio file operations including FUZ, XWM, and WAV formats using Spooky's AutoMod Toolkit.
Run all commands from the toolkit directory:
cd "<TOOLKIT_PATH>"
# Example: cd "C:\Tools\spookys-automod-toolkit"
Skyrim uses several audio formats:
| Format | Extension | Purpose |
|---|---|---|
| FUZ | .fuz | Combined voice audio + lip sync |
| XWM | .xwm | Compressed audio (xWMA codec) |
| WAV | .wav | Uncompressed audio |
| LIP | .lip | Lip sync data |
Voice files are typically stored as FUZ (XWM audio + LIP lip sync combined).
dotnet run --project src/SpookysAutomod.Cli -- audio info "<audio>"
| Input | Description |
|---|---|
<audio> |
Path to .fuz, .xwm, or .wav file |
Output includes: File type, file size, audio data size, lip sync presence (for FUZ).
dotnet run --project src/SpookysAutomod.Cli -- audio extract-fuz "<fuz>" --output "<dir>"
Extracts FUZ into XWM and LIP components.
| Option | Description |
|---|---|
--output, -o |
Output directory |
Output files:
filename.xwm - Audio datafilename.lip - Lip sync data (if present)dotnet run --project src/SpookysAutomod.Cli -- audio create-fuz "<xwm>" --output "<file>" [options]
| Option | Description |
|---|---|
<xwm> |
Path to XWM audio file |
--output, -o |
Output FUZ file path |
--lip |
Path to LIP file (optional) |
dotnet run --project src/SpookysAutomod.Cli -- audio wav-to-xwm "<wav>" --output "<file>"
| Option | Description |
|---|---|
<wav> |
Path to WAV file |
--output, -o |
Output XWM file path |
WAV Requirements:
# Check FUZ file info
dotnet run --project src/SpookysAutomod.Cli -- audio info "./Sound/Voice/MyMod.esp/NPC/Line01.fuz"
# Check if it has lip sync data
# Output will show hasLipSync: true/false
# 1. Extract from BSA if needed
dotnet run --project src/SpookysAutomod.Cli -- archive extract "SomeMod.bsa" --output "./Extracted" --filter "sound/*"
# 2. Extract FUZ to components
dotnet run --project src/SpookysAutomod.Cli -- audio extract-fuz "./Extracted/Sound/Voice/SomeMod.esp/NPC/Line01.fuz" --output "./AudioDebug"
# Creates:
# ./AudioDebug/Line01.xwm
# ./AudioDebug/Line01.lip (if present)
# 1. Record/obtain WAV file (44100 Hz, 16-bit, mono recommended)
# 2. Convert WAV to XWM
dotnet run --project src/SpookysAutomod.Cli -- audio wav-to-xwm "./Source/Line01.wav" --output "./Audio/Line01.xwm"
# 3. Generate LIP file (requires FaceFX or external tool - not included)
# Or use existing LIP from similar dialogue
# 4. Create FUZ with lip sync
dotnet run --project src/SpookysAutomod.Cli -- audio create-fuz "./Audio/Line01.xwm" --lip "./Audio/Line01.lip" --output "./Sound/Voice/MyMod.esp/NPC/Line01.fuz"
# Or without lip sync (for sound effects)
dotnet run --project src/SpookysAutomod.Cli -- audio create-fuz "./Audio/Line01.xwm" --output "./Sound/Voice/MyMod.esp/NPC/Line01.fuz"
# 1. Convert WAV to XWM
dotnet run --project src/SpookysAutomod.Cli -- audio wav-to-xwm "./Source/effect.wav" --output "./Sound/FX/MyMod/effect.xwm"
# Or package as FUZ without LIP (some mods prefer this)
dotnet run --project src/SpookysAutomod.Cli -- audio wav-to-xwm "./Source/effect.wav" --output "./temp/effect.xwm"
dotnet run --project src/SpookysAutomod.Cli -- audio create-fuz "./temp/effect.xwm" --output "./Sound/FX/MyMod/effect.fuz"
# Extract all FUZ files from a mod's BSA
dotnet run --project src/SpookysAutomod.Cli -- archive extract "VoiceMod.bsa" --output "./Extracted" --filter "*.fuz"
# Then extract each FUZ individually to analyze
# (Loop through files in script)
Skyrim expects voice files in specific locations:
Data/
Sound/
Voice/
MyMod.esp/ # Must match plugin name exactly
NPC_EditorID/ # Must match NPC's Editor ID
DialogueTopic_ResponseNumber.fuz
Example path:
Data/Sound/Voice/MyMod.esp/MerchantBob/DialogueMerchantGreeting_00001234_1.fuz
<TopicEditorID>_<FormID>_<ResponseNumber>.fuz
TopicEditorID - The dialogue topic's Editor IDFormID - 8-digit hex form ID of the dialogue responseResponseNumber - Response index (usually 1)FUZ files combine audio and lip sync:
Header:
Magic: "FUZE" (4 bytes)
Version: uint32
LIP size: uint32
Data:
LIP data: [LIP size bytes]
XWM data: [remaining bytes]
This module CAN:
This module CANNOT:
For LIP generation, use:
Sound/Voice/PluginName.esp/--json flag for machine-readable output when scriptingAll commands support --json for structured output:
dotnet run --project src/SpookysAutomod.Cli -- audio info "./Sound/Voice/MyMod/Line01.fuz" --json
Example response:
{
"success": true,
"result": {
"fileName": "Line01.fuz",
"type": "FUZ",
"fileSize": 45678,
"audioSize": 42000,
"hasLipSync": true,
"lipSyncSize": 3678,
"sampleRate": 44100,
"channels": 1,
"bitsPerSample": 16
}
}