AgentSkillsCN

protoss-voice-nodejs

模板

SKILL.md
--- frontmatter
name: protoss-voice-nodejs
description: Generate Protoss-style (StarCraft) voice effects using SoX and FFmpeg (Node.js version).
metadata: {"clawdbot":{"emoji":"🔮","requires":{"bins":["ffmpeg","sox"]},"install":[{"id":"brew","kind":"brew","formula":"sox ffmpeg","bins":["sox","ffmpeg"],"label":"Install Dependencies (brew)"}]}}

Protoss Voice Effect (Node.js)

Applies a "Khala" psionic transformation chain to audio files using the V9 "Massive Void" engine.

Usage

Run the script on any audio file:

bash
node protoss_fx.js <path_to_audio_file>

Example:

bash
node protoss_fx.js recordings/my_voice.mp3

Files are saved as *_psionic.mp3 in the source directory.

Algorithm

The current architecture prioritizes a massive, distinctive spatial presence.

  1. Shadow Generation: Pitch shift (-2 semitones) + Time stretch (0.9x).
  2. Void Layer: Reverse -> Dense Reverb -> Reverse (creates "pre-verb" suction).
  3. Mastering: Original voice is discarded. Bass boosted (+5dB), Subsonics cut (<100Hz).

Integration Workflows

ElevenLabs Post-Processing

This skill is designed to be used as a post-processing step for TTS generation. When generating voice content to mimic "Selendis" or other Protoss personas:

  1. Generate: Create raw speech using ElevenLabs.
  2. Process: Pass the output file immediately through protoss_fx.py.
  3. Result: Use the resulting _psionic.mp3 file as the final asset.

Requirements

Requires ffmpeg and sox (Sound eXchange).

bash
brew install ffmpeg sox

Agent Protocol

When a user requests audio or voice interaction involving a Protoss persona:

  1. Generate Raw Audio: Use the tts tool to generate the base speech file.
  2. Silence: Do NOT present the output path from the tts tool to the user yet.
  3. Process: Execute the python script on the raw file: python3 skills/protoss-voice/protoss_fx.py <path_from_tts>
  4. Deliver: Use the message tool to send the file explicitly (more reliable than text echo): message(action="send", filePath="<path_from_script>", asVoice=true)