【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 添加语音输出能力
  • 自动化测试:生成语音素材用于测试
相关推荐
shimly1234562 小时前
python3 venv 是啥?
python
小鹿软件办公2 小时前
倒计时开启:Chromium 宣布几周内将全面切断 MV2 扩展支持
开发语言·javascript·ublock origin
kyle~2 小时前
推理部署---CUDA 执行模型(SM、Block、Warp 与 SIMT)
人工智能·nvidia·cuda
淮南颂恩少儿编程C++2 小时前
在淮南:编程信息学培训与 C++ 信奥赛:从 CSP 到 NOI 的进阶之路
人工智能·学习·青少年编程
甲维斯2 小时前
真不想吹Claude Fable了,奈何实力不允许!
人工智能·ai编程·游戏开发
想要成为计算机高手2 小时前
用meta quest 3 遥操宇树机器人-xr_teleoperate 复现(含docker安装与配置方式)
人工智能·docker·机器人·xr·g1·具身智能
aqi002 小时前
15天学会AI应用开发(六)使用离线大模型对文本生成摘要
人工智能·python·ai编程
qq_411262422 小时前
AI-02模组架构与Coze智能体接入说明
人工智能·ai·架构·esp32-c3·coze·四博
果丁智能2 小时前
民宿/网约房数字化升级:基于智能锁的身份核验与远程授权解决方案
人工智能·智能家居
codecrafter1232 小时前
sh:在 Python 里直接调系统命令
开发语言·python·其他