Edge TTS Worker 是一个部署在 Cloudflare Worker 上的代理服务,它将微软 Edge TTS 服务封装成兼容 OpenAI 格式的 API 接口。通过本项目,您可以在没有微软认证的情况下,轻松使用微软高质量的语音合成服务。
- 绕过大陆地区访问限制,免去微软服务认证步骤
- 提供 OpenAI 兼容的接口格式
- 完全免费 - 基于 Cloudflare Worker 免费计划
- 安全可控 - 支持自定义 API 密钥
- 多语种支持 - 中文、英文、日文、韩文等
- 快速部署 - 几分钟内即可完成
- 登录 Cloudflare Dashboard
- 进入
Workers & Pages
- 点击
Create Worker
- 为 Worker 取个名字(比如
edge-tts
)
- 删除编辑器中的默认代码
- 复制 worker.js 中的代码并粘贴
- 点击
Save and deploy
- 在 Worker 的设置页面中找到
Settings
->Variables
- 点击
Add variable
- 名称填写
API_KEY
,值填写你想要的密钥 - 点击
Save and deploy
- 你的域名已经托管在 Cloudflare
- 域名的 DNS 记录已经通过 Cloudflare 代理(代理状态为橙色云朵)
- 在 Worker 的详情页面中
- 点击
设置
标签 - 找到
域和路由
部分 - 点击
添加
按钮 - 选择
自定义域
- 输入你想要使用的域名(比如
tts.example.com
) - 点击
添加域
- 等待证书部署完成(通常几分钟内)
完成后,你可以通过以下两种方式访问服务:
- Workers 域名:
https://你的worker名字.你的用户名.workers.dev
- 自定义域名:
https://tts.example.com
注意:自定义域名必须使用 HTTPS,Cloudflare 会自动提供 SSL 证书。
为了方便测试不同的语音效果,项目提供了一个测试脚本。这个脚本会使用不同的语音来合成相同的文本,帮助你快速对比各种语音效果。
- 下载测试脚本
test_voices.sh
- 给脚本添加执行权限:
chmod +x test_voices.sh
- 运行脚本:
./test_voices.sh <Worker地址> [API密钥]
示例:
# 使用 API 密钥
./test_voices.sh https://your-worker.workers.dev your-api-key
# 不使用 API 密钥
./test_voices.sh https://your-worker.workers.dev
脚本会为每个支持的语音生成测试音频文件,你可以通过播放这些文件来选择最适合的语音。
中文语音示例:
curl -X POST https://你的worker地址/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "tts-1",
"input": "你好,世界!",
"voice": "zh-CN-XiaoxiaoNeural",
"response_format": "mp3",
"speed": 1.0,
"pitch": 1.0,
"style":"general"
}' --output chinese.mp3
英文语音示例:
curl -X POST https://你的worker地址/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "tts-1",
"input": "Hello, World!",
"voice": "en-US-JennyNeural",
"response_format": "mp3",
"speed": 1.0,
"pitch": 1.0,
"style":"general"
}' --output english.mp3
简化参数示例:
curl -X POST https://你的worker地址/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "tts-1",
"input": "Hello, World!",
"voice": "en-US-JennyNeural"
}' --output output.mp3
参数说明:
参数 | 类型 | 必填 | 说明 | 默认值 | 示例值 |
---|---|---|---|---|---|
model | string | 是 | 模型名称(固定值) | - | tts-1 |
input | string | 是 | 要转换的文本 | - | "你好,世界!" |
voice | string | 是 | 语音名称 | - | zh-CN-XiaoxiaoNeural |
response_format | string | 否 | 输出格式 | mp3 | mp3 |
speed | number | 否 | 语速 (0.5-2.0) | 1.0 | 1.0 |
pitch | number | 否 | 语调 (0.5-2.0) | 1.0 | 1.0 |
style | string | 否 | 情绪 | general | general |
注意:请确保使用与语音对应的语言文本,例如中文语音需配合中文文本使用。完整的语音列表请参考微软官方文档。
以下是常用语音示例:
语音代码 | 描述 | 语言 |
---|---|---|
zh-CN-XiaoxiaoNeural | 晓晓 - 温暖活泼 | 中文 |
zh-CN-XiaoyiNeural | 晓伊 - 温暖亲切 | 中文 |
zh-CN-YunxiNeural | 云希 - 男声,稳重 | 中文 |
zh-CN-YunyangNeural | 云扬 - 男声,专业 | 中文 |
zh-CN-XiaohanNeural | 晓涵 - 自然流畅 | 中文 |
zh-CN-XiaomengNeural | 晓梦 - 甜美活力 | 中文 |
zh-CN-XiaochenNeural | 晓辰 - 温和从容 | 中文 |
zh-CN-XiaoruiNeural | 晓睿 - 男声,儒雅 | 中文 |
zh-CN-XiaoshuangNeural | 晓双 - 女声,温柔 | 中文 |
zh-CN-YunfengNeural | 云枫 - 男声,成熟 | 中文 |
zh-CN-YunjianNeural | 云健 - 男声,阳光 | 中文 |
zh-CN-XiaoxuanNeural | 晓萱 - 女声,知性 | 中文 |
zh-CN-YunxiaNeural | 云夏 - 男声,青春 | 中文 |
zh-CN-XiaomoNeural | 晓墨 - 女声,优雅 | 中文 |
zh-CN-XiaozhenNeural | 晓甄 - 女声,自信 | 中文 |
en-US-JennyNeural | Jenny | 英文 |
en-US-GuyNeural | Guy | 英文 |
ja-JP-NanamiNeural | Nanami | 日文 |
ja-JP-KeitaNeural | Keita | 日文 |
ko-KR-SunHiNeural | Sun-Hi | 韩文 |
ko-KR-InJoonNeural | InJoon | 韩文 |
以下是常用情绪参数示例: | 参数值 | 描述 | | angry | 生气 | | chat | 轻松 | | cheerful | 积极 | | sad | 悲伤 |
更多可以查看 微软官方文档。
- 本项目仅供学习和个人使用
- 不建议用于商业项目
- API 可能随时失效,请谨慎使用
- 建议在生产环境使用官方付费 API
- 重要:请使用与语音对应的语言文本,否则可能会转换失败
- 建议文本长度不要太长,以避免请求超时
-
Q: 为什么转换失败了?
A: 常见原因:- 使用了与语音不匹配的语言(如用英文语音转换中文文本)
- API Key 错误或认证头部格式不正确
- 请求参数格式不正确
- 文本过长
- 服务暂时不可用
-
Q: 支持哪些音频格式?
A: 目前仅支持 MP3 格式 -
Q: 有请求限制吗?
A: Cloudflare Workers 免费版每天有 100,000 次请求限制 -
Q: 如何调整语音效果?
A: 可以通过调整 speed 参数(范围 0.5-2.0)来改变语速 -
Q: 如何使用自定义域名?
A: 有两种方式:- 方式一:直接使用 Workers 提供的子域名
- 方式二:使用自己的域名
- 域名需要先托管在 Cloudflare
- 在 Worker 设置中添加自定义域名
- 等待 DNS 生效(通常几分钟)
- 使用自定义域名访问 API
-
Q: 为什么要使用自定义域名?
A: 使用自定义域名有以下好处:- 更专业的品牌形象
- 更容易记忆的地址
- 可以随时更换底层服务而保持 API 地址不变
- 便于管理多个 Workers
-
Q: 自定义域名需要付费吗?
A: 这取决于你的 Cloudflare 计划:- 免费计划:可以使用自定义域名,但有一些限制
- 付费计划:有更多功能和更高的限制
MIT License
欢迎提交 Issue 和 Pull Request!