news 2026/10/30 16:45:40

edge-tts 实战:一条命令免费生成多语言文本转语音 MP3

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
edge-tts 实战:一条命令免费生成多语言文本转语音 MP3

edge-tts 实战:一条命令免费生成多语言文本转语音 MP3

【免费下载链接】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 key,要么按字符计费,成本不好控制。edge-tts 绕开了这些问题:它直接复用 Microsoft Edge 内置的在线文本转语音服务,从 Python 或命令行就能生成 MP3 音频和 SRT 字幕,不需要 Windows,也不需要任何密钥。

用 pipx 装好 edge-tts,一条命令生成 MP3 和字幕

如果只用命令行,推荐用 pipx 安装,工具会放在隔离环境里,不占你的日常 Python 环境:

pipx install edge-tts

装完即得edge-tts和edge-playback两条命令。最小的生成组合是--text指定内容、--write-media指定落盘位置,字幕可以顺手一起写:

edge-tts --text "你好,世界!" \ --voice zh-CN-XiaoxiaoNeural \ --write-media hello.mp3 \ --write-subtitles hello.srt

跑完会在当前目录得到 hello.mp3 和一份带时间戳的字幕文件。文本较长时也可以改用--file直接从文件读入(传-表示从标准输入读取)。

不想落盘就直接听,edge-playback内部会先调用 edge-tts 合成到临时文件、播放后清理,Linux 和 macOS 上需要先装好 mpv 播放器:

edge-playback --text "欢迎使用 edge-tts" --voice en-US-AriaNeural

除了--write-media、--write-subtitles、--list-voices三个选项,其余参数都可以原样传给edge-playback。

列出全部语音,按语言或性别挑一个

不必背语音名。命令加--list-voices会打印完整清单,列里包含性别、内容类别和性格风格:

edge-tts --list-voices | grep "zh-CN"

输出里能找到 zh-CN-XiaoxiaoNeural(女声)、zh-CN-YunyangNeural(男声)等中文语音,挑中哪个就把名字填进--voice。不传--voice时默认使用 en-US-EmmaMultilingualNeural。

写脚本时可以筛得更精确。src/edge_tts/voices.py 里的VoicesManager支持按 Language、Gender、Locale 等维度组合查询:

voices = await VoicesManager.create() picked = voices.find(Gender="Male", Language="zh")

返回的是一个列表,交给random.choice或者按业务规则挑选都可以,完整的动态选声写法见 examples/async_audio_gen_with_dynamic_voice_selection.py。

语速、音量、音调怎么微调

暴露了三个参数:rate 调语速、volume 调音量、pitch 调音调,默认都不改变(rate/volume 为+0%,pitch 为+0Hz):

edge-tts --text "把语速放慢,声音压低" \ --voice zh-CN-YunxiNeural \ --rate=-30% --volume=+20% --pitch=-10Hz \ --write-media demo.mp3

这里有个小坑:负值必须写成--rate=-30%这种等号形式,用空格分开会被当成独立选项直接报错。

这三个值最终会填进 SSML 的 prosody 节点发给服务,对应逻辑在 src/edge_tts/communicate.py 的mkssml()函数里。

用 Python 脚本批量合成多个音频

文本一多,命令行就不够用了,这时换成 Python 接口。入口是Communicate类,同步场景用save_sync()循环即可:

import edge_tts VOICE = "zh-CN-YunyangNeural" for i, line in enumerate(read_lines("chapter.txt"), 1): edge_tts.Communicate(line, VOICE, rate="+10%").save_sync(f"ch_{i}.mp3")

这段是 examples/sync_audio_gen_with_predefined_voice.py 的略加扩写版本,注意 voice 是第二个位置参数,rate 等走关键字参数,每段依次得到 ch_1.mp3、ch_2.mp3。

规模上去后有两件事值得注意:

  • 并发控制:服务端对连接数有限制,批量任务建议用asyncio.Semaphore(比如 5)包住异步的save()再并发。
  • 长文本:不用手动切分。Communicate构造时已经用split_text_by_byte_length()按 4096 字节自动分段,优先在换行或空格处断开,不会截断多字节字符或&这类实体。

避坑清单:代理、进度条、报错与音质

  • 合成报 NoAudioReceived:几乎都是 voice 名拼错或文本为空,先用--list-voices核对语音名。
  • 进度条干扰输出:stderr 是终端时合成过程会画进度条;把输出重定向或写字幕到 stderr 时会自动隐藏,也可以手动加--no-progress。
  • 网络受限制约:命令追加--proxy即可,合成和拉取语音列表都会走代理。
  • 别试自定义 SSML:服务只接受 Edge 自身生成的 SSML,自定义 SSML 支持已被移除,可调项目前已全部暴露在 rate/volume/pitch 参数里。
  • 音质是固定的:输出为 24kHz、48kbps 的 mono MP3,没有质量参数可调,需要更高码率得用 FFmpeg 后处理。

小结

edge-tts 把免费文本转语音最常用的三件事——单次生成、参数微调、批量脚本——都覆盖了,拿来当项目的音频生成层基本够用。往后的延伸方向有三个:用 FFmpeg 把多个 MP3 拼接成长文件并转格式;把Communicate封装成 FastAPI 服务,对外暴露一个文本转语音接口;或者按文本语气匹配不同风格的声音,让朗读更接近"情感化"效果。

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

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

像素与焦距的关系:高像素机身如何用裁切白嫖长焦

老实说,每次看到有人争论“一亿像素是不是能秒杀专业相机”,我都想先抛出一句非常反直觉的话:像素和焦距,本来就是两个维度的东西,但它们最终又会在同一张照片里互相成就。像素决定了你能记录多少细节,焦距…

作者头像 李华
网站建设 2026/10/22 13:56:34

监管智能体落地工程:MaaS底座、数据筛查与预警闭环

从工程视角看,政府采购监管智能体是一次典型的智能应用落地:以统一数据底座为基座,以筛查、校验、预警为能力,以处置闭环为终点。一、架构设计三层架构:底座层提供大模型和数据能力,平台层承载业务数据与规…

作者头像 李华
网站建设 2026/10/22 10:23:43

图像处理核心算法精讲:频域滤波、Canny边缘检测与去噪复原实战

简介:图像处理课程第五章“图像分割与边缘检测”的配套教学课件,适用于课程同步学习、考前复习与入门自学,面向高校图像处理相关专业学生及对计算机视觉感兴趣的初学者。内容系统讲解图像分割的基本概念、图像特征与三类实现策略,…

作者头像 李华
网站建设 2026/10/21 6:13:35

如何避免无效勤奋:战略思考与执行优化

1. 为什么我们总是陷入"无效勤奋"的陷阱上周团队复盘会上,小张的汇报让我印象深刻。他展示了密密麻麻的工作清单:连续加班46天,处理了287张工单,参加了83场会议。但当我问"这些工作对季度目标贡献度是多少"时…

作者头像 李华
网站建设 2026/10/22 21:26:44

AI调研队配置:一个主编、三个工种、两本手册,搞定深度调研

你会不会也有这种体验:让AI帮你做个调研,问了一轮感觉像在聊天,再问一轮开始跑题,好不容易拿回一份像模像样的报告,仔细一看却全是“正确的废话”。我自己折腾了大半年,试过各种花式提问,最后发…

作者头像 李华