tts

GitHub
612 142 简单 1 次阅读 昨天MIT音频
AI 解读 由 AI 自动生成,仅供参考

tts 是一款现代化的文本转语音服务,基于微软 Azure 语音引擎打造,旨在为用户提供高质量、低延迟的语音合成能力。它有效解决了传统 TTS 方案在并发性能、多语言支持及部署灵活性上的痛点,特别适合作为本地化或私有化的语音服务替代方案。

这款工具非常适合开发者集成到各类应用中,同时也为研究人员和普通用户提供了友好的 Web 界面进行快速试听与内容创作。其核心亮点在于完全兼容 OpenAI TTS API 标准,这意味着现有接入 OpenAI 的项目无需修改代码即可无缝切换至 tts,极大降低了迁移成本。此外,tts 采用前后端分离架构,后端由高性能的 Go 语言驱动以支撑高并发请求,前端则基于 React 19 构建出响应式交互界面。它不仅支持语速、语调及多种情感风格的精细调节,还具备长文本智能分割合并功能,并支持 Docker、Cloudflare Worker 等多种轻量级部署方式,让搭建专属语音服务变得简单高效。

使用场景

某在线教育团队急需为每日更新的海量题库解析生成配套音频,以打造“听题学习”功能,提升视障学生及通勤用户的学习体验。

没有 tts 时

  • 成本高昂且流程繁琐:依赖人工录音或昂贵的商业配音服务,每更新一道题的解析都需重新录制,周期长达数天。
  • 情感表达单一僵硬:传统合成音机械感强,无法根据题目类型(如鼓励性评语或严肃知识点)调整语调,难以吸引学生注意力。
  • 技术对接困难:缺乏统一的 API 接口,前端需针对不同语音服务商编写适配代码,且难以处理长文本自动分割,导致开发效率低下。
  • 并发性能瓶颈:在早晚高峰学习时段,旧有方案响应延迟高,常出现音频加载失败,严重影响用户体验。

使用 tts 后

  • 即时生成与零边际成本:利用 tts 的 RESTful API,系统可自动将新录入的文本解析实时转为语音,实现“秒级”上线,无需人工干预。
  • 风格灵活可调:通过调节 style(如 cheerful 用于表扬,neutral 用于讲解)及语速语调参数,让语音富有情感色彩,显著提升学习兴趣。
  • 无缝集成与智能处理:凭借对 OpenAI TTS API 的完全兼容性,现有代码无需大改即可接入;其内置的智能分割功能自动处理长难句,确保输出流畅自然。
  • 高并发稳定支撑:基于 Go 后端的高性能异步架构,轻松应对数千名学生同时请求,保证音频播放流畅无卡顿。

tts 通过低成本、高情感化且易于集成的语音合成能力,将教育内容的生产模式从“手工制造”升级为“自动化智造”。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

不需要 GPU

内存

未说明

依赖
notes该项目基于 Go 和 React 开发,不依赖 Python 环境。后端需配置 Microsoft Azure 语音服务的 API Key 和区域(如 TTS_API_KEY, TTS_REGION)。支持 Docker 一键部署、本地源码编译运行以及 Cloudflare Worker 无服务器部署。
python不需要 Python
Go 1.19+
Node.js 18.0+
Docker 20.0+ (可选)
tts hero image

快速开始

TTS 服务

一个现代化的文本转语音 (TTS) 服务,基于 Microsoft Azure 语音服务,采用前后端分离架构,提供高质量的语音合成能力。

✨ 功能特点

  • 🌍 多语言支持 - 支持多种语言和声音
  • 高性能 - 异步处理,支持高并发
  • 🎛️ 可调节 - 支持语速、语调和情感风格调节
  • 🎵 多格式 - 支持多种输出音频格式
  • 🔌 兼容性 - 完全兼容 OpenAI TTS API
  • ✂️ 智能分割 - 支持长文本自动分割与合并
  • 🖥️ 现代界面 - 基于 React 的现代化 Web UI
  • 🔧 RESTful API - 提供完整的 REST API 接口
  • 📦 多部署方式 - 支持 Docker、Cloudflare Worker 等多种部署方式
  • 收藏功能 - 支持收藏喜欢的声音,快速选择和管理
  • 🎯 声音库 - 完整的声音浏览和试听功能

🏗️ 架构概览

项目采用前后端分离的现代化架构:

后端服务 (Go)

  • 技术栈: Go + Gin 框架
  • 功能: 提供 TTS 核心功能和 RESTful API
  • 特点: 高性能、低延迟、易于扩展

前端应用 (React)

  • 技术栈: React 19 + TypeScript + Vite + Tailwind CSS
  • 功能: 提供现代化的 Web 用户界面
  • 特点: 响应式设计、组件化开发、类型安全

🚀 快速开始

