【Python】免费的中文 AI 配音方案

  • 免费
  • 高质量
  • 免密钥
  • 需联网

edge_tts 是一个利用 Microsoft Edge 浏览器在线 TTS(文本转语音)服务 的非官方 Python 库。

它无需微软 API 密钥,即可调用 Edge 内置的高质量神经网络语音合成引擎,将文本转换为自然语音并保存为音频文件。


核心特点

特性 说明
免费无密钥 直接调用 Edge 的在线 TTS 接口,无需 Azure 订阅或 API Key
语音质量高 基于微软最新的神经网络 TTS,中文(如 Xiaoxiao、Yunyang)发音自然流畅
支持 SSML 可使用语音合成标记语言精细控制语速、音调、停顿、多语音切换
多种输出格式 支持 MP3、WEBM、OGG 等格式(实际为流媒体封装)
异步设计 基于 asyncioaiohttp,适合批量处理或集成到异步应用

安装

bash 复制代码
pip install edge-tts

依赖极少,主要需要 aiohttp(会自动安装)。


基础用法

1. 命令行快速使用(无需写代码)

安装后自带 edge-ttsedge-playback 命令:

bash 复制代码
# 查看所有可用语音
edge-tts --list-voices

# 中文语音合成并保存
edge-tts --voice zh-CN-XiaoxiaoNeural --text "你好,这是微软 Edge 的文本转语音演示。" --write-media output.mp3

# 调整语速(+50%)和音量(+10%)
edge-tts --voice zh-CN-YunyangNeural --rate +50% --volume +10% --text "加速播放测试" --write-media fast.mp3

2. Python 代码使用

python 复制代码
import asyncio
import edge_tts

TEXT = "你好,欢迎使用 edge_tts 库。这是由微软 Edge 提供的高质量中文语音合成。"
VOICE = "zh-CN-XiaoxiaoNeural"  # 中文女声
OUTPUT_FILE = "test.mp3"

async def main():
    communicate = edge_tts.Communicate(TEXT, VOICE)
    await communicate.save(OUTPUT_FILE)

if __name__ == "__main__":
    asyncio.run(main())

进阶功能

使用 SSML 精细控制

SSML(Speech Synthesis Markup Language)可以控制停顿、语气、多角色对话:

python 复制代码
import asyncio
import edge_tts

SSML = """
<<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="zh-CN">
    <voice name="zh-CN-XiaoxiaoNeural">
        你好,<<break time="500ms"/> 这是带停顿的语音。
        <prosody rate="slow" pitch="+10%">这句话语速较慢,音调较高。</prosody>
    </voice>
</speak>
"""

async def main():
    communicate = edge_tts.Communicate(SSML, voice="zh-CN-XiaoxiaoNeural")
    await communicate.save("ssml_output.mp3")

asyncio.run(main())

流式获取音频数据

适合边下载边播放,无需等待完整文件:

python 复制代码
import asyncio
import edge_tts

async def stream_tts():
    communicate = edge_tts.Communicate("流式播放测试", "zh-CN-YunyangNeural")
    async for chunk in communicate.stream():
        if chunk["type"] == "audio":
            # chunk["data"] 是音频字节流,可实时写入播放器
            print(f"收到音频块: {len(chunk['data'])} bytes")
        elif chunk["type"] == "WordBoundary":
            # 获取每个词的时间边界信息,可用于字幕同步
            print(f"词: {chunk['text']}, 偏移: {chunk['offset']}ms")

asyncio.run(stream_tts())

批量处理与语音切换

python 复制代码
import asyncio
import edge_tts

voices = ["zh-CN-XiaoxiaoNeural", "zh-CN-YunyangNeural", "zh-CN-XiaohanNeural"]
text = "同样的文本,不同的声音。"

async def batch():
    tasks = []
    for voice in voices:
        communicate = edge_tts.Communicate(text, voice)
        tasks.append(communicate.save(f"{voice}.mp3"))
    await asyncio.gather(*tasks)

asyncio.run(batch())

常用中文语音列表

语音 ID 性别/风格 特点
zh-CN-XiaoxiaoNeural 自然、温暖,最常用
zh-CN-YunyangNeural 新闻播报风格,沉稳
zh-CN-XiaohanNeural 抒情风格,柔和
zh-CN-XiaomoNeural 多种情感风格可选
zh-CN-YunxiNeural 年轻、活泼
zh-CN-XiaoruiNeural 成熟、专业
zh-CN-YunjianNeural 老年、叙事风格

完整列表通过 edge-tts --list-voices | grep zh-CN 查看。


注意事项

  1. 网络依赖 :需要能访问微软 Edge TTS 在线服务(speech.platform.bing.com 相关域名),国内通常可直接访问。
  2. 非官方 API:这是逆向 Edge 浏览器接口实现的,微软可能随时调整服务端逻辑,存在失效风险。
  3. 商业使用:音频生成自微软服务,商用前建议确认微软服务条款,或考虑官方 Azure Speech Service。
  4. 长文本限制:单段文本过长时建议分段处理,避免超时。

典型应用场景

  • 有声书/播客制作:快速将长文本文档转为音频
  • 视频配音:为短视频、教程生成旁白
  • 辅助阅读:为视障用户或学习场景提供语音朗读
  • AI 对话机器人:为 ChatBot 添加语音输出能力
  • 自动化测试:生成语音素材用于测试
相关推荐
GuWenyue5 小时前
放弃云端API!一套React+WebGPU本地LLM方案,零数据上传、离线可用
前端·人工智能·前端框架
love530love5 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
墨舟的AI笔记6 小时前
从文本提示到可交互道具:AIGC 生成游戏资产的语义对齐与合规校验
人工智能
rain_sxr7 小时前
逼近上限就裁剪:大模型 Token 计数与前端上下文预算管理
人工智能
程序喵大人7 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
cui_ruicheng7 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
资深数据库专家7 小时前
月之暗面Kimi:K3之后,开源怎么走?
人工智能
小林ixn8 小时前
告别“屎山”与“幻觉”:3个核心心法,让你的Vibe Coding体验起飞
人工智能·agent
汤姆小白8 小时前
06-CLI命令参考
人工智能