字节笔记本
2026年2月23日
openai-edge-tts:免费的 OpenAI 兼容 TTS API 服务
本文介绍 openai-edge-tts,一个免费的 OpenAI 兼容文本转语音 API 服务。该项目基于 edge-tts 构建,提供与 OpenAI TTS API 完全兼容的接口,可作为 OpenAI、Azure 或 ElevenLabs 的免费替代品,支持自托管部署。
项目简介
openai-edge-tts 是由 travisvn 开发维护的开源项目,在 GitHub 上已获得 1.6k stars 和 242 forks,主要使用 Python 编写。该项目通过封装 edge-tts,提供了一个与 OpenAI API 格式完全兼容的 RESTful 服务,让用户无需支付 API 费用即可使用高质量的文本转语音功能。
edge-tts 底层使用微软 Edge 浏览器的在线文本转语音服务,因此完全免费。openai-edge-tts 在此基础上增加了 OpenAI 兼容层,使得任何支持 OpenAI TTS 的应用都可以无缝切换到该服务。
核心特性
- OpenAI 兼容接口:提供
/v1/audio/speech端点,请求结构与 OpenAI API 完全一致 - SSE 流式支持:支持 Server-Sent Events 实时音频流式传输
- 多音色映射:将 OpenAI 音色(alloy、echo、fable、onyx、nova、shimmer)映射到 edge-tts 等价音色
- 多种音频格式:支持 mp3、opus、aac、flac、wav、pcm 等格式
- 语速调节:支持 0.25x 到 4.0x 的播放速度调节
- 灵活音色选择:可使用 OpenAI 音色映射或直接指定任意 edge-tts 音色
技术栈
- Python - 后端服务核心语言
- FastAPI/Flask - Web 框架提供 RESTful API
- edge-tts - 底层文本转语音引擎
- Docker - 容器化部署支持
- ffmpeg - 音频格式转换(可选)
快速开始
最简单的方式是使用 Docker 一键启动:
docker run -d -p 5050:5050 travisvn/openai-edge-tts:latest服务将在 5050 端口运行,使用默认配置。
安装指南
前置要求
- Docker(推荐):使用 Docker 和 Docker Compose 进行容器化部署
- Python(可选):本地开发时需要安装 requirements.txt 依赖
- ffmpeg(可选):音频格式转换需要,如仅使用 mp3 则可选
完整安装步骤
1. 克隆仓库
git clone https://github.com/travisvn/openai-edge-tts.git
cd openai-edge-tts2. 配置环境变量
创建 .env 文件:
cp .env.example .env编辑 .env 文件:
API_KEY=your_api_key_here
PORT=5050
DEFAULT_VOICE=en-US-AvaNeural
DEFAULT_RESPONSE_FORMAT=mp3
DEFAULT_SPEED=1.0
DEFAULT_LANGUAGE=en-US
REQUIRE_API_KEY=True
REMOVE_FILTER=False
EXPAND_API=True
DETAILED_ERROR_LOGGING=True注意:
API_KEY可以设置为任意字符串,无需真实的 OpenAI API Key。
3. 使用 Docker Compose 启动
docker compose up --build后台运行模式:
docker compose up -d4. 直接使用 Docker 运行
docker build -t openai-edge-tts .
docker run -d -p 5050:5050 --env-file .env openai-edge-tts5. 访问 API
服务启动后,API 将在 http://localhost:5050 可用。
使用示例
基础用法
curl -X POST http://localhost:5050/v1/audio/speech \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Hello, this is a test of the text to speech system.",
"voice": "alloy"
}' \
--output speech.mp3Python 调用示例
import requests
response = requests.post(
"http://localhost:5050/v1/audio/speech",
headers={"Authorization": "Bearer your_api_key_here"},
json={
"model": "tts-1",
"input": "你好,这是文本转语音测试。",
"voice": "alloy",
"response_format": "mp3",
"speed": 1.0
}
)
with open("output.mp3", "wb") as f:
f.write(response.content)SSE 流式传输
curl -X POST http://localhost:5050/v1/audio/speech \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Streaming text to speech test.",
"voice": "nova",
"stream_format": "sse"
}'与第三方工具集成
Open WebUI 集成
在 Open WebUI 的 Admin Panel 中,进入 Settings -> Audio,配置以下参数:
- API Endpoint:
http://localhost:5050/v1(或http://host.docker.internal:5050/v1如果都在 Docker 中运行) - API Key:
your_api_key_here - Voice: 选择 alloy、echo、fable、onyx、nova 或 shimmer
官方文档:Open WebUI OpenAI Edge TTS 集成指南
AnythingLLM 集成
在 AnythingLLM v1.6.8+ 版本中:
- 打开设置,进入 Voice & Speech(在 AI Providers 下)
- 选择 "Generic OpenAI TTS Provider"
- 配置 API 端点为
http://localhost:5050/v1 - 输入 API Key 和选择的音色
API 参考
语音合成端点
POST /v1/audio/speech
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型名称,固定为 tts-1 |
| input | string | 是 | 要转换为语音的文本 |
| voice | string | 是 | 音色名称(alloy、echo、fable、onyx、nova、shimmer 或 edge-tts 音色) |
| response_format | string | 否 | 输出格式:mp3、opus、aac、flac、wav、pcm(默认 mp3) |
| speed | number | 否 | 语速:0.25 到 4.0(默认 1.0) |
| stream_format | string | 否 | 流式格式,设置为 sse 启用 SSE 流式传输 |
获取可用音色
GET /v1/audio/voices
返回所有可用的 edge-tts 音色列表。
注意事项
- API Key:无需真实的 OpenAI API Key,可设置任意字符串作为验证密钥
- 网络访问:如果从其他设备或容器访问,需将
localhost替换为实际 IP 地址(如192.168.0.1) - 许可证:项目采用 GPL-3.0 许可证,主要面向个人使用,企业使用需联系作者
- 音色试听:可在 tts.travisvn.com 试听所有可用音色
项目链接
- GitHub 仓库:https://github.com/travisvn/openai-edge-tts
- Docker Hub:https://hub.docker.com/r/travisvn/openai-edge-tts
- 音色试听:https://tts.travisvn.com
- 官方文档:Open WebUI 集成文档