💡 核心亮点
Edge-TTS 通过逆向微软 Edge 浏览器的在线 TTS 服务实现语音合成,完全免费、无需 GPU、无需 API Key,只需一行
pip install edge-tts即可获得接近真人水平的中英文语音。
- 零门槛:
pip install edge-tts即用,无需注册任何账号- 高质量:微软神经网络语音,中文效果自然
- 多音色:中文普通话 4+ 种音色,另有粤语、台湾国语等方言音色
- 轻量级:纯云端调用,本地无需安装任何模型
- 开源库:rany2/edge-tts(社区逆向工程,非微软官方项目,MIT 协议)
微软的神经网络 TTS 能力实际上通过两个渠道对外:
| 渠道 | 性质 | 费用 | 稳定性 |
|---|---|---|---|
| Azure Speech Service | 微软官方服务,有正式文档和 SDK | 付费(有免费额度) | 高,SLA 保障 |
| Edge 浏览器内置 TTS | 微软内部服务,无公开 API | 免费(但无官方接口) | 低,随时可能变更 |
edge-tts 属于第二条路线——它逆向了 Edge 浏览器内置的“大声朗读”功能所使用的 WebSocket 服务(speech.platform.bing.com)。微软从未公开这个服务的 API 文档,edge-tts 是社区开发者逆向工程后的封装产物,随时可能因微软更新而失效。
本地 edge-tts 客户端
│ WebSocket(模拟 Edge 浏览器)
▼
微软 Edge TTS 云端服务(speech.platform.bing.com)
│ 合成语音
▼
返回音频流 → 保存为 mp3/wav
⚠️ 使用 edge-tts 需要清楚以下风险:
- 接口随时可能失效:微软未公开此 API,一旦更新安全验证机制(如 2025 年初的 Sec-MS-GEC 令牌更新导致旧版 403),edge-tts 就必须跟进适配,期间服务不可用
- 无 SLA 保障:微软不承诺可用性、不保证限流策略,高频调用可能被限制
- 合规风险:逆向工程产物用于生产环境存在法律灰色地带,商用需谨慎
- 版本强依赖:edge-tts 库必须保持最新版,旧版随时可能被微软服务端拒绝
如果需要稳定可靠的 TTS 服务,建议使用微软官方的 Azure Speech Service(有免费额度),或本地部署开源方案(如 CosyVoice、MOSS-TTS-Nano)。
关键特征: - 必须联网(无离线模式) - 不消耗本地 GPU/CPU 资源 - 合成速度取决于网络延迟,通常 1-3 秒出结果
pip install edge-tts
⚠️ 版本注意:7.2.x 及更早版本可能遇到 403 Forbidden 错误(微软更新了安全验证机制)。升级到 7.3.1+ 即可解决:
bash pip install --upgrade edge-tts
最简单的用法——直接合成一句话:
edge-tts --voice zh-CN-XiaoxiaoNeural --text "你好,欢迎使用语音合成" --write-media hello.mp3
查看所有可用音色:
edge-tts --list-voices
import asyncio
import edge_tts
async def main():
communicate = edge_tts.Communicate("你好,欢迎使用语音合成", "zh-CN-XiaoxiaoNeural")
await communicate.save("output.mp3")
asyncio.run(main())
适合在 Flask 等 Web 框架中使用,避免异步冲突:
import subprocess
subprocess.run([
'edge-tts',
'--voice', 'zh-CN-XiaoxiaoNeural',
'--text', '你好,欢迎使用语音合成',
'--write-media', 'output.mp3'
])
以下脚本只需改三行参数,运行即可生成 mp3,适合快速体验 Edge-TTS 效果。
"""
Edge-TTS 极简体验脚本
依赖:pip install edge-tts(需联网)
"""
import asyncio
import edge_tts
# ========== 改这里就行 ==========
TEXT = "你好,欢迎体验微软语音合成服务。"
VOICE = "zh-CN-XiaoxiaoNeural" # 晓晓(普通话女声)
OUTPUT = "demo_output.mp3"
# ================================
async def main():
tts = edge_tts.Communicate(TEXT, VOICE)
await tts.save(OUTPUT)
print(f"✅ 已保存到 {OUTPUT}")
asyncio.run(main())
换音色试试:
| 想听什么 | 改 VOICE 为 |
|---|---|
| 普通话女声(默认) | zh-CN-XiaoxiaoNeural |
| 普通话男声 | zh-CN-YunxiNeural |
| 粤语女声 | zh-HK-HiuGaaiNeural |
| 台湾国语女声 | zh-TW-HsiaoChenNeural |
提示:粤语和台湾国语需配合对应文字才能出效果——粤语配粤语口语("我係學生")、台湾国语配繁体("歡迎來到台灣")。
| 音色名 | 性别 | 风格 | 适用场景 |
|---|---|---|---|
| zh-CN-XiaoxiaoNeural | 女 | 温暖、自然 | 通用播报、有声书、助手 |
| zh-CN-XiaoyiNeural | 女 | 活泼、甜美 | 儿童内容、轻松场景 |
| zh-CN-YunxiNeural | 男 | 沉稳、专业 | 新闻播报、知识讲解 |
| zh-CN-YunyangNeural | 男 | 温和、亲切 | 有声书、对话场景 |
| zh-CN-YunjianNeural | 男 | 阳刚、有力 | 体育解说、广告 |
| 音色名 | 性别 | 说明 |
|---|---|---|
| zh-HK-HiuGaaiNeural | 女 | 粤语女声,可朗读中文但语调偏平 |
| zh-HK-WanLungNeural | 男 | 粤语男声 |
粤语使用提示:Edge-TTS 的粤语音色可以朗读任意中文文本,但直接用简体书面语喂入会读成"粤语腔普通话"。要获得地道粤语效果,需先用 LLM 将书面语改写为粤语口语(如"我"→"我係"、"的"→"嘅"),再用 OpenCC 转为繁体文字后合成。
| 音色名 | 性别 | 说明 |
|---|---|---|
| zh-TW-HsiaoChenNeural | 女 | 台湾女声 |
| zh-TW-YunJheNeural | 男 | 台湾男声 |
| 维度 | Edge-TTS | CosyVoice3 | 阿里云 TTS | OpenAI TTS |
|---|---|---|---|---|
| 价格 | 免费 | 免费(自建) | 付费 | 付费 |
| 需要 GPU | 否 | 是 | 否 | 否 |
| 需要联网 | 是 | 否 | 是 | 是 |
| 声音克隆 | 否 | 是 | 否 | 否 |
| 中文质量 | 高 | 高 | 高 | 高 |
| 方言支持 | 粤语/台湾国语 | 18+ 种方言 | 有限 | 有限 |
| 部署复杂度 | 极低(pip install) | 高(~12GB) | 中 | 低 |
| 商用许可 | 微软服务条款 | Apache 2.0 | 付费协议 | 付费协议 |
| 适用场景 | 快速原型、轻量播报 | 高质量离线/批量 | 企业级服务 | 商业产品 |
根因:edge-tts 版本过旧,微软云端更新了安全验证机制。
解决:
pip install --upgrade edge-tts
确保版本 ≥ 7.3.1。
Edge-TTS 的速度取决于网络延迟,与本地硬件无关。如果感觉慢: - 检查网络连接(特别是代理设置) - 考虑使用本地 TTS 方案(如 CosyVoice、MOSS-TTS-Nano)
这是 Edge-TTS 粤语音色的固有限制: - 简体书面语直接读 → "粤语腔普通话" - 解决方案:先用 LLM 做"书面语→粤语口语"改写,再用 OpenCC 转繁体
推荐用 subprocess 调用 CLI,避免异步冲突:
import subprocess
import os
def generate_tts(text, voice='zh-CN-XiaoxiaoNeural'):
audio_path = f'static/audio/tts_{hash(text)}.mp3'
subprocess.run([
'edge-tts',
'--voice', voice,
'--text', text,
'--write-media', audio_path
], check=True)
return audio_path
📖 资料来源:
📝 创建:2026-10-19
🔄 标签:AI、语音技术、TTS、Edge-TTS、微软、免费、开源