| name | skyrim-audio |
| description | 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. |
Skyrim Audio Module
Handle Skyrim audio file operations including FUZ, XWM, and WAV formats using Spooky's AutoMod Toolkit.
Prerequisites
Run all commands from the toolkit directory:
cd "<TOOLKIT_PATH>"
Overview
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).
Command Reference
Get Audio Info
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).
Extract 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 data
filename.lip - Lip sync data (if present)
Create FUZ
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) |
Convert WAV to XWM
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:
- PCM format
- 16-bit
- Mono or stereo
- 44100 Hz recommended for voice
Common Workflows
Inspect Voice File
dotnet run --project src/SpookysAutomod.Cli -- audio info "./Sound/Voice/MyMod.esp/NPC/Line01.fuz"
Extract Existing Voice Files for Analysis
dotnet run --project src/SpookysAutomod.Cli -- archive extract "SomeMod.bsa" --output "./Extracted" --filter "sound/*"
dotnet run --project src/SpookysAutomod.Cli -- audio extract-fuz "./Extracted/Sound/Voice/SomeMod.esp/NPC/Line01.fuz" --output "./AudioDebug"
Create Voice Line (Full Workflow)
dotnet run --project src/SpookysAutomod.Cli -- audio wav-to-xwm "./Source/Line01.wav" --output "./Audio/Line01.xwm"
dotnet run --project src/SpookysAutomod.Cli -- audio create-fuz "./Audio/Line01.xwm" --lip "./Audio/Line01.lip" --output "./Sound/Voice/MyMod.esp/NPC/Line01.fuz"
dotnet run --project src/SpookysAutomod.Cli -- audio create-fuz "./Audio/Line01.xwm" --output "./Sound/Voice/MyMod.esp/NPC/Line01.fuz"
Create Sound Effect (No Lip Sync)
dotnet run --project src/SpookysAutomod.Cli -- audio wav-to-xwm "./Source/effect.wav" --output "./Sound/FX/MyMod/effect.xwm"
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"
Batch Extract Voice Files
dotnet run --project src/SpookysAutomod.Cli -- archive extract "VoiceMod.bsa" --output "./Extracted" --filter "*.fuz"
Voice File Organization
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
Voice File Naming Convention
<TopicEditorID>_<FormID>_<ResponseNumber>.fuz
TopicEditorID - The dialogue topic's Editor ID
FormID - 8-digit hex form ID of the dialogue response
ResponseNumber - Response index (usually 1)
FUZ File Format
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]
Audio Recommendations
For Voice Lines
- Sample Rate: 44100 Hz
- Bit Depth: 16-bit
- Channels: Mono (recommended) or Stereo
- Format: PCM WAV before conversion
For Sound Effects
- Sample Rate: 44100 Hz or 22050 Hz
- Bit Depth: 16-bit
- Channels: Mono or Stereo depending on effect
- Format: PCM WAV before conversion
For Music
- Sample Rate: 44100 Hz
- Bit Depth: 16-bit
- Channels: Stereo
- Format: Use XWM or vanilla formats
Limitations
This module CAN:
- Read FUZ/XWM/WAV file information
- Extract FUZ to components
- Create FUZ from components
- Convert WAV to XWM
This module CANNOT:
- Generate LIP (lip sync) files
- Convert XWM back to WAV
- Edit audio content
- Generate voice from text
For LIP generation, use:
- FaceFX (included with Creation Kit)
- LipGen community tools
- xVASynth for AI voice generation (separate tool)
Important Notes
- LIP files required for good lip sync - Without LIP, NPCs won't move lips
- Path must match plugin name -
Sound/Voice/PluginName.esp/
- NPC folder must match Editor ID - Case sensitive
- FUZ preferred for voice - Combines audio and lip sync cleanly
- Use
--json flag for machine-readable output when scripting
JSON Output
All 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
}
}