edge-tts 免费语音合成教程:5 分钟让文字开口说话
【免费下载链接】edge-ttsUse Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key项目地址: https://gitcode.com/GitHub_Trending/ed/edge-tts
上次给 200 条字幕逐句配语音,你卡在第几条?如果一想到配音就头疼,可以停下手头的活看 5 分钟——edge-tts是一个 Python 工具,直接调用微软 Edge 内置的在线语音合成服务,不用申请 API 密钥、不依赖 Windows,把文本变成自然流畅的 MP3,一分钱不花。
🎧 它能替你搞定什么
免费调用微软级语音合成— 不订阅、不要密钥、不用装 Edge 浏览器,浏览器"大声朗读"背后那套神经网络语音引擎直接拿来用。
上百种语言、多种音色— 普通话、英语、法语、阿拉伯语……每种语言都有好几个男声女声,列表里还标了每个音色的性格特点。
音频和字幕一次出齐— 生成 MP3 的同时顺手产出带时间轴的 SRT 字幕,不用在剪辑软件里逐句对轨。
命令行和代码两个入口— 用edge-tts命令快速出音频,或在代码里 importedge_tts模块,看你顺手用哪个。
🚀 从零到跑通
1. 装好 edge-tts
一条命令,半分钟的事:
pip install edge-tts跑完没报错就算装好了。如果你只打算用命令、不写代码,pipx install edge-tts更干净,会装在独立环境里。
2. 生成第一句语音
装完别急着写代码,先让它开口:
edge-tts --text "你好,这是你的第一句合成语音" --write-media hello.mp3跑完会在当前目录生成hello.mp3,用任意播放器打开,是一段挺自然的默认英文女声。
3. 列出所有语音,挑一个喜欢的
默认音色是英文的,中文用户得先换人:
edge-tts --list-voices输出一张表:音色名、性别、适用场景、性格。搜zh-找普通话,zh-CN-XiaoxiaoNeural(甜美女声)和zh-CN-YunxiNeural(男声)用得最多。
4. 加参数,一次出音频加字幕
edge-tts --voice zh-CN-XiaoxiaoNeural --text "今天讲 Python 入门" \ --write-media lesson.mp3 --write-subtitles lesson.srt跑完得到两个文件:音频和 SRT 字幕,时间点由服务自动对齐,不用手动调。
一句话总结:到这里你只敲了四条命令,就拥有了"文字 → 人声 + 字幕"的完整产线。
🎬 三个真实场景,直接抄作业
场景一:电子书章节转有声书
痛点:一章五万字的书,人工读出来不现实。 解法:用--file把整个文本文件喂给命令,长文本会被自动切块合成,顺手用--rate调快一点更像播客。
edge-tts --file chapter1.txt --voice zh-CN-XiaoxiaoNeural \ --rate=+10% --write-media chapter1.mp3 --write-subtitles chapter1.srt效果:一章变成一份 mp3 加一份 srt,直接拖进播放器或剪辑软件就是成品。
场景二:批量给短视频配音
痛点:一个短剧拆出 20 个字幕文件,逐个生成音频太慢。 解法:命令天然适合 shell 循环,一个 for 循环扫完整个文件夹。
mkdir -p aud for f in subs/*.txt; do edge-tts --file "$f" --write-media "aud/$(basename "${f%.txt}").mp3" done效果:跑一遍,aud/目录里音频和字幕文件一一对应,直接进剪辑软件铺轨。
场景三:终端里直接听效果
痛点:每次换音色都要先生成文件再播放,反馈回路太长。 解法:用配套的edge-playback命令,边合成边播放,等价于"打字即发声"。
edge-playback --text "外卖已送达,请开门"效果:话音立刻从扬声器出来。注意非 Windows 系统要先装 mpv 播放器。
🔌 写进你的项目(代码集成)
如果你只需要在 Flask 或 FastAPI 接口里返回一个 mp3 文件,下面这段同步写法就够:
import edge_tts def make_speech(text: str, voice: str = "zh-CN-XiaoxiaoNeural") -> str: """生成语音,返回本地 mp3 路径""" out = "speech.mp3" communicate = edge_tts.Communicate(text, voice, rate="+10%") communicate.save_sync(out) # 第二个参数可传字幕 json 路径 return out生产环境注意:
- 调用外面包一层重试(指数退避),并设置
connect_timeout/receive_timeout,防止网络抖动时长时间挂住。 - 批量任务给
Communicate传入共享的aiohttpconnector复用连接,并发控制在 4~8,避免触发服务限流。 - 长文本不用手动切,库会按 4096 字节、优先在换行/空格处自动切块,并清掉控制字符(比如 OCR 出来的竖制表符)。
🛠 踩坑速查 & 调优手册
踩坑
- 报
NoAudioReceived或 403→ 服务端拒绝了请求,通常是请求签名过期或系统时钟不准。解法:先pip install -U edge-tts升到最新版,再确认系统时间开了自动同步。 --rate -30%不生效或报错→ 负值被当成了新的命令行选项。写成等号形式:edge-tts --rate=-30% --text "..."。edge-playback在 Linux/macOS 没声音→ 缺 mpv。brew install mpv或sudo apt install mpv;不做实时播放可以无视这条。
调优
- 用
--list-voices的输出当素材,按语言 + 性别过滤候选,批量试听再定稿。 rate和volume用百分比、pitch用 Hz;教学片-30%降速,沉稳感用-20Hz降调。- 长文本一律走
--file参数,绕开终端引号转义的坑。 - 字幕粒度可在
Communicate构造函数里设boundary,支持词级和句级两种。
🧭 接下来去哪儿
完整示例代码在 examples/ 目录,更多 CLI 参数看 README.md,想深入原理就翻 src/edge_tts/ 下的communicate.py和voices.py。基于它做二次开发时,建议 fork 一份或写独立脚本,不要直接改仓库里的源码。
以前需要付费 API 才能搞定的语音合成,现在离你只差一条 pip 命令。打开终端,输入pip install edge-tts,30 秒后你会听到第一句合成语音。
【免费下载链接】edge-ttsUse Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key项目地址: https://gitcode.com/GitHub_Trending/ed/edge-tts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考