Back to skills
SKILL.md
Edge Tts
ASecurityText-to-speech conversion using `uvx edge-tts` for generating audio from text. Use when (1) User requests audio/voice output with the \"tts\" trigger or keyword. (2) Content needs to be spoken rather th
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added October 6, 2026
Security analysis
92/100- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add Kairos-ai-agent/kairos-code --skill edge-tts --agent claude-codeAre you the author of Edge Tts?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/kairos-ai-agent-edge-tts)---
name: "edge-tts"
description: "Text-to-speech conversion using `uvx edge-tts` for generating audio from text. Use when (1) User requests audio/voice output with the \"tts\" trigger or keyword. (2) Content needs to be spoken rather th"
priority: 0.5
imported-from: "hermes"
source-path: "hermes/skills/openclaw-imports/edge-tts/SKILL.md"
---
# Edge-TTS
Generate high-quality text-to-speech audio using Microsoft Edge's neural TTS service via the `uvx edge-tts` command.
Supports multiple languages, voices, adjustable speed/pitch, and subtitle generation.
## Usage
```shell
uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3
# With subtitles
uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --write-subtitles -
```
## Changing rate(speed), volume and pitch
```shell
uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --rate=+50%
uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --volume=+50% --pitch=-50Hz
```
## Changing the voice
```shell
uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --voice zh-CN-XiaoxiaoNeural
```
## Available voices
```
Name Gender ContentCategories VoicePersonalities
en-GB-LibbyNeural Female General Friendly, Positive
en-GB-RyanNeural Male General Friendly, Positive
en-GB-SoniaNeural Female General Friendly, Positive
en-GB-ThomasNeural Male General Friendly, Positive
en-HK-SamNeural Male General Friendly, Positive
en-HK-YanNeural Female General Friendly, Positive
en-US-AnaNeural Female Cartoon, Conversation Cute
en-US-AndrewMultilingualNeural Male Conversation, Copilot Warm, Confident, Authentic, Honest
en-US-AndrewNeural Male Conversation, Copilot Warm, Confident, Authentic, Honest
en-US-AriaNeural Female News, Novel Positive, Confident
en-US-AvaMultilingualNeural Female Conversation, Copilot Expressive, Caring, Pleasant, Friendly
en-US-AvaNeural Female Conversation, Copilot Expressive, Caring, Pleasant, Friendly
en-US-BrianMultilingualNeural Male Conversation, Copilot Approachable, Casual, Sincere
en-US-BrianNeural Male Conversation, Copilot Approachable, Casual, Sincere
en-US-ChristopherNeural Male News, Novel Reliable, Authority
en-US-EmmaMultilingualNeural Female Conversation, Copilot Cheerful, Clear, Conversational
en-US-EmmaNeural Female Conversation, Copilot Cheerful, Clear, Conversational
en-US-EricNeural Male News, Novel Rational
en-US-GuyNeural Male News, Novel Passion
en-US-JennyNeural Female General Friendly, Considerate, Comfort
en-US-MichelleNeural Female News, Novel Friendly, Pleasant
en-US-RogerNeural Male News, Novel Lively
en-US-SteffanNeural Male News, Novel Rational
fr-FR-DeniseNeural Female General Friendly, Positive
fr-FR-HenriNeural Male General Friendly, Positive
zh-CN-XiaoxiaoNeural Female News, Novel Warm
zh-CN-YunjianNeural Male Sports, Novel Passion
zh-CN-liaoning-XiaobeiNeural Female Dialect Humorous
zh-CN-shaanxi-XiaoniNeural Female Dialect Bright
zh-HK-HiuGaaiNeural Female General Friendly, Positive
zh-HK-WanLungNeural Male General Friendly, Positive
zh-TW-HsiaoChenNeural Female General Friendly, Positive
zh-TW-YunJheNeural Male General Friendly, Positive
```
Retrieve all available voices using shell commands:
```shell
uvx edge-tts --list-voices
```
## Flask Proxy for Web Apps
When integrating edge-tts into a web app (e.g. Kairos Canvas), wrap it as an OpenAI-compatible `/v1/audio/speech` endpoint:
```python
# edge_tts_server.py — minimal Flask proxy
import asyncio, io, edge_tts
from flask import Flask, request, Response
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route("/v1/audio/speech", methods=["POST"])
def speech():
data = request.get_json(force=True)
text = data.get("input", "")
voice = data.get("voice", "zh-CN-XiaoxiaoNeural")
speed = data.get("speed", 1.0)
rate = f"+{int((speed-1)*100)}%" if speed >= 1 else f"{int((speed-1)*100)}%"
comm = edge_tts.Communicate(text=text, voice=voice, rate=rate)
buf = io.BytesIO()
async def gen():
async for chunk in comm.stream():
if chunk["type"] == "audio":
buf.write(chunk["data"])
asyncio.run(gen())
return Response(buf.getvalue(), mimetype="audio/mpeg")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5050)
```
**Install:** `pip install edge-tts flask flask-cors`
**Call from JS:** `fetch("http://localhost:5050/v1/audio/speech", {method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({input:"你好",voice:"xiaoxiao"})})`
**Voice name mapping:** Use short names (xiaoxiao, yunxi, jenny) mapped to full IDs (zh-CN-XiaoxiaoNeural, etc.) in the proxy. The proxy resolves names to edge-tts voice IDs.
**Limitations:** No voice cloning, no voice design, no style/emotion control, mp3 output only. For cloning, use MiMo TTS or GPT-SoVITS.
Attribution
Comments
Loading comments…