ByteNoteByteNote

字节笔记本

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-voices

Python 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")

应用场景

  • 有声读物生成: 将电子书转换为有声读物
  • 视频配音: 为视频内容生成旁白
  • 语音助手: 为聊天机器人添加语音输出
  • 辅助阅读: 帮助视障用户阅读文本内容
  • 语言学习: 生成标准发音用于语言学习
  • 自动化测试: 为语音交互应用生成测试音频

相关资源

注意事项

  1. 该库使用 Microsoft Edge 的在线服务,需要网络连接
  2. 请合理使用,避免对微软服务造成过大负载
  3. 商业使用请自行评估合规性风险
  4. 语音合成质量可能因网络状况而有所波动
分享: