news 2026/10/20 13:28:08

edge-tts 实战:免费在线语音合成,把文本变成 MP3 和 SRT 字幕

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
edge-tts 实战:免费在线语音合成,把文本变成 MP3 和 SRT 字幕

edge-tts 实战:免费在线语音合成,把文本变成 MP3 和 SRT 字幕

【免费下载链接】edge-ttsUse Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge项目地址: https://gitcode.com/GitHub_Trending/ed/edge-tts

给课件录音、做有声书时,商业 TTS 接口往往要先注册账号、申请密钥、按量计费。edge-tts 直接调用 Microsoft Edge 内置的在线语音合成服务,一行命令把文本转成 MP3 音频和 SRT 字幕:不要 API key、不要账号,只要装好 Python 就能用,也不依赖 Windows 或 Edge 浏览器本身。

edge-tts 安装步骤与验证

先安装:

pip install edge-tts

如果只用edge-tts、edge-playback两个命令而不用 Python 模块,官方 README 建议改用 pipx 隔离安装:

pipx install edge-tts

然后跑第一条命令:

edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.srt

成功的标志有三点:

  • 当前目录多出hello.mp3(24kHz 单声道、48kbps 恒定码率 MP3)和hello.srt(带时间戳的字幕)两个文件;
  • 运行过程中 stderr 会显示一条进度条,例如42%|██████... | 1.5MB 00:03<00:04,按已收到音频的比例推进;
  • edge-tts --version能打印版本,例如edge-tts 7.3.1。

一个默认行为值得留意:不写--write-media时音频直接输出到标准输出,方便接管道;在交互终端里这样做,命令会先警告并等你按回车确认,Ctrl+C 可取消。

edge-tts 能力总览

能力适用场景触发方式
文本合成 MP3单条配音、批量产出音频edge-tts --text "..." --write-media out.mp3
同步生成 SRT 字幕课件视频、有声书加字幕上一命令加--write-subtitles out.srt
列出全部声音挑选 voice 名称edge-tts --list-voices
合成完立即播放试听声音edge-playback --text "..."
从文件或 stdin 读文本长讲义转有声、流水线接入edge-tts --file book.txt或--file -
调语速 / 音量 / 音调课程慢速朗读、降音--rate、--volume、--pitch
Python 合成 API写进自己的程序edge_tts.Communicate
声音按属性筛选条件或随机选音VoicesManager

edge-tts 参数速查

参数作用取值示例默认值
-t/--text要合成的文本"你好"必填,与--file二选一
-f/--file从文件读文本,-表示 stdinbook.txt无
-v/--voice声音名,用--list-voices查ar-EG-SalmaNeuralen-US-EmmaMultilingualNeural
--rate语速+20%、-50%+0%
--volume音量-10%+0%
--pitch音调-20Hz+0Hz
--write-media音频写入文件hello.mp3无,音频走 stdout
--write-subtitlesSRT 写入文件,-表示输出到 stderrhello.srt无
--list-voices列出所有声音后退出无值—
--proxyTTS 与语音列表请求的代理http://127.0.0.1:7890无
--no-progress隐藏进度条无值stderr 为终端时自动显示

--list-voices输出 Name、Gender、ContentCategories、VoicePersonalities 四列表格,声音名称以实际输出为准。

典型场景实战

长讲义读成有声书

目标:讲义文本文件直接变 MP3 + SRT,不做任何预处理。

操作:

edge-tts --file lecture.txt --write-media lecture.mp3 --write-subtitles lecture.srt

产出:一对同目录文件。长文本内部按 4096 字节切段发送,切分点优先落换行、其次空格,且不会截断多字节 UTF-8 字符,中文长文不会切出乱码;字幕时间戳按实际收到的音频字节重新校正,长音频也不会越滚越漂。切分逻辑在 src/edge_tts/communicate.py。

挑声音再试听

目标:不凭记忆猜声音名,先查后定。

操作:

edge-tts --list-voices edge-playback --voice <声音名> --text "试一句"

产出:试听满意的声音名,正式生成时传同一个--voice。Windows 下 edge-playback 开箱即用;其他平台需要先装mpv命令行播放器。edge-tts 的参数(除--write-media、--write-subtitles、--list-voices)在 edge-playback 下同样可用。

管道传文本

目标:上游命令的输出不落中间文件,直接进语音合成。

操作:

cat notes.txt | edge-tts --file - --write-media notes.mp3

产出:notes.mp3。--file -表示从 stdin 读文本。

接入 edge-tts 到自己的代码

最短可运行示例:

import edge_tts communicate = edge_tts.Communicate("Hello World!", "en-GB-SoniaNeural") communicate.save_sync("test.mp3")

同步与异步的对应关系:

  • save_sync阻塞到文件写完,适合普通脚本;asyncio 程序里用await communicate.save(...),可顺带写一份边界元数据文件;
  • 要逐块处理(实时字幕、边合成边写)时,遍历communicate.stream(),同步场景用等价的stream_sync();
  • 构造参数除 voice、rate、volume、pitch 外,还有boundary(词边界或句边界,默认句边界)、proxy,以及connect_timeout、receive_timeout(默认 10 秒与 60 秒)。

