skyrim-audio
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.
$ Installieren
git clone https://github.com/SpookyPirate/spookys-automod-toolkit /tmp/spookys-automod-toolkit && cp -r /tmp/spookys-automod-toolkit/.claude/skills/skyrim-audio ~/.claude/skills/spookys-automod-toolkit// tip: Run this command in your terminal to install the skill
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>"
# Example: cd "C:\Tools\spookys-automod-toolkit"
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 datafilename.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
# 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
Extract Existing Voice Files for Analysis
# 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)
Create Voice Line (Full Workflow)
# 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"
Create Sound Effect (No Lip Sync)
# 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"
Batch Extract Voice Files
# 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)
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 IDFormID- 8-digit hex form ID of the dialogue responseResponseNumber- 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
--jsonflag 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
}
}
Repository
