
OpenSpeech
OpenSpeech 是一个开源 TTS 模型的开放目录,让每一款模型都在相同的条件下接受测试,以便你进行公平、直观的比较。
edgeTTS 是开源独立项目,封装微软Edge在线语音服务,提供可自托管API与Web可视化工作台,实现MP3流式语音合成、音色检索,单请求最高支持20000 Unicode码点长文本。

⚠️重要声明:edgeTTS仅为第三方封装工具,不是离线TTS引擎,依赖微软官方Edge TTS云端能力;项目与微软无任何商业关联,没有微软官方背书。合成文本会经过TLS加密上传至微软服务;项目本身不会持久保存文本与音频,但无法控制微软侧的数据处理策略。仅TXT导入读取在本地完成,点击合成才提交文本。
/v1/audio/speech:兼容OpenAI语音接口子集,直接使用Edge音色ID,输出MP3;上限4096 UTF-16码元/api/speech:原生长文本接口,支持调节语速、音调、音量,上限20000 Unicode码点;两种接口都会按最多300码点自动分段,串行调用上游服务,自动跳过空白片段,保护Unicode字符完整性。# 创建目录
mkdir -p ~/edgetts && cd ~/edgetts
编写 compose.yaml
services:
edgetts:
image: ghcr.io/dejavumoe/edgetts:0.9.2
container_name: edgetts
restart: unless-stopped
init: true
read_only: true
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
tmpfs:
- /tmp
stop_grace_period: 35s
ports:
- "${EDGETTS_BIND_ADDRESS:-127.0.0.1}:${EDGETTS_HOST_PORT:-8080}:8080"
environment:
- NODE_ENV=production
- HOST=0.0.0.0
- PORT=8080
- API_KEY
- REQUIRE_API_KEY=${REQUIRE_API_KEY:-true}
- SPEECH_RATE_LIMIT_MAX
- SPEECH_RATE_LIMIT_WINDOW_MS
生成密钥并启动容器
(umask 077; set -C; printf 'API_KEY=%s\n' "$(openssl rand -hex 32)" > .env)
docker compose up -d
健康检查验证
curl -i [http://127.0.0.1:8080/health](http://127.0.0.1:8080/health)
成功返回 HTTP/1.1 200 OK + {"status":"ok"}
浏览器访问 [http://127.0.0.1:8080](http://127.0.0.1:8080) 打开Web工作台。
提示:.env文件只需生成一次,升级镜像可以直接复用;公网部署建议前置HTTPS反向代理。
set -a; . ./.env; set +a
curl -X POST [http://127.0.0.1:8080/api/speech](http://127.0.0.1:8080/api/speech) \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "这是一段较长的文本。edgeTTS 会在服务端无损分段并通过单个 HTTP 连接流式返回完整音频。",
"voice": "zh-CN-XiaoxiaoNeural",
"quality": "standard",
"speed": 1.0,
"pitchSemitones": 0.0,
"volume": 1.0
}' \
--output long-speech.mp3