仓库自带六个完整脚本,覆盖同步/异步、生成与流式两种模式,参考 examples/。

edge-tts 避坑记录

  1. 现象:--rate -50%直接报错。原因:以减号开头的值被命令行解析成新选项。解法:用等号形式--rate=-50%,--volume、--pitch同理。
  2. 现象:合成中文文本却用英文口音朗读。原因:默认声音是en-US-EmmaMultilingualNeural。解法:显式传--voice,名称从--list-voices输出里选。
  3. 现象:脚本里重定向后看不到进度条。原因:进度条只在 stderr 是终端时显示,--write-subtitles -和--no-progress也会关闭它。解法:属设计行为,需要进度条就在终端里直接运行。
  4. 现象:Linux / macOS 上跑 edge-playback 提示 mpv 未安装。原因:非 Windows 平台的播放交给 mpv。解法:安装 mpv;Windows 无此要求。
  5. 现象:想自己拼 SSML 微调参数,发现入口没了。原因:服务端只接受 Edge 自己生成的 SSML,自定义 SSML 支持已移除。解法:语速、音量、音调直接用--rate、--volume、--pitch三个参数覆盖。

源码与文档深入索引

  • 项目文档:README.md
  • 使用示例脚本:examples/
  • 合成核心(长文本切分、SSML 组装、WebSocket 流):src/edge_tts/communicate.py
  • 声音列表与属性筛选:src/edge_tts/voices.py
  • SRT 字幕生成:src/edge_tts/submaker.py
  • 命令行入口与参数解析:src/edge_tts/util.py
  • 播放模块:src/edge_playback/
  • 默认声音与音频格式常量:src/edge_tts/constants.py

下一步

  1. 跑一次edge-tts --list-voices,按 ContentCategories 和 Gender 两列筛出候选;
  2. 用edge-playback --voice <声音名> --text "..."试听定稿;
  3. 满意后用--write-media加--write-subtitles产出第一对音频与字幕文件。

【免费下载链接】edge-ttsUse Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge项目地址: https://gitcode.com/GitHub_Trending/ed/edge-tts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 13:28:07

大模型Scaling实战:参数量、数据量与计算量的协同扩展策略

1. 大模型 Scaling 到底在“扩”什么很多人第一次接触大语言模型训练&#xff0c;看到“Scaling”这个词&#xff0c;脑子里浮现的就是“把模型做大”。这个理解不算错&#xff0c;但只对了一半。真正在一线做过训练的人会告诉你&#xff0c;Scaling 是一整套关于资源如何分配、…

作者头像 李华
网站建设 2026/10/20 13:27:50

AI论文写作工具实战指南:四类工具组合工作流与避坑要点

凌晨两点&#xff0c;论文文档还是一片空白&#xff0c;光标一闪一闪&#xff0c;像是在催命。选题没定&#xff0c;文献翻了几十篇&#xff0c;脑子却像被浆糊糊住&#xff0c;导师的消息在置顶栏挂着&#xff0c;就等着你的提纲——这个场景&#xff0c;凡是写过论文的人应该…

作者头像 李华
网站建设 2026/10/20 13:25:24

DeepSeek API 调用全链路指南:从权限申请到生产集成避坑

简介&#xff1a;这份文档面向希望接入DeepSeek服务的软件工程师、科研人员及技术爱好者&#xff0c;系统梳理了从申请API访问权限到集成应用的完整流程。内容涵盖获取API密钥、研读官方接口文档、选择Python等开发环境、安装依赖库、构造带身份验证的请求、解析JSON响应&#…

作者头像 李华
网站建设 2026/10/20 13:24:31

SpringBoot+Vue水果商城系统实战:从订单事务到前后端分离部署

做水果电商系统这件事&#xff0c;乍一听挺常规&#xff0c;真到落地的时候&#xff0c;坑比想象中多。最近把一个企业级精品水果线上销售网站的管理系统完整源码过了一遍&#xff0c;技术选型是SpringBoot Vue MyBatis MySQL&#xff0c;这正好是目前中小团队做电商项目里比…

作者头像 李华
网站建设 2026/10/20 13:24:26

从零实现rea:轻量级实时数据读取与响应式处理模块

1. 从“rea”这个标题说起&#xff1a;一个极简命名背后的完整项目思维第一次看到“rea”这个标题&#xff0c;很多人会愣一下——三个字母&#xff0c;没有上下文&#xff0c;没有说明&#xff0c;甚至连大小写都没法判断。但恰恰是这种极简命名&#xff0c;在真实的项目开发中…

作者头像 李华
网站建设 2026/10/20 13:24:13

RemoteSensing投稿三件套:Word+EndNote+LaTeX格式协同实战指南

简介&#xff1a;本资源是专为RemoteSensing期刊投稿设计的Word格式官方模板&#xff0c;配套EndNote参考文献管理说明&#xff0c;面向遥感领域科研人员、高校研究生及青年学者&#xff0c;解决论文格式不规范、引用格式混乱、章节结构缺失等常见投稿痛点。压缩包仅含1个DOC文…

作者头像 李华