【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 添加语音输出能力
  • 自动化测试:生成语音素材用于测试
相关推荐
言乐61 小时前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame
Shockang5 小时前
AI 智能体安全沙盒实战
人工智能
yuhulkjv3356 小时前
Claude表格复制到word不再崩溃,AI导出鸭批量导出+格式无损一键搞定
人工智能·ai·c#·word·ai导出鸭
从零开始学习人工智能7 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
大明者省7 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
抱抱宝7 小时前
Agent-study项目教程(03):手写 Mini-ReAct Agent(不依赖框架)
javascript·人工智能·gpt·react.js·prompt·agent
抱抱宝7 小时前
大模型应用开发教程08 | 构建完整 RAG 应用(Chroma/FAISS 实战)
人工智能·gpt·prompt·agent
美团技术团队8 小时前
KDD‘26 美团学术论文精选及KDD Cup‘26 DataAgents赛道冠军思路解读
人工智能
AKAMAI8 小时前
当AI模型超出存储增长时
人工智能·云计算
WWJA王文举8 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言