| name | godot-audio-generator |
| description | Generate, convert, clean, and prepare audio assets for Godot games using ElevenLabs. Use for sound effects, looping ambience, UI sounds, impact/weapon/vehicle audio, creature or boss stingers, announcer/dialogue TTS, scratch-performance voice conversion, voice cleanup/isolation, audio manifests, and game-ready Godot audio integration. |
Godot Audio Generator
Godot Reference Links
Targets Godot 4.6.x (latest stable 4.6.3, June 2026). These links use /en/stable/, so they always resolve to the current stable docs — fetch them for up-to-date audio nodes, buses, and import settings rather than relying on memory.
Purpose
Create game-ready audio assets for Godot projects. This skill consolidates game sound generation, voice generation/conversion, audio cleanup, credential probing, and runtime integration into one Godot-focused production workflow.
Provider: ElevenLabs.
When To Use
Use this skill for:
- SFX: jumps, hits, weapons, explosions, coins, pickups, collisions, UI clicks, confirms, errors.
- Ambience: wind, rain, city bed, engine hum, portal loop, dungeon room tone, battle arena beds.
- Voice: announcer barks, boss lines, tutorial prompts, menu narration, generated placeholder dialogue.
- Voice conversion: convert a scratch performance into a target character voice while preserving timing and emotion.
- Cleanup: isolate or denoise dialogue before voice conversion, TTS replacement, or transcription.
- Godot integration:
AudioStreamPlayer/AudioStreamPlayer2D/AudioStreamPlayer3D loading, looping import, bus routing, volume groups, pause/resume, web-export user gesture unlock.
For premium/AAA/showcase game work, audio is not cosmetic. Generate or integrate at least a minimal interaction audio set for the main loop unless the user explicitly requests mute/offline-only output or credentials/API attempts are blocked.
API Key
Never store API keys in skill files or game project code. The script checks:
--api-key
ELEVENLABS_API_KEY
Before declaring the key unavailable in a godot-game-director workflow, run the director credential probe and paste its literal SET/MISSING output:
bash ~/.codex/skills/godot-game-director/scripts/probe_asset_credentials.sh
For Claude installs:
bash ~/.claude/skills/godot-game-director/scripts/probe_asset_credentials.sh
If the probe says ELEVENLABS_API_KEY=SET but the script sees no key, run through a shell that sources the user's profile:
zsh -c 'source "$HOME/.zprofile" 2>/dev/null; source "$HOME/.zshrc" 2>/dev/null; python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py probe'
Required Reference
Load references/audio-workflows.md before building a game audio plan, generating multiple assets, wiring runtime audio, cleaning/converting voices, or claiming premium game audio.
Track it in the reference ledger. Do not mark the audio phase complete while this reference is skipped.
Tool Script
Run from the user's current game project directory:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py --help
Claude install path:
python3 ~/.claude/skills/godot-audio-generator/scripts/godot_audio_asset.py --help
Probe:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py probe
Generate SFX:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py sfx \
--prompt "tight futuristic boost pickup, bright transient, short sparkling tail, arcade racing game" \
--duration 1.2 \
--prompt-influence 0.65 \
--out assets/audio/sfx/boost-pickup.wav
Generate looping ambience:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py sfx \
--prompt "seamless cyber resort mini golf ambience, distant surf, soft neon transformer hum, gentle crowd bed" \
--duration 12 \
--loop \
--prompt-influence 0.45 \
--out assets/audio/ambience/cyber-resort-loop.ogg
Generate TTS/announcer line:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py tts \
--text "Perfect shot." \
--voice-id JBFqnCBsd6RMkjVDRZzb \
--out assets/audio/voice/perfect-shot.ogg
Clean dialogue:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py isolate \
--input assets/audio/source/noisy-boss-line.wav \
--out assets/audio/voice/boss-line-clean.ogg
Convert a scratch performance to a target voice:
python3 ~/.codex/skills/godot-audio-generator/scripts/godot_audio_asset.py voice-change \
--input assets/audio/source/scratch-boss-line.wav \
--voice-id JBFqnCBsd6RMkjVDRZzb \
--remove-background-noise \
--out assets/audio/voice/boss-line-final.ogg
Game Audio Defaults
- SFX:
.wav output, 0.5-2.5s, prompt influence 0.55-0.8. WAV imports cleanly for short one-shots in Godot.
- UI: 0.15-0.8s, high prompt influence, keep transients clear;
.wav.
- Ambience loops: 8-30s,
--loop, prompt influence 0.3-0.55; .ogg with the Loop import option enabled (Vorbis loops seamlessly and stays compressed in VRAM/memory).
- Voice: TTS for clean generated lines (
.ogg); voice-change when timing/acting from a scratch performance matters.
- Cleanup: isolate noisy speech before voice-change or final dialogue use.
- Runtime: generate locally, save under
assets/audio/{sfx,ambience,voice}/, let Godot import them (res://assets/audio/...), and play through AudioStreamPlayer* routed to audio buses. Never put API keys in game code or exported builds.
Required Report
Report:
- Credential probe output or real blocker.
- Reference ledger.
- Generated/processed file paths.
- Prompts/text/input files, voice IDs, durations, loop flags, and output formats.
- Runtime integration notes: audio buses/groups, trigger signals, loop import behavior, web-export unlock gesture, pause/resume, volume/mute controls.
- Remaining audio gaps and any licensing/plan assumptions tied to the user's ElevenLabs account.