Edge-TTS+Cloudflare Worker:免费 TTS 服务搭建指南,支持 API 调用与低代码集成
前言
TTS(Text-to-Speech,文本转语音)技术通过人工智能与语音合成算法,将书面文本转化为自然流畅的语音,已广泛应用于智能助手、电子阅读器、无障碍工具、教育娱乐等多个领域。
市面上的 TTS 工具虽种类繁多,但免费且高质量的选择并不多见:免费在线工具功能受限,商业级服务(如 Amazon Polly、Microsoft Azure TTS)成本较高,开源工具则需复杂部署。今天为大家分享一套零成本解决方案 —— 通过 Edge-TTS 结合 Cloudflare Worker,快速搭建免费、高可用的 TTS 服务,支持 API 调用和低代码平台集成,轻松满足个人与小型团队的文本转语音需求。
一、核心工具介绍
1. Edge-TTS:免费高效的开源 TTS 工具
Edge-TTS 是基于微软 Edge 浏览器在线语音合成服务的 Python 开源库,依托微软 Azure TTS 技术,支持多语言、多音色输出,语音自然度高,且无需 API 密钥、无需依赖 Windows 系统或 Edge 浏览器。
- 项目地址1:https://github.com/rany2/edge-tts/
- 项目地址2:https://gitee.com/research_code/edge-tts
- 核心优势:
- 支持百余种语音(含中、英、日、韩等多语种)
- 可自定义语速、音调、音量
- 生成 MP3 音频文件与 SRT 字幕文件
- 轻量化部署,Python 一键安装
2. edge-tts-openai-cf-worker:API 化代理方案
为解决 Edge-TTS 命令行操作繁琐、难以集成第三方工具的问题,推荐使用edge-tts-openai-cf-worker项目。该项目将 Edge-TTS 服务封装为兼容 OpenAI 接口格式的 API,部署在 Cloudflare Worker 上,实现跨平台、跨工具调用。
- 项目地址1:https://github.com/linshenkx/edge-tts-openai-cf-worker
- 项目地址2:https://gitee.com/research_code/edge-tts-openai-cf-worker
- 核心优势:
- 绕过大陆访问限制,无需微软认证
- 兼容 OpenAI TTS 接口规范,无缝对接现有工具
- 基于 Cloudflare Worker 免费计划,零服务器成本
- 支持自定义 API 密钥,安全可控
- 每天 10 万次免费请求,满足日常使用
二、快速搭建步骤
第一步:安装 Edge-TTS(基础使用)
若仅需简单文本转语音,可直接通过 Python 命令行使用 Edge-TTS:
- 前置条件:安装 Python 运行环境
- 安装依赖:
| pip install edge-tts |
- 基础使用(生成 MP3 音频 + SRT 字幕):
| edge-tts --text "欢迎使用Edge-TTS免费语音服务" --write-media hello.mp3 --write-subtitles hello.srt |
执行后会在当前目录生成音频文件和字幕文件,操作简单高效。
第二步:部署 Cloudflare Worker(API 服务搭建)
为实现 API 调用,需将edge-tts-openai-cf-worker部署到 Cloudflare Worker,步骤如下:
1. 准备工作
- 注册 Cloudflare 账号:https://dash.cloudflare.com
- (可选)准备自定义域名(已托管在 Cloudflare)
2. 创建 Cloudflare Worker
- 登录 Cloudflare 控制台,进入「Workers & Pages」
- 点击「Create Worker」,输入服务名称(如edge-tts-api),点击「部署」
- 部署成功后,点击「编辑代码」进入代码编辑页面
3. 部署核心代码
- 删除默认的 "Hello World" 代码
- 复制edge-tts-openai-cf-worker项目中的worker.js代码(完整代码见文末附录)
- 粘贴到编辑框,点击「Save and deploy」完成部署
4. 设置 API 密钥(可选,推荐)
为防止接口被恶意调用,建议设置 API 密钥:
- 在 Worker 详情页,进入「Settings → Variables」
- 点击「Add variable」,名称填写API_KEY,值填写自定义密钥(如随机字符串)
- 点击「Save and deploy」生效
5. 自定义域名配置(可选)
Cloudflare 分配的默认域名国内访问可能不稳定,可配置自定义域名:
- 确保自定义域名已托管在 Cloudflare,且 DNS 记录为橙色代理状态
- 在 Worker 详情页,进入「设置 → 域和路由 → 添加」
- 选择「自定义域」,输入域名(如tts.example.com),点击「添加域」
- 等待证书部署完成(约几分钟),即可通过自定义域名访问
三、API 调用方式
部署完成后,可通过 API 接口调用 TTS 服务,支持基础文本转语音、自定义语速 / 音调 / 情绪等功能。
1. 基础调用(curl 命令)
| curl --location 'https://你的Worker域名/v1/audio/speech' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer 你的API_KEY' \ --data '{ "model": "tts-1", "input": "你好,世界!这是免费TTS服务生成的语音", "voice": "zh-CN-XiaoxiaoNeural", "response_format": "mp3", "speed": 1.0 }' --output output.mp3 |
2. Python 代码调用(兼容 OpenAI SDK)
| from openai import OpenAI # 配置客户端 api_key = '你的API_KEY' base_url = 'https://你的Worker域名/v1' client = OpenAI( api_key=api_key, base_url=base_url ) # 生成语音 data = { 'model': 'tts-1', 'input': '灵活多样:参考模板但需根据具体需求生成多样化内容,避免固定化依赖', 'voice': 'zh-CN-XiaoxiaoNeural', # 可选其他语音 'response_format': 'mp3', 'speed': 1.0, # 语速:0.5-2.0 'pitch': 1.0, # 音调:0.5-2.0 'style': 'general' # 情绪:general/cheerful/angry/sad/chat } try: response = client.audio.speech.create(**data) with open('test_tts.mp3', 'wb') as f: f.write(response.content) print("MP3文件已保存成功!") except Exception as e: print(f"调用失败:{e}") |
3. 核心参数说明
| 参数 | 类型 | 必填 | 说明 | 示例值 |
| model | string | 是 | 模型名称(固定为 tts-1) | tts-1 |
| input | string | 是 | 待转换的文本内容 | "你好,世界!" |
| voice | string | 是 | 语音角色(支持多语种) | zh-CN-XiaoxiaoNeural(中文晓晓)、en-US-JennyNeural(英文 Jenny) |
| response_format | string | 否 | 音频格式(默认 MP3) | mp3 |
| speed | number | 否 | 语速(0.5-2.0,默认 1.0) | 1.2 |
| pitch | number | 否 | 音调(0.5-2.0,默认 1.0) | 1.1 |
| style | string | 否 | 情绪风格 | general(通用)、cheerful(开心)、angry(愤怒)、sad(悲伤)、chat(闲聊) |
4. 支持的语音列表(部分)
| 语音代码 | 描述 | 语言 |
| zh-CN-XiaoxiaoNeural | 晓晓 - 温暖活泼 | 中文 |
| zh-CN-YunxiNeural | 云希 - 稳重大气(男声) | 中文 |
| zh-CN-XiaoyiNeural | 晓伊 - 亲切温柔(女声) | 中文 |
| zh-CN-YunyangNeural | 云扬 - 专业权威(男声) | 中文 |
| en-US-JennyNeural | Jenny - 自然流畅 | 英文 |
| ja-JP-NanamiNeural | Nanami - 甜美柔和 | 日文 |
| ko-KR-SunHiNeural | SunHi - 清晰明亮 | 韩文 |
四、低代码集成:Dify 平台使用教程
部署后的 TTS 服务可直接集成到 Dify 等低代码平台,无需编写代码即可实现文本转语音功能:
1. 模型配置
- 打开 Dify 控制台,进入「模型设置」
- 选择「OpenAI-API-compatible」,点击「添加模型」
- 配置参数:
- 模型类型:TTS
- 模型名称:自定义(如「Edge-TTS」)
- API Key:填写 Cloudflare Worker 设置的API_KEY
- API URL:填写 Worker 域名(如https://tts.example.com/v1)
- 可用声音:填写支持的语音代码(如zh-CN-XiaoxiaoNeural,zh-CN-YunxiNeural)
- 点击「保存」完成配置
2. 搭建 TTS 工作流
- 新建工作流,添加「开始」节点,设置输入变量为「text」(待转换文本)
- 添加「Text To Speech」内置工具:
- 输入变量:选择开始节点的「text」
- 模型:选择已配置的「Edge-TTS」
- 语音角色:选择目标音色
- 添加「直接回复」节点,输出类型选择「文件输出」
- 保存工作流并发布
五、注意事项与常见问题
1. 注意事项
- 文本与语音语言需匹配(如中文语音仅支持中文文本),否则可能合成失败
- 单条文本建议不超过 2000 字符,避免请求超时
- 该服务仅供学习和个人使用,不建议用于商业项目
- 基于 Cloudflare 免费计划,每天限制 10 万次请求,足够日常使用
