Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate high-quality text-to-speech audio using Microsoft Edge's neural TTS service via the node-edge-tts npm package. Supports multiple languages, voices, adjustable speed/pitch, and subtitle generation.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-12 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
Generate high-quality text-to-speech audio using Microsoft Edge's neural TTS service via the node-edge-tts npm package. Supports multiple languages, voices, adjustable speed/pitch, and subtitle generation.
When you detect TTS intent from triggers or user request:
javascript// Example: Built-in tts tool usage tts("Your text to convert to speech") // Returns: MEDIA: /path/to/audio.mp3
Recognize "tts" keyword as TTS requests. The skill automatically filters out TTS-related keywords from text before conversion to avoid converting the trigger words themselves to audio.
For more control, use the bundled scripts directly:
bashcd scripts npm install node tts-converter.js "Your text" --voice en-US-AriaNeural --rate +10% --output output.mp3
Options:
--voice, -v: Voice name (default: en-US-AriaNeural)--lang, -l: Language code (e.g., en-US, es-ES)--format, -o: Output format (default: audio-24khz-48kbitrate-mono-mp3)--pitch: Pitch adjustment (e.g., +10%, -20%, default)--rate, -r: Rate adjustment (e.g., +10%, -20%, default)--volume: Volume adjustment (e.g., +0%, -10%, default)--save-subtitles, -s: Save subtitles as JSON file--output, -f: Output file path (default: tts_output.mp3)--proxy, -p: Proxy URL (e.g., http://localhost:7890)--timeout: Request timeout in milliseconds (default: 10000)--list-voices, -L: List available voicesbashcd scripts npm install node config-manager.js --set-voice en-US-AriaNeural node config-manager.js --set-rate +10% node config-manager.js --get node config-manager.js --reset
Common voices (use --list-voices for full list):
English:
en-US-MichelleNeural (female, natural, default)en-US-AriaNeural (female, natural)en-US-GuyNeural (male, natural)en-GB-SoniaNeural (female, British)en-GB-RyanNeural (male, British)Other Languages:
es-ES-ElviraNeural (Spanish, Spain)fr-FR-DeniseNeural (French)de-DE-KatjaNeural (German)ja-JP-NanamiNeural (Japanese)zh-CN-XiaoxiaoNeural (Chinese)ar-SA-ZariyahNeural (Arabic)Rate values use percentage format:
"default": Normal speed"-20%" to "-10%": Slow, clear (tutorials, stories, accessibility)"+10%" to "+20%": Slightly fast (summaries)"+30%" to "+50%": Fast (news, efficiency)Choose audio quality based on use case:
audio-24khz-48kbitrate-mono-mp3: Standard quality (voice notes, messages)audio-24khz-96kbitrate-mono-mp3: High quality (presentations, content)audio-48khz-96kbitrate-stereo-mp3: Highest quality (professional audio, music)Main TTS conversion script using node-edge-tts. Generates audio files with customizable voice, rate, volume, pitch, and format. Supports subtitle generation and voice listing.
Manages persistent user preferences for TTS settings (voice, language, format, pitch, rate, volume). Stores config in ~/.tts-config.json.
NPM package configuration with node-edge-tts dependency.
Complete documentation for node-edge-tts npm package including:
Test different voices and preview audio quality at: https://tts.travisvn.com/
Refer to this when you need specific voice details or advanced features.
To use the bundled scripts:
bashcd /home/user/clawd/skills/public/tts-skill/scripts npm install
This installs:
node-edge-tts - TTS librarycommander - CLI argument parsingtts tool for simple requests, or scripts/tts-converter.js for customizationRun the test script to verify TTS functionality:
bashcd /home/user/clawd/skills/public/edge-tts/scripts npm test
This generates a test audio file and verifies the TTS service is working.
Test different voices and preview audio quality at: https://tts.travisvn.com/
Use the built-in tts tool for quick testing:
javascript// Example: Test TTS with default settings tts("This is a test of the TTS functionality.")
Verify configuration persistence:
bashcd /home/user/clawd/skills/public/edge-tts/scripts node config-manager.js --get node config-manager.js --set-voice en-US-GuyNeural node config-manager.js --get
npm test to check if TTS service is accessiblenode tts-converter.js --list-voices to see available voicesnode tts-converter.js "test" --proxy http://localhost:7890test-output.mp3 in the scripts directory/tmp/edge-tts-temp/ on Unix, C:\Users\<user>\AppData\Local\Temp\edge-tts-temp\ on Windows) with unique filenames (e.g., tts_1234567890_abc123.mp3). Files are not automatically deleted - the calling application (Clawdbot) should handle cleanup after use. You can specify a custom output path with the --output option if permanent storage is needed.config-manager.js to set defaultsen-US-MichelleNeural (female, natural)Neural) provide higher quality than Standard voices| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-25 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-24 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 22 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +48 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.