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-tts和edge-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),仅供参考