edge-tts 快速指南:30 秒生成第一条 Edge 在线语音,无需浏览器与 API Key
2026/9/15 10:25:21 网站建设 项目流程

edge-tts 快速指南:30 秒生成第一条 Edge 在线语音,无需浏览器与 API Key

【免费下载链接】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

想让一段文字变成人声,通常只有两条路:装一个笨重的语音引擎,或者向云厂商付费申请 API 密钥。edge-tts 给出了第三条路——它直接调用 Microsoft Edge 的在线文本转语音服务,不需要安装 Edge 浏览器、不需要 Windows 系统,也不要用任何 API Key。它既能作为 Python 模块嵌进你的项目,也提供edge-ttsedge-playback两条命令行,三十秒就能跑通第一条语音。

先装好,再跑通第一条命令

只打算敲命令,用 pipx 装更干净,它会把工具隔离在独立环境里,不污染系统 Python;打算在代码里import,就装进自己的虚拟环境:

pipx install edge-tts # 只要命令行 pip install edge-tts # 要在 Python 代码中使用

然后一条命令完成"文字 → mp3 + 字幕":

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

--write-media决定音频落盘位置,--write-subtitles会同步生成逐词计时的 SRT 字幕。别省掉这个参数,否则字幕得事后自己重新对齐,费时费力。

不想等文件生成?用 edge-playback 边生成边出声

edge-playback --text "Hello, world!"

这条命令会把语音直接播出来并配上字幕,等于把"合成 + 播放器"合体了。它有两个前提要知道:非 Windows 系统需要先装 mpv 命令行播放器;--write-media--write-subtitles--list-voices三个选项它不认识——它的职责只是"念出来",写文件和列表的事归edge-tts管。

一条命令列出全部可用语音

edge-tts --list-voices

输出是一张包含名称、性别、适用内容类型、声音性格的表格,选语音就像查字典:先按语言代码圈范围,再按风格挑音色。比如让服务用埃及阿拉伯语女声念一句话:

edge-tts --voice ar-EG-SalmaNeural --text "مرحبا كيف حالك؟" --write-media hello_in_arabic.mp3 --write-subtitles hello_in_arabic.srt

语音代号和文本语言不匹配,念出来就会"驴唇不对马嘴",所以先从同一语言段里挑。

想达到什么效果,就调哪个参数

服务开放了三个旋钮,都是相对默认值调整、默认值为 0:

  • 想让朗读变慢或变快 →--rate,负值减速,正值加速
  • 想让声音变小或变大 →--volume
  • 想让音调变低或变高 →--pitch,单位是 Hz

有个语法坑:负值必须写成--rate=-50%这种带等号的格式,如果写成--rate -50%,命令行会把-50%误认成另一个选项,整条命令直接报错。想试听慢速效果,就试:

edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_lowered.mp3 --write-subtitles hello_with_rate_lowered.srt

另外它不支持自定义 SSML——服务端只接受 Edge 浏览器自己生成的 SSML,但语速、音量、音调这些能调的参数早已通过命令行全部开放,实际用法并不因此受限。

写进 Python 代码:三种例子覆盖常见需求

代码集成可以直接翻 examples/ 目录下的六个示例,最常见的三种姿势:

  • 同步生成edge_tts.Communicate(text, voice).save_sync("test.mp3")一行搞定简单任务,见 sync_audio_gen_with_predefined_voice.py
  • 流式 + 字幕stream()逐块返回数据,音频块写盘、词句边界事件喂给SubMaker,最后取出 SRT,见 async_audio_streaming_with_predefined_voice_and_subtitles.py
  • 动态换声音:每次合成前更换 voice 变量,见 async_audio_gen_with_dynamic_voice_selection.py

选流式而不是"全部回来再落盘"的原因:音频边合成边写盘,不占大内存,长文本任务也不容易卡在最后一步。

长文本和弱网:为什么有时快有时慢

edge-tts 是在线服务,生成速度基本等于网速。光纤这种 50Mbps 以上的环境,长段落几秒就回来;低于 10Mbps 时,长文本特别容易卡顿甚至连接中断。所以遇到长文本,最稳的做法是分段合成再拼接

  • 长文本用--file从文件读入(也支持-表示标准输入),而不是硬塞给--text,省掉一堆 shell 引号转义问题
  • 弱网或有网络限制的环境,加--proxy指定代理,它对合成和列出语音都生效

分段的真正好处是缩小失败面:某一段挂了只需重跑那一段,不至于整篇推倒重来。

边界与坑:提前知道,少踩一半

  • 离不开网络:它是远端服务,没有离线模式,别设计"断网可用"的功能
  • 长文本有长度限制:分段不是建议,是必要操作
  • 播放依赖环境edge-playback在 Linux / macOS 上要先装 mpv,Windows 除外
  • 声音不通用:特定语言在列表里通常只有几个可选,先从语言代码入手,再按风格挑音色

打开终端,敲下你的第一条命令,听听它念出来的声音——这比看十篇教程都直接。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询