chatterbox-tts-api
本地运行的 OpenAI 兼容语音克隆 TTS API,支持声音定制与 22+ 语言
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
本地运行的 OpenAI 兼容语音克隆 TTS API,支持声音定制与 22+ 语言
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一名播客主播,想要用自己的声音生成一期英文播客,但不想飞到大洋彼岸去重新录音。或者说,你是一家企业的客服负责人,希望用本地员工的音色来制作多语言的客服语音,却不想把声音数据上传到第三方服务器。这时候,你需要的就是一款本地部署、OpenAI 兼容、支持声音克隆的 TTS(Text-to-Speech,文字转语音)工具——而 Chatterbox TTS API 正是为这类需求而生。
传统 TTS 服务(如 ElevenLabs、Azure TTS)虽然效果不错,但存在几个核心问题:数据必须上传到云端,这对有隐私合规要求的企业来说是致命弱点;API 调用的费用在大规模使用时相当可观;同时网络延迟也影响着实时交互体验。Chatterbox TTS API 基于 Resemble AI 开源的 Chatterbox 模型打造,开发者 Travis Van Nimwegen 将其封装为一个完整的本地 REST API,并让它兼容 OpenAI TTS 接口规范——这意味着你在 Open WebUI、AnythingLLM 等已有 OpenAI 兼容界面的工具中,无需任何改造,直接替换为本地地址即可使用。
语音克隆(Voice Cloning) 是 Chatterbox 的核心亮点。用户只需上传一小段(通常几十秒到几分钟的)目标语音样本,API 就能用这个音色来朗读任意文本。在项目中,voice-sample.mp3 作为默认音色文件挂载进容器,同时用户还可以在 Web UI 中上传和管理多个自定义音色(Voice Library),支持按名称调用,无需记住文件路径。
22+ 语言多语种支持 进一步扩展了使用场景。项目 fork 了官方的 chatterbox-multilingual 分支,在 app/core/mtl.py 中定义了包括中文简体在内的 22 种语言(中文因 pkuseg 分词包兼容性问题暂未启用)。这对于需要生成多语言有声内容的企业来说非常实用。
长文本智能处理解决了普通 TTS 的痛点。当用户提交超过单次生成上限(默认 3000 字)的文本时,API 会自动将其分块(每块 2500 字)、逐块合成,最后用 pydub 拼接为完整音频,并在每段之间添加静音间隔,保证听觉体验流畅自然。长文本任务支持异步后台处理,用户可通过 /status 接口实时查看进度。
流式 SSE 输出让实时交互成为可能。通过 Server-Sent Events 协议,前端可以在语音生成过程中实时接收音频流,无需等待完整合成,大幅改善了交互延迟。
后端采用 FastAPI 异步框架,代码组织在 app/ 目录下,结构清晰:
app/main.py:应用入口,负责生命周期管理(异步启动 TTS 模型初始化)和 CORS 中间件配置。启动时用 asyncio.create_task 在后台加载模型,这样 API 在模型初始化期间依然能响应健康检查请求。app/api/endpoints/:REST 端点分组管理,speech.py 处理核心 TTS 请求,voices.py 管理音色库,long_text.py 处理长文本任务,status.py 提供实时状态监控,health.py 提供健康检查。app/core/:核心业务逻辑层,tts_model.py 负责 Chatterbox TTS 模型的初始化和加载(支持 ChatterboxTTS 和 ChatterboxMultilingualTTS 两种模式),voice_library.py 管理本地音色文件,long_text_jobs.py 调度长文本异步任务,memory.py 监控和清理 GPU 显存。app/models/:Pydantic 数据模型,定义请求/响应结构。前端是独立的 React 19 + TypeScript 项目,结构同样模块化:使用 Wouter 作为前端路由(轻量级替代 React Router),TanStack Query 管理服务端状态,shadcn/ui 组件库搭配 Tailwind CSS v4 实现 UI,recharts 绑定图表展示实时监控数据。项目使用 Vite 构建,支持开发热更新。
项目提供了完整的 Docker 支持,位于 docker/ 子目录下:
| 文件 | 用途 |
|---|---|
Dockerfile.cpu | CPU 推理版本 |
Dockerfile.gpu | NVIDIA CUDA 12.4 GPU 加速版 |
Dockerfile.blackwell | Blackwell 架构 GPU 专用 |
docker-compose.gpu.yml | 推荐:GPU 一键启动 |
docker-compose.cpu.yml | CPU 版本 |
推荐使用 docker/docker-compose.gpu.yml,默认端口 4123,通过环境变量(.env)配置参数化程度很高:TTS 夸张度(EXAGGERATION)、CFG 权重(CFG_WEIGHT)、温度参数(TEMPERATURE)、设备选择(DEVICE=auto)等均可自定义。Web UI 默认与 API 共同启动,通过同一端口访问。
门槛:对普通用户来说,需要一台配备 NVIDIA 显卡(推荐 8GB+ 显存)的机器,并正确安装 nvidia-container-toolkit。CPU 版本虽然也能运行,但生成速度会明显慢于 GPU 版本。首次启动需要下载较大的 TTS 模型(约数 GB),磁盘空间需要预留充足。
局限性:中文语音合成因分词包依赖问题暂未启用;语音克隆需要清晰的语音样本,嘈杂音频克隆效果会打折扣;多人物对话场景下需要自行编排多个音色切换逻辑,API 本身不提供多角色管理。
Chatterbox TTS API 代表了一个重要趋势:本地化 AI 能力下沉。随着开源模型质量逐步逼近商业服务,越来越多的开发者和中小企业开始选择自建 AI 能力。Chatterbox 的出现让语音克隆从"大厂专属"变成了"任意开发者都能拥有的工具"。结合 OpenAI 兼容接口的设计策略,它降低了用户迁移成本——不需要改造现有工具链,就能把云端 TTS 换成本地版本。这对于隐私敏感行业(医疗、金融、法律)和成本敏感场景(内容批量生产、有声读物制作)尤其有意义。