一、前言
前阵子有一位同学来问我,小落同学的TTS功能是怎么实现的?我跟他解释了半天,发现双方对一些基础技术、知识、名词都无法对齐,沟通起来实在有些累。
后来实在没办法,就跟他说,我把小落同学的TTS功能的代码开源出来,然后你自己直接看代码吧,过了半个钟头,他回来跟我说:非常感谢,对着代码看,一目了然。
呵呵,果然程序员之间的沟通最简单、有效的方式还是:Talk is cheap, show me the code
OddTTS的代码绝大部分都是Catherine同学在高考结束后暑假期间写的,而明天她即将开始大学生涯的第一节课,今天特补上这个文章纪念一下高中生涯的结束,并迎接大学学习的正式开始。
二、什么是OddTTS?
OddTTS是一个简单的多引擎语音合成服务,整合了当前主流的TTS引擎(如EdgeTTS、GPT-Sovits、Bert-VITS2等),并提供统一的API接口和友好的Web界面。无论你是开发者需要集成语音合成功能,还是普通用户想快速生成语音,OddTTS都能胜任。
项目地址:https://github.com/oddmeta/oddtts
普通用户可以直接访问 http://localhost:9001 即可打开可视化界面
开发者可通过http://localhost:9001/api/oddtts/ 接口进行开发集成

三、为什么选择OddTTS?
1. 多引擎支持,语音风格多样
OddTTS集成了多种主流TTS引擎,包括:
- EdgeTTS:微软Edge浏览器的TTS引擎,支持多语言、多音色,可精细调整语速(-50%至50%)、音量(-50%至50%)和音调(-50Hz至50Hz)
- ChatTTS:适合对话场景的新一代TTS引擎,支持情感化语音生成
- Bert-VITS2及V2版本:开源高性能TTS,支持个性化语音和情感参数调节(如快乐、悲伤等)
- OddGptSovits:基于GPT和Sovits的先进语音合成模型
- 支持自定义模型,用户可以训练自己的模型,实现个性化语音合成
- 支持情感化语音生成,用户可以根据文本内容,生成带有情感的语音
你可以根据需求自由切换引擎,轻松获得不同风格的语音输出。
注意:OddGptSovits这个引擎不是开箱即用的,需要用户自己部署GPT Sovits,然后再照着EdgeTTS的API封装一下才能接入到OddTTS
2. 灵活的调用方式
无论你需要哪种输出形式,OddTTS都能满足:
- 返回音频文件路径,方便保存和二次处理
- 直接返回Base64编码,适合前端直接展示
- 支持流式响应,实时获取语音数据,降低延迟
3. 开箱即用的Web界面
启动服务后,通过浏览器访问即可打开基于Gradio的可视化界面,支持:
- 文本输入与实时语音生成
- 语音、语速、音量、音调自由调节
- 生成音频在线播放与下载
- 无需编写代码,小白也能快速上手
4. 完善的API服务
开发者可以通过RESTful API轻松集成到自己的系统中,主要接口包括:
- 健康检查:快速确认服务状态(
/oddtts/health
) - 语音列表查询:获取当前引擎支持的所有语音(
/api/oddtts/voices
) - 多形式音频生成:
- 文件路径输出(
POST /api/oddtts/file
) - Base64编码输出(
POST /api/oddtts/base64
) - 流式输出(
POST /api/oddtts/stream
)
5. 高度可配置
通过简单修改配置文件,即可实现:
- 启用GPU加速,提升合成速度
- 调整并发线程数,优化性能
- 预加载模型,减少首次调用延迟
- 配置HTTPS、数据库、缓存等高级功能
四、快速上手教程
环境要求
- Python 3.8及以上版本
- 依赖库:fastapi、gradio、uvicorn等(自动安装)
安装步骤
1. 克隆项目代码
git clone https://github.com/yourusername/oddtts.git
cd oddtts
2. 灵活的调用方式
无论你需要哪种输出形式,OddTTS 都能满足:
- 返回音频文件路径,方便保存和二次处理
- 直接返回 Base64 编码,适合前端直接展示
- 支持流式响应,实时获取语音数据,降低延迟
3. 开箱即用的 Web 界面
启动服务后,通过浏览器访问即可打开基于 Gradio 的可视化界面,支持:
- 文本输入与实时语音生成
- 语音、语速、音量、音调自由调节
- 生成音频在线播放与下载
- 无需编写代码,小白也能快速上手
4. 完善的 API 服务
开发者可以通过 RESTful API 轻松集成到自己的系统中,主要接口包括:
- 健康检查:快速确认服务状态(
/oddtts/health
) - 语音列表查询:获取当前引擎支持的所有语音(
/api/oddtts/voices
) - 多形式音频生成:
- 文件路径输出(
POST /api/oddtts/file
) - Base64 编码输出(
POST /api/oddtts/base64
) - 流式输出(
POST /api/oddtts/stream
)
5. 高度可配置
通过简单修改配置文件,即可实现:
- 启用 GPU 加速,提升合成速度
- 调整并发线程数,优化性能
- 预加载模型,减少首次调用延迟
- 配置 HTTPS、数据库、缓存等高级功能
6. 快速上手教程
环境要求
- Python 3.8 及以上版本
- 依赖库:fastapi、gradio、uvicorn 等(自动安装)
安装步骤
克隆项目代码
git clone https://github.com/yourusername/oddtts.git
cd oddtts
安装依赖包
pip install -r requirements.txt
配置项目(可选)
修改oddtts_config.py文件,可配置服务器端口、默认 TTS 引擎、是否启用 GPU 等:
运行
# 示例配置
HOST = "127.0.0.1"
PORT = 9001
oddtts_cfg = {
"preload_model": True, # 启动时预加载模型
"enable_gpu": False, # 是否启用GPU
"tts_type": ODDTTS_TYPE.ODDTTS_EDGETTS # 默认引擎
}
启动服务
python oddtts.py
使用服务
- Web 界面:访问 http://localhost:9001 即可打开可视化界面
- API 调用:通过http://localhost:9001/api/oddtts/接口进行开发集成
适用场景
- 应用开发:为 APP、网站添加语音合成功能
- 内容创作:将文本转换为语音,制作播客、有声书
- 智能助手:为聊天机器人、智能家居设备添加语音交互能力
- 无障碍服务:为视障用户提供文本转语音支持
五、总结
OddTTS 凭借多引擎整合、灵活调用方式和易用的界面,解决了不同 TTS 引擎接口不统一、使用复杂的问题。无论是开发者还是普通用户,都能快速实现高质量的语音合成需求。
六、贡献与支持
如果你正在寻找一款强大的语音合成工具,不妨试试 OddTTS,相信它会给你带来惊喜!
欢迎大家贡献代码、提出建议,一起完善这个项目!