方式一:Docker 部署(推荐)

# 拉取并运行完整服务(前端 + 后端)
docker run -d -p 8080:8080 --name=tts zuoban/zb-tts

部署完成后:

  • 前端界面: 访问 http://localhost:8080
  • API 接口: http://localhost:8080/api/v1/*

方式二:本地开发

后端开发

# 构建应用程序
go build -o tts ./cmd/api

# 运行应用程序
./tts

# 或使用配置文件运行
./tts -config ./configs/config.yaml

前端开发

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 启动开发服务器(默认端口 3000)
npm run dev

# 构建生产版本
npm run build

Docker Compose 开发

# 启动完整开发环境(前端 + 后端)
docker-compose -f docker-compose.dev.yml up --build

方式三:Cloudflare Worker 部署

适用于轻量级无服务器部署:

  1. 创建一个新的 Cloudflare Worker
  2. 复制以下脚本内容到 Worker worker.js
  3. 添加环境变量 API_KEY
    • Workers & Pages -> Your Worker -> Settings -> Variables and Secrets -> Add
    • Type: Secret, Name: API_KEY, Value: YOUR_API_KEY

📚 API 文档

v1 API(推荐使用)

健康检查

curl "http://localhost:8080/api/v1/health"

获取配置信息

curl "http://localhost:8080/api/v1/config"

获取语音列表

# 方式 1:Bearer Token 认证(推荐)
curl -H "Authorization: Bearer YOUR_TTS_API_KEY" \
  "http://localhost:8080/api/v1/voices"

# 方式 2:Query 参数认证
curl "http://localhost:8080/api/v1/voices?api_key=YOUR_TTS_API_KEY"

文本转语音

# 方式 1:GET 请求 + Query 参数认证
curl "http://localhost:8080/api/v1/tts?text=你好,世界&voice=zh-CN-XiaoxiaoNeural&api_key=YOUR_TTS_API_KEY" \
  -o output.mp3

# 方式 2:POST 请求 + Bearer Token 认证(推荐)
curl -X POST "http://localhost:8080/api/v1/tts" \
  -H "Authorization: Bearer YOUR_TTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "你好,世界",
    "voice": "zh-CN-XiaoxiaoNeural",
    "rate": 20,
    "pitch": 10,
    "style": "cheerful"
  }' -o output.mp3

# 方式 3:POST 请求 + 请求体中的 api_key
curl -X POST "http://localhost:8080/api/v1/tts" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "你好,世界",
    "voice": "zh-CN-XiaoxiaoNeural",
    "rate": 20,
    "pitch": 10,
    "style": "cheerful",
    "api_key": "YOUR_TTS_API_KEY"
  }' -o output.mp3

参数说明:

  • text: 文本内容
  • voice: 语音风格
  • rate: 语速,范围 -100 到 100
  • pitch: 语调,范围 -100 到 100
  • style: 情感风格,可选值为 sad, angry, cheerful, neutral

认证说明: 所有 TTS 相关接口支持以下三种认证方式:

  1. Bearer Token (推荐): Authorization: Bearer YOUR_TTS_API_KEY
  2. Query 参数: ?api_key=YOUR_TTS_API_KEY
  3. 请求体参数: JSON 中包含 "api_key": "YOUR_TTS_API_KEY"

兼容性 API

原版 TTS API

# 无认证(如果配置了 API Key 则需要认证)
curl "http://localhost:8080/tts?t=你好,世界&v=zh-CN-XiaoxiaoNeural" -o output.mp3

# 使用 Query 参数认证
curl "http://localhost:8080/tts?t=你好,世界&v=zh-CN-XiaoxiaoNeural&api_key=YOUR_TTS_API_KEY" -o output.mp3

OpenAI 兼容 API

# 方式 1:Bearer Token 认证(推荐)
curl -X POST "http://localhost:8080/v1/audio/speech" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TTS_API_KEY" \
  -d '{
    "model": "tts-1",
    "input": "你好,世界!",
    "voice": "zh-CN-XiaoxiaoNeural",
    "speed": 0.5
  }' -o output.mp3

# 方式 2:请求体中包含 api_key
curl -X POST "http://localhost:8080/v1/audio/speech" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "你好,世界!",
    "voice": "zh-CN-XiaoxiaoNeural",
    "speed": 0.5,
    "api_key": "YOUR_TTS_API_KEY"
  }' -o output.mp3

参数说明:

  • model: 模型名称,对应情感风格
  • input: 文本内容
  • voice: 语音风格
  • speed: 语速,0.0 到 2.0
  • api_key: API 密钥(可选,也可通过 Bearer Token 或 Query 参数提供)

认证说明: 支持 Bearer Token、Query 参数或请求体中的 api_key 参数进行认证

📱 阅读集成

本服务支持在阅读应用中使用。

网络导入步骤

  1. 复制服务链接

    • 复制你的导入链接,例如:https://t.leftsite.cn/api/v1/reader.json?n=%E6%99%93%E8%BE%B0&voice=zh-CN-XiaochenNeural&rate=0&pitch=0
  2. 打开朗读设置

    • 在朗读应用中进入「朗读引擎」页面
  3. 网络导入

    • 点击右上角的 (三个点)菜单
    • 选择 「网络导入」 选项
    • 粘贴刚才复制的服务链接
    • 点击 「确认」 完成导入

⚙️ 配置选项

环境变量配置

优先级: 环境变量 > 配置文件 > 默认值

后端环境变量

# 服务配置
SERVER_PORT=8080                      # 服务端口
CORS_ALLOWED_ORIGINS=*                # 允许的 CORS 源

# TTS 服务配置
TTS_API_KEY=your_api_key              # 统一的 API 密钥(TTS 和 OpenAI 兼容接口)
TTS_REGION=eastasia                   # Azure 区域
TTS_MAX_CONCURRENT=20                 # 最大并发数

前端环境变量

# 在 frontend 目录下设置
VITE_API_BASE_URL=http://localhost:8080  # API 基础 URL
VITE_APP_TITLE="TTS 服务"                # 应用标题
VITE_NODE_ENV=development                # 环境标识

配置文件详解

后端服务使用 YAML 格式的配置文件,默认查找位置:

  • ./configs/config.yaml
  • ./config.yaml
  • /etc/tts/config.yaml

示例配置文件 (configs/config.yaml):

server:
  port: 8080                # 服务监听端口
  read_timeout: 60          # HTTP 读取超时时间(秒)
  write_timeout: 60         # HTTP 写入超时时间(秒)
  base_path: ""             # API 基础路径前缀

tts:
  region: "eastasia"        # Azure 语音服务区域
  default_voice: "zh-CN-XiaoxiaoNeural"  # 默认语音
  default_rate: "0"         # 默认语速,范围 -100 到 100
  default_pitch: "0"        # 默认语调,范围 -100 到 100
  default_format: "audio-24khz-48kbitrate-mono-mp3"  # 默认音频格式
  max_text_length: 65535    # 最大文本长度
  request_timeout: 30       # 请求 Azure 服务的超时时间(秒)
  max_concurrent: 20        # 最大并发请求数
  segment_threshold: 300    # 文本分段阈值
  min_sentence_length: 200  # 最小句子长度
  max_sentence_length: 300  # 最大句子长度
  api_key: 'your_api_key'   # TTS API 密钥

  # OpenAI 到微软 TTS 中文语音的映射
  voice_mapping:
    alloy: "zh-CN-XiaoyiNeural"       # 中性女声
    echo: "zh-CN-YunxiNeural"         # 年轻男声
    fable: "zh-CN-XiaochenNeural"     # 儿童声
    onyx: "zh-CN-YunjianNeural"       # 成熟男声
    nova: "zh-CN-XiaohanNeural"       # 活力女声
    shimmer: "zh-CN-XiaomoNeural"     # 温柔女声

# 注意:OpenAI 兼容接口使用 tts.api_key,不需要单独配置

ssml:
  preserve_tags:                      # SSML 标签保留配置
    - name: break
      pattern: <break\s+[^>]*/>
    - name: speak
      pattern: <speak>|</speak>
    - name: prosody
      pattern: <prosody\s+[^>]*>|</prosody>
    # ... 更多 SSML 标签配置

Docker 配置示例

# 使用自定义端口
docker run -d -p 9000:9000 -e SERVER_PORT=9000 --name=tts zuoban/zb-tts

# 使用配置文件
docker run -d -p 8080:8080 \
  -v /path/to/config.yaml:/configs/config.yaml \
  --name=tts zuoban/zb-tts

# 设置环境变量
docker run -d -p 8080:8080 \
  -e TTS_API_KEY=your_key \
  -e TTS_REGION=eastasia \
  --name=tts zuoban/zb-tts

🛠️ 本地构建与运行

系统要求

  • Go: 1.19 或更高版本
  • Node.js: 18.0 或更高版本(前端开发)
  • Docker: 20.0 或更高版本(可选)

从源码构建

# 克隆仓库
git clone https://github.com/zuoban/tts.git
cd tts

# 后端构建
go mod download
go build -o tts ./cmd/api

# 前端构建
cd frontend
npm install
npm run build
cd ..

# 运行后端服务
./tts

开发脚本

后端开发

# 运行测试
go test ./...

# 整理依赖
go mod tidy

# 验证依赖
go mod verify

# 多平台构建(需要 Docker Buildx)
./script/build.sh

前端开发

cd frontend

# 启动开发服务器(默认端口 3000)
npm run dev

