字节笔记本

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 stars242 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 一键启动:

bash
docker run -d -p 5050:5050 travisvn/openai-edge-tts:latest

服务将在 5050 端口运行,使用默认配置。

安装指南

前置要求

  • Docker(推荐):使用 Docker 和 Docker Compose 进行容器化部署
  • Python(可选):本地开发时需要安装 requirements.txt 依赖
  • ffmpeg(可选):音频格式转换需要,如仅使用 mp3 则可选

完整安装步骤

1. 克隆仓库

bash
git clone https://github.com/travisvn/openai-edge-tts.git
cd openai-edge-tts

2. 配置环境变量

创建 .env 文件:

bash
cp .env.example .env

编辑 .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 启动

bash
docker compose up --build

后台运行模式:

bash
docker compose up -d

4. 直接使用 Docker 运行

bash
docker build -t openai-edge-tts .
docker run -d -p 5050:5050 --env-file .env openai-edge-tts

5. 访问 API

服务启动后,API 将在 http://localhost:5050 可用。

使用示例

基础用法

bash
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.mp3

Python 调用示例

python
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 流式传输

bash
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+ 版本中:

  1. 打开设置,进入 Voice & Speech(在 AI Providers 下)
  2. 选择 "Generic OpenAI TTS Provider"
  3. 配置 API 端点为 http://localhost:5050/v1
  4. 输入 API Key 和选择的音色

API 参考

语音合成端点

POST /v1/audio/speech

参数类型必填说明
modelstring模型名称,固定为 tts-1
inputstring要转换为语音的文本
voicestring音色名称(alloy、echo、fable、onyx、nova、shimmer 或 edge-tts 音色)
response_formatstring输出格式:mp3、opus、aac、flac、wav、pcm(默认 mp3)
speednumber语速:0.25 到 4.0(默认 1.0)
stream_formatstring流式格式,设置为 sse 启用 SSE 流式传输

获取可用音色

GET /v1/audio/voices

返回所有可用的 edge-tts 音色列表。

注意事项

  1. API Key:无需真实的 OpenAI API Key,可设置任意字符串作为验证密钥
  2. 网络访问:如果从其他设备或容器访问,需将 localhost 替换为实际 IP 地址(如 192.168.0.1
  3. 许可证:项目采用 GPL-3.0 许可证,主要面向个人使用,企业使用需联系作者
  4. 音色试听:可在 tts.travisvn.com 试听所有可用音色

项目链接

分享: