← 开源
zuoban

tts

tts 服务

ApplicationsWrappersTypeScript
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
646
Star
140
Fork
+1
本周
1
贡献者
创建于 2024-04-17 · 更新于 2026-10-13 · 今日第 15576 名
主要开发者

zuoban/tts 排名第 15,576,有 646 个星标。

同类别比较

zuoban/tts 排名第 15,576,此处有 8 个同类条目;SnapdragonLee/ChatGPT-weBot 排名第 15,579。

同类别比较
名称排名指标
nicepkg/ctxport15,528
语言:
TypeScript
星标数:
649
分叉数:
137
uzh-rpg/agilicious15,529
语言:
TeX
星标数:
649
分叉数:
70
简介:
Agile flight done right!
KdaiP/EchoBot15,546
语言:
Python
星标数:
647
分叉数:
57
简介:
EchoBot: Your Anime AI Companion
jtl1207/comic-translation15,558
语言:
Python
星标数:
647
分叉数:
50
简介:
基于深度学习的漫画翻译辅助工具,包含翻译、朗读、图像去字、自动嵌字功能。 目的是帮助非专业汉化人员完成更简单,快速的翻译任务。
SnapdragonLee/ChatGPT-weBot15,579
语言:
Python
星标数:
645
分叉数:
116
简介:
Chat with ChatGPT (gpt-3.5 or newer),WeChat hook interface based
pannous/tensorflow-ocr15,590
语言:
Python
星标数:
645
分叉数:
210
简介:
🖺 OCR using tensorflow with attention
BeachWang/DAIL-SQL15,593
语言:
Python
星标数:
644
分叉数:
96
简介:
A efficient and effective few-shot NL2SQL method on GPT-4.
GeekyWizKid/writing-helper15,595
语言:
TypeScript
星标数:
644
分叉数:
115
简介:
A Next.js-based AI writing assistant supporting multiple LLM APIs (OpenAI, Claude, Gemini, etc.) with rich style customization features to help content creators improve quality and efficiency.
关键参数与规格
关键参数与规格
参数值
语言TypeScript
类别Applications
子类别Wrappers
关键词Text-to-speech
星标数646
分叉数140
贡献者1
创建日期2024-04-17
更新日期2026-10-13
1 天星标数0
7 天星标数1
排名15,576
上次排名15,385
排名变化-191
7 天星标排名11,060
上次 7 天星标排名11,128
7 天星标排名变化68
总星标排名15,854
上次总星标排名15,826
总星标排名变化-28
国家China
README 摘录

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 部署(推荐) 部署完

成后: **前端界面**: 访问 **API 接口**: 方式二:本地开发 后端开发 前端开发 Docker Compose 开发 方式三:Cloudflare Worker 部署 适用于轻量级无服务器部署: 1. 添加环境变量 Workers & Pages -> Your Worker -> Settings -> Variables and Secrets -> Add Type: , Name: , Value: 📚 API 文档 v1 API(推荐使用) 健康检

查 获取配置信息 获取语音列表 文本转语音 **参数说明:** : 文本内容 : 语音风格 : 语速,范围 -100 到 100 : 语调,范围 -100 到 100 : 情感风格,可选值为 , , , **认证说明:** 所有 TTS 相关接口支持以下三种认证方式: 1. **请求体参数**: JSON

中包含 兼容性 API 原版 TTS API OpenAI 兼容 API **参数说明:** : 模

常见问题

记录了多少星标和分叉?

zuoban/tts 有 646 个星标和 140 个分叉。

仓库排名是多少?

zuoban/tts 排名第 15,576。

记录的语言和类别是什么?

zuoban/tts 有 646 个星标,语言为 TypeScript,类别为 Applications。

哪个仓库排名最接近?

zuoban/tts 与 SnapdragonLee/ChatGPT-weBot 比较,后者排名第 15,579,有 645 个星标。

README

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: ]*/>
    - name: speak
      pattern: |
    - name: prosody
      pattern: ]*>|
    # ... 更多 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 文件

排名相邻
同类项目