# 代码检查
npm run lint

# 自动修复 linting 问题
npm run lint:fix

# TypeScript 类型检查
npm run type-check

# 清理构建文件
npm run clean

# 预览构建结果
npm run preview

🧪 故障排除

常见问题

1. CORS 错误

  • 检查后端 CORS 配置:CORS_ALLOWED_ORIGINS=*
  • 确认前端 API 基础 URL 正确:VITE_API_BASE_URL

2. API 请求失败

  • 验证 API Key 设置:TTS_API_KEY(统一用于所有接口)
  • 检查后端服务是否正常运行
  • 查看后端日志输出:./tts -v

3. 前端构建失败

cd frontend
npm install  # 更新依赖
# 检查 Node.js 版本(需要 18+)
node --version

4. 配置文件找不到

  • 检查配置文件路径:./configs/config.yaml
  • 使用绝对路径:./tts -config /absolute/path/config.yaml
  • 查看启动日志中的配置文件路径

调试工具

  • 前端调试: 浏览器开发者工具 + React DevTools
  • 后端调试: 日志输出 + 健康检查接口 GET /api/v1/health
  • API 测试: 使用 curl 或 Postman 测试 API 接口

📄 项目结构

tts/
├── cmd/api/                 # 后端应用程序入口点
├── internal/                # 私有应用程序代码
│   ├── config/             # 配置管理
│   ├── http/               # HTTP 层
│   │   ├── handlers/       # HTTP 请求处理器
│   │   ├── middleware/     # 中间件
│   │   ├── routes/         # 路由配置
│   │   └── server/         # HTTP 服务器实现
│   ├── models/             # 数据模型定义
│   ├── tts/                # TTS 服务层
│   └── utils/              # 工具函数
├── frontend/               # React 前端应用
│   ├── src/
│   │   ├── components/     # React 组件
│   │   │   ├── ui/         # 通用 UI 组件
│   │   │   ├── audio/      # 音频相关组件
│   │   │   │   ├── FavoriteVoices.tsx    # 收藏声音组件
│   │   │   │   ├── HistoryList.tsx      # 历史记录组件
│   │   │   │   └── AudioPlayer.tsx      # 音频播放器组件
│   │   │   └── layout/     # 布局组件
│   │   ├── pages/          # 页面组件
│   │   │   ├── Home.tsx    # 首页(包含收藏功能)
│   │   │   └── VoiceLibrary.tsx   # 声音库页面
│   │   ├── hooks/          # 自定义 Hooks
│   │   ├── services/       # API 服务层
│   │   │   ├── api.ts      # TTS API 服务
│   │   │   └── favorites.ts # 收藏功能服务
│   │   ├── types/          # TypeScript 类型定义
│   │   │   ├── index.ts    # 核心类型(包含收藏相关类型)
│   │   └── utils/          # 工具函数
│   └── dist/               # 构建输出目录
├── configs/                # 配置文件
├── script/                 # 构建脚本
├── workers/                # Cloudflare Worker 代码
└── docs/                   # 文档

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License - 详见 LICENSE 文件

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|1周前
图像数据工具视频

Real-Time-Voice-Cloning

Real-Time-Voice-Cloning 是一款开源的实时语音克隆工具,旨在通过短短 5 秒的音频样本,快速复刻说话人的声音特征,并即时生成任意文本的语音内容。它有效解决了传统语音合成需要大量训练数据且无法实时响应的痛点,让个性化语音生成变得轻量且高效。 该项目的核心技术基于 SV2TTS(从说话人验证到多说话人文本转语音的迁移学习)深度学习框架。其工作流程分为三个阶段:首先从少量音频中提取说话人的数字声纹表示,随后将其作为参考,结合 Tacotron 合成器与 WaveRNN 声码器,高质量地生成目标语音。这种架构不仅实现了端到端的语音合成,还保证了在普通硬件上的实时运行能力。 Real-Time-Voice-Cloning 非常适合开发者、人工智能研究人员以及对语音技术感兴趣的技术爱好者使用。开发者可以将其集成到互动应用中,研究人员可借此探索语音迁移学习的前沿进展,而具备一定动手能力的普通用户也能通过提供的图形界面工具箱,轻松体验“声音复制”的乐趣。尽管目前已有商业服务在音质上表现更佳,但作为一款免费开源项目,它依然是理解和学习实时语音合成技术的绝佳入门资源。

59.6k|★★★☆☆|昨天
音频开发框架

GPT-SoVITS

GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。

56.4k|★★★☆☆|1周前
音频

TTS

🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。

45k|★★★☆☆|2周前
音频开发框架图像

LocalAI

LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获

44.8k|★★★☆☆|2周前
图像音频语言模型

bark

Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。

39.1k|★★★☆☆|2周前
音频