字节笔记本

2026年2月22日

TTSFM:免费的 OpenAI 兼容文本转语音 API 服务

TTSFM 是一个免费开源的 OpenAI 兼容文本转语音 API 服务,基于 OpenAI 的 GPT-4o mini TTS 技术,提供完整的语音合成解决方案。该项目在 GitHub 上已获得 711 stars 和 112 forks,主要使用 Python 开发。

项目简介

TTSFM 是一个反向工程实现的 openai.fm 服务镜像,提供与 OpenAI TTS API 完全兼容的接口。它包含 Python SDK、RESTful API 端点以及直观的 Web 测试界面,方便开发者快速集成和测试。

⚠️ 注意:该项目已于 2025 年 12 月 18 日被作者归档,原因是 openai.fm 演示网站已关闭,项目目前无法正常使用。但作为学习参考和开源项目架构设计仍有价值。

核心特性

  • 🎤 多声音选择:支持 11 种 OpenAI 兼容声音(alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, verse)
  • 🎵 灵活音频格式:支持 6 种音频格式(MP3, WAV, OPUS, AAC, FLAC, PCM)
  • ⚡ 速度控制:支持 0.25x 到 4.0x 的播放速度调整
  • 📝 长文本支持:自动文本分割和音频合并,支持任意长度内容
  • 🔄 实时流式传输:WebSocket 支持流式音频生成
  • 🐍 Python SDK:提供易用的同步和异步客户端
  • 🌐 Web 测试界面:交互式 Web 界面用于测试和实验
  • 🐳 Docker 支持:提供预构建 Docker 镜像,支持一键部署
  • 🔍 智能检测:自动能力检测和友好的错误提示
  • 🤖 OpenAI 兼容:可作为 OpenAI TTS API 的替代方案

技术栈

  • Python 46.2% - 核心服务端和 SDK
  • JavaScript 24.8% - Web 界面交互
  • HTML 21.4% - Web 页面模板
  • CSS 7.1% - 样式设计
  • Dockerfile - 容器化部署

安装指南

Python 包安装

bash
# 安装核心客户端
pip install ttsfm

# 安装核心客户端 + Web/服务端依赖
pip install ttsfm[web]

Docker 部署

TTSFM 提供两种 Docker 镜像变体:

完整版(推荐)

bash
docker run -p 8000:8000 dbcccc/ttsfm:latest

完整版包含 ffmpeg,支持:

  • ✅ 所有 6 种音频格式
  • ✅ 速度调整(0.25x - 4.0x)
  • ✅ ffmpeg 格式转换
  • ✅ 长文本 MP3 自动合并
  • ✅ 长文本 WAV 自动合并

精简版(~100MB)

bash
docker run -p 8000:8000 dbcccc/ttsfm:slim

精简版不包含 ffmpeg,仅支持:

  • ✅ 基础 TTS 功能
  • ✅ 2 种音频格式(MP3, WAV)
  • ✅ 长文本 WAV 自动合并
  • ❌ 不支持速度调整
  • ❌ 不支持格式转换
  • ❌ 不支持 MP3 自动合并

部署后,Web 界面访问地址为 http://localhost:8000,API 端点为 /v1/audio/speech

检查可用功能:

bash
curl http://localhost:8000/api/capabilities

快速开始

Python 客户端

python
from ttsfm import TTSClient, AudioFormat, Voice

client = TTSClient()

# 基础用法
response = client.generate_speech(
    text="Hello from TTSFM!",
    voice=Voice.ALLOY,
    response_format=AudioFormat.MP3,
)
response.save_to_file("hello")  # -> hello.mp3

# 带速度调整(需要 ffmpeg)
response = client.generate_speech(
    text="This will be faster!",
    voice=Voice.NOVA,
    response_format=AudioFormat.MP3,
    speed=1.5,  # 1.5x 速度(0.25 - 4.0)
)
response.save_to_file("fast")  # -> fast.mp3

CLI 命令行

bash
ttsfm "Hello, world" --voice nova --format mp3 --output hello.mp3

REST API(OpenAI 兼容)

bash
# 基础请求
curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Hello world!",
    "voice": "alloy",
    "response_format": "mp3"
  }' --output speech.mp3

# 带速度调整(需要完整版镜像)
curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Hello world!",
    "voice": "alloy",
    "response_format": "mp3",
    "speed": 1.5
  }' --output speech_fast.mp3

API 参考

可用声音

声音名称描述
alloy中性声音
ash男性声音
ballad男性声音
coral女性声音
echo男性声音
fable男性声音
nova女性声音
onyx男性声音
sage女性声音
shimmer女性声音
verse男性声音

可用格式

格式完整版精简版
mp3
wav
opus
aac
flac
pcm

速度范围

  • 范围:0.25 - 4.0
  • 要求:需要完整版 Docker 镜像(含 ffmpeg)

项目链接

注意事项

  1. 该项目仅供教育和研究目的使用
  2. 项目已于 2025 年 12 月 18 日归档,目前无法正常使用
  3. 这是一个反向工程实现,不应用于商业用途或生产环境
  4. 用户需确保遵守适用的法律法规和服务条款
分享: