Audio Generation Status & Production Workflow

Current Status

Narrator Sayings (100 total needed)

  • Generated: 15/100 (15%)
    • Moloch: 1 file (moloch_01_tragedy.opus)
    • Thucydides Trap: 5 files (thucydides_01-05.opus)
    • Normal Accidents: 5 files (normal_01-05.opus)
    • Technical Debt: 4 files (technical_01, 02, 03, 05.opus) β€” MISSING: technical_04_pay.opus
  • Pending: 85/100 (85%)
    • Black Swan: 5 sayings
    • Pessimism Induction: 5 sayings
    • Planning Fallacy: 5 sayings
    • Illusion of Validity: 5 sayings
    • Information Hazard: 5 sayings
    • Gell-Mann Amnesia: 5 sayings
    • Curse of Knowledge: 5 sayings
    • Confirmation Bias: 5 sayings
    • Survivorship Bias: 5 sayings
    • Availability Heuristic: 5 sayings
    • Fundamental Attribution Error: 5 sayings
    • Value Drift: 5 sayings
    • Wireheading: 5 sayings
    • Loss Aversion: 5 sayings
    • Lindy Effect: 5 sayings
    • Path Dependence: 5 sayings
    • Plus 2 mystery categories: 10 sayings

Door/Ambient/UI Sounds

  • Status: 0/19 files (0%)
  • Needed:
    • Doors: metal_open, metal_close, wood_open, wood_close, locked, hover_available, hover_preview, hover_locked (8 files)
    • Ambient: hallway_loop, void_drone, neon_buzz, footsteps (4 files)
    • UI: check_in, complete, transition (3 files)
    • Narration: welcome, check_in, complete (3 files) β€” May already exist in NARRATION dict

Integrated Experiences (3/40 complete)

  • βœ… thucydides-trap.html (narration system + audio playback)
  • βœ… normal_accidents.html (narration system + audio playback)
  • βœ… technical_debt.html (narration system + audio playback)
  • ⏳ Remaining 37 experiences (need narrator sayings wired in)

Production Issues to Resolve

Issue 1: Hardcoded User Paths

Problem: Both bash scripts hardcode /Users/nosos/Public/convergence-protocol paths.

Files affected:

  • generate_remaining_sayings.sh (line 6)
  • generate_sayings.sh (line 8)

Impact: Scripts won’t run on any other system without manual editing.

Solution: Make paths relative or environment-variable-based.


Issue 2: Missing Audio Generation Command

Problem: generate_remaining_sayings.sh uses openclaw tts command which may not be installed or configured.

Status to verify:

  • Is openclaw CLI tool available?
  • Is it properly configured with ElevenLabs API credentials?
  • What is the actual command signature? (The script assumes openclaw tts "text" --output filename.opus)

Fallback option: Use generate_audio.py for all audio generation via ElevenLabs API (more portable).


Issue 3: Missing ElevenLabs API Key

Problem: generate_audio.py requires ELEVENLABS_API_KEY environment variable.

Status to verify:

  • API key available?
  • ElevenLabs account quota remaining? (Estimated cost: ~$2-3 for full audio pack)
  • Voice ID for narrator speeches? (Script uses default: 21m00Tcm4TlvDq8ikWAM)

Issue 4: Mixed Audio Generation Methods

Problem: Two different generation paths exist:

  1. generate_audio.py (ElevenLabs API) β€” for sound effects + narration
  2. generate_remaining_sayings.sh (openclaw TTS) β€” for narrator sayings
  3. generate_sayings.sh (openclaw TTS) β€” alternative for narrator sayings

Decision needed: Which method should be production standard?

Recommendation: Standardize on ElevenLabs API via Python for consistency:

  • Single tool, single API key management
  • Easier to integrate into CI/CD
  • Cross-platform (Windows/Mac/Linux)
  • More flexible for different voice settings per experience type

Phase 1: Setup & Verification (30 minutes)

  1. Verify ElevenLabs API key available
  2. Test ElevenLabs API connection with test request
  3. Verify account quota sufficient for ~$3 spend
  4. Check estimated generation time (all 100 sayings + 19 sounds)

Phase 2: Generate Missing Technical_04_pay.opus (5 minutes)

export ELEVENLABS_API_KEY="your-key-here"
python3 generate_audio.py
# Will skip existing 15 files, generate only missing ones

OR if using openclaw:

cd assets/audio/sayings
openclaw tts "You will pay. The only question is when, and how much." --output technical_04_pay.opus

Phase 3: Generate Remaining 85 Narrator Sayings (10-15 minutes)

Option A - Using portable bash script (new):

export ELEVENLABS_API_KEY="your-key-here"
export SAYINGS_DIR="./assets/audio/sayings"
./scripts/generate_remaining_sayings_portable.sh

Option B - Using Python (recommended):

export ELEVENLABS_API_KEY="your-key-here"
python3 scripts/generate_sayings_batch.py

Phase 4: Generate Door/Ambient/UI Sounds (5-10 minutes)

export ELEVENLABS_API_KEY="your-key-here"
python3 generate_audio.py

Phase 5: Wire Narrator Sayings into Remaining 37 Experiences (2-3 hours)

Pattern: Copy narrator card HTML/CSS/JS from technical_debt.html and adapt for each experience:

  1. Create SAYINGS array with 5 sayings per experience
  2. Add narrator card HTML before restart button
  3. Add initNarrator() call on conclusion screen
  4. Test audio playback

Phase 6: Browser Playback Testing (1 hour)

  • Test Motel ambient sound + audio toggle
  • Test door hover sounds (available/preview/locked states)
  • Test door open/close sounds
  • Test narrator audio playback in 3 integrated experiences
  • Test spatial mixing (multiple sounds playing)
  • Verify audio levels (not too loud/quiet)

Phase 7: Polish Audio Levels (30 minutes)

  • Tune ambient hallway loop volume
  • Adjust door hover sound volume
  • Balance narrator voice level with ambient
  • Set fade-in/fade-out timings

File Inventory Needed

Narrator Sayings (100 .opus files)

Location: assets/audio/sayings/

Format: {category}_{number}_{slug}.opus

Categories & Files:

  • moloch_01-05.opus (5 files)
  • thucydides_01-05.opus (5 files)
  • normal_01-05.opus (5 files)
  • technical_01-05.opus (5 files)
  • blackswan_01-05.opus (5 files)
  • pessimism_01-05.opus (5 files)
  • planning_01-05.opus (5 files)
  • validity_01-05.opus (5 files)
  • infohazard_01-05.opus (5 files)
  • gellmann_01-05.opus (5 files)
  • curse_01-05.opus (5 files)
  • confirmation_01-05.opus (5 files)
  • survivor_01-05.opus (5 files)
  • availability_01-05.opus (5 files)
  • attribution_01-05.opus (5 files)
  • valuedrift_01-05.opus (5 files)
  • wirehead_01-05.opus (5 files)
  • loss_01-05.opus (5 files)
  • lindy_01-05.opus (5 files)
  • path_01-05.opus (5 files)

Sound Effects (19 .wav files)

Location: assets/audio/

Doors/ (8 files):

  • metal_open.wav
  • metal_close.wav
  • wood_open.wav
  • wood_close.wav
  • locked.wav
  • hover_available.wav
  • hover_preview.wav
  • hover_locked.wav

Ambient/ (4 files):

  • hallway_loop.wav
  • void_drone.wav
  • neon_buzz.wav
  • footsteps.wav

UI/ (3 files):

  • check_in.wav
  • complete.wav
  • transition.wav

Narration/ (3 files):

  • welcome.wav
  • check_in.wav
  • complete.wav

Estimated Timeline & Costs

Time Investment

  • Setup & verification: 30 min
  • Audio generation: 30-45 min (mostly waiting for API)
  • Testing & integration: 1 hour
  • Polish: 30 min
  • Total: ~3-4 hours for full audio implementation

Estimated Costs

  • 100 narrator sayings @ ~0.30
  • 19 sound effects @ ~0.50-$0.80
  • Total estimated: ~$1-2 USD

Next Steps

  1. Immediate: Verify ElevenLabs API key is available
  2. Then: Choose generation method (Python or bash)
  3. Then: Execute Phase 1-4 audio generation
  4. Then: Wire narrator into 37 remaining experiences (can be parallelized)
  5. Then: Browser playback testing & polish

  • generate_audio.py β€” ElevenLabs API for sound effects + narration
  • generate_remaining_sayings.sh β€” Bash script for remaining 85 sayings (needs path fix)
  • generate_sayings.sh β€” Alternative bash script with all 100 sayings
  • /experiences/index.html β€” AudioManager class (ready for sound file playback)
  • /experiences/thucydides-trap.html β€” Narrator system (reference template)
  • /experiences/normal_accidents.html β€” Narrator system (reference template)
  • /experiences/technical_debt.html β€” Narrator system (reference template)
  • Clue_Design_Document.xlsx β€” 40-door challenge mode theme framework (separate from audio)