字
字节笔记本
2026年2月18日
edge-tts:免费的微软 Edge 语音合成 Python 库
API中转
¥120
本文介绍 edge-tts,一个使用 Microsoft Edge 在线文本转语音服务的 Python 库。无需安装 Microsoft Edge、Windows 系统或 API 密钥,即可在任意平台使用高质量的微软语音合成服务。
项目简介
edge-tts 是一个开源的 Python 库,由 rany2 开发维护。该项目通过逆向工程实现了对 Microsoft Edge 浏览器在线 TTS 服务的调用,支持 200 多种语言和变体,提供与 Azure TTS 相媲美的语音合成质量,但完全免费。
该项目在 GitHub 上已获得 10k+ stars,是 Python 生态中最受欢迎的免费 TTS 解决方案之一。
核心特性
- 完全免费: 无需 API 密钥,无使用限制
- 跨平台: 支持 Windows、macOS、Linux 等所有 Python 支持的平台
- 高质量语音: 使用微软 Edge 的神经网络语音合成技术
- 多语言支持: 支持 200+ 种语言和地区变体
- 多种声音: 提供男声、女声、中性声音等多种选择
- 实时流式输出: 支持边合成边播放,无需等待完整文件
- 命令行工具: 提供便捷的 CLI 工具,一行命令即可使用
- Python API: 提供简洁的 Python 接口,易于集成到项目中
安装指南
使用 pip 安装
bash
pip install edge-tts使用 uv 安装(推荐)
bash
uv tool install edge-tts快速开始
命令行使用
将文本转换为语音并保存为 MP3:
bash
edge-tts --text "Hello World" --write-media hello.mp3使用特定语音:
bash
edge-tts --voice zh-CN-XiaoxiaoNeural --text "你好世界" --write-media hello.mp3查看所有可用语音:
bash
edge-tts --list-voicesPython API 使用
基础用法:
python
import edge_tts
import asyncio
async def main():
communicate = edge_tts.Communicate("Hello World", "en-US-AriaNeural")
await communicate.save("hello.mp3")
asyncio.run(main())流式输出(边合成边播放):
python
import edge_tts
import asyncio
async def main():
communicate = edge_tts.Communicate("Hello World", "en-US-AriaNeural")
async for chunk in communicate.stream():
if chunk["type"] == "audio":
# 处理音频数据
print(f"收到音频数据: {len(chunk['data'])} 字节")
asyncio.run(main())常用语音列表
| 语音名称 | 语言 | 性别 |
|---|---|---|
| zh-CN-XiaoxiaoNeural | 中文(简体) | 女 |
| zh-CN-YunjianNeural | 中文(简体) | 男 |
| zh-TW-HsiaoChenNeural | 中文(繁体) | 女 |
| en-US-AriaNeural | 英语(美国) | 女 |
| en-US-GuyNeural | 英语(美国) | 男 |
| ja-JP-NanamiNeural | 日语 | 女 |
| ko-KR-SunHiNeural | 韩语 | 女 |
高级用法
调整语速和音调
python
import edge_tts
# 语速范围: -50% 到 +100%
# 音调范围: -20Hz 到 +20Hz
communicate = edge_tts.Communicate(
"Hello World",
"en-US-AriaNeural",
rate="-10%", # 语速减慢 10%
pitch="-5Hz" # 音调降低 5Hz
)SSML 支持
使用 SSML 实现更精细的语音控制:
python
import edge_tts
ssml = """
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
<voice name="en-US-AriaNeural">
<prosody rate="-20%" pitch="-10%">
Hello World
</prosody>
</voice>
</speak>
"""
communicate = edge_tts.Communicate(ssml, voice="en-US-AriaNeural")应用场景
- 有声读物生成: 将电子书转换为有声读物
- 视频配音: 为视频内容生成旁白
- 语音助手: 为聊天机器人添加语音输出
- 辅助阅读: 帮助视障用户阅读文本内容
- 语言学习: 生成标准发音用于语言学习
- 自动化测试: 为语音交互应用生成测试音频
相关资源
- GitHub 仓库: https://github.com/rany2/edge-tts
- PyPI 页面: https://pypi.org/project/edge-tts/
- 语音列表: 使用
edge-tts --list-voices查看完整列表
注意事项
- 该库使用 Microsoft Edge 的在线服务,需要网络连接
- 请合理使用,避免对微软服务造成过大负载
- 商业使用请自行评估合规性风险
- 语音合成质量可能因网络状况而有所波动
分享: