【音频工具】通过Edge-TTS 实现批量txt转mp3,完全免费
近期,在工作中遇到TXT文件批量转MP3音频的实际需求,
上网查了一些资料,终于跑通了一个比较靠谱的方案。
完全免费!不过需要安装Python环境。
这个方案是利用微软的语音合成服务,
语音质量高,且完全免费,非常适合批量处理。
今天就分享给大家吧。
使用 Edge-TTS 从零开始实现批量 TXT 转 MP3 的完整步骤如下:
第一步:环境准备与安装
确保你的电脑已准备好运行Python脚本的环境。
1、安装 Python
访问 Python官网 下载并安装最新版本(建议3.7或更高)。
网址:https://www.python.org/downloads/

在安装过程中,请务必勾选 “Add Python to PATH” 选项。
2、安装必要库
打开命令提示符 (CMD) 或 PowerShell,输入以下命令安装核心库:
pip install edge-tts

这个命令会自动安装 edge-tts 及其依赖。
第二步:创建并配置脚本
在一个方便的位置(例如D盘)新建一个文件夹,命名为 TTS_Project。
在这个文件夹内:
1、新建 Python 脚本文件
创建一个新的文本文件,将其重命名为 batch_convert.py(注意扩展名是 .py)。
右键用记事本或任何代码编辑器(如VS Code, Notepad++)打开它。
2、编写核心脚本代码
将以下代码完整复制到 batch_convert.py 中:
# batch_convert.py
import os
import asyncio
import edge_tts
# ============== 配置区域 (开始) ==============
# 1. 设置你的TXT文件所在的文件夹路径(支持绝对或相对路径)
TXT_FOLDER = "./txt_files" # 默认当前目录下的txt_files文件夹
# 2. 设置语音参数
VOICE = "zh-CN-YunyangNeural" # 最常用的中文男声,发音清晰自然
RATE = "+0%" # 语速调节,-50%更慢,+100%更快
VOLUME = "+0%" # 音量调节,-50%更小,+50%更大
# 3. 设置输出MP3的文件夹路径
OUTPUT_FOLDER = "./mp3_output"
# ============== 配置区域 (结束) ==============
async def convert_single_file(txt_file_path, output_file_path):
"""转换单个TXT文件为MP3"""
try:
# 读取TXT文件内容(使用utf-8编码以支持中文)
with open(txt_file_path, "r", encoding="utf-8") as f:
text_content = f.read().strip()
if not text_content:
print(f" [警告] 文件内容为空,跳过: {txt_file_path}")
return
print(f" [处理中] 文本长度: {len(text_content)}字符")
# 创建TTS通信对象并合成语音
tts = edge_tts.Communicate(
text=text_content,
voice=VOICE,
rate=RATE,
volume=VOLUME
)
await tts.save(output_file_path)
print(f" [完成] 已保存: {output_file_path}")
except Exception as e:
print(f" [错误] 处理文件 {txt_file_path} 时出错: {str(e)}")
async def batch_convert():
"""批量转换主函数"""
# 检查并创建输出文件夹
if not os.path.exists(OUTPUT_FOLDER):
os.makedirs(OUTPUT_FOLDER)
print(f"[信息] 创建输出文件夹: {OUTPUT_FOLDER}")
# 获取所有TXT文件
txt_files = [f for f in os.listdir(TXT_FOLDER) if f.lower().endswith(".txt")]
if not txt_files:
print(f"[错误] 在文件夹 '{TXT_FOLDER}' 中未找到任何TXT文件!")
return
print(f"[信息] 找到 {len(txt_files)} 个TXT文件,开始转换...")
# 遍历并转换每个文件
for filename in txt_files:
txt_path = os.path.join(TXT_FOLDER, filename)
# 生成对应的MP3文件名(同名,仅扩展名改为.mp3)
mp3_name = os.path.splitext(filename)[0] + ".mp3"
mp3_path = os.path.join(OUTPUT_FOLDER, mp3_name)
print(f"\n▶ 正在处理: {filename}")
await convert_single_file(txt_path, mp3_path)
print(f"\n{'='*50}")
print(f"[批量转换全部完成!]")
print(f"MP3文件已保存至: {os.path.abspath(OUTPUT_FOLDER)}")
if __name__ == "__main__":
# 运行异步主函数
asyncio.run(batch_convert())
第三步:准备与运行
1、准备文件结构
在你的 TTS_Project 文件夹内,按脚本配置创建一个名为 txt_files 的文件夹。
将所有需要转换的 .txt 文件放入其中。
TTS_Project/ ├── batch_convert.py (你刚创建的脚本) └── mp3_output/ (生成MP3的目录) └── txt_files/ (放txt文件的目录) ├── 文章1.txt ├── 文章2.txt └── 文章3.txt
注意:如果TXT文件在其他位置,可以修改脚本中 TXT_FOLDER 的路径,例如 TXT_FOLDER = "D:/TTS_Project/txt_files"。
提示:TXT文件编码必须是UTF-8,如果不是UTF-8,请用记事本打开TXT文件,另存为时选择“UTF-8”编码。

2、运行脚本
然后,在 TTS_Project 文件夹内,空白区域,点击鼠标右键,选择 “在此处打开Powershell窗口” 或 “打开命令窗口”或“在终端中打开”。
在打开的终端中,输入以下命令并回车:
python batch_convert.py
脚本将开始运行。
你会看到详细的处理日志,
完成后会提示保存路径。


第四步:语音个性化与高级技巧
1、更换发音人
脚本中 VOICE = "zh-CN-YunyangNeural" 使用的是云阳(中文男生)。Edge-TTS支持多种声音,你可以通过以下命令查看所有可用语音:
edge-tts --list-voices
将输出列表中的 ShortName 赋值给 VOICE 即可更换,例如:
zh-CN-YunxiNeural (云希,男声,年轻活泼)
zh-CN-XiaoyiNeural (晓伊,女声,情感丰富)
en-US-AriaNeural (阿丽亚,美式英语女声)

2、调节语速与音量
语速 (RATE):"+0%" 是正常语速。"-30%"会更慢更清晰,适合听书;"+30%"会更快。
音量 (VOLUME):"+0%" 是正常音量。通常不需要调整。

3、处理长文本与超时
如果文本非常长,可能会遇到超时错误。可以通过增加超时限制来解决:
# 在convert_single_file函数中,修改tts对象创建 tts = edge_tts.Communicate( text=text_content, voice=VOICE, rate=RATE, volume=VOLUME, proxy=None, # 如有需要可设置代理 timeout=30 # 将超时时间设为30秒或更长 )
4、直接使用命令行单文件转换(快速测试)
如果你想快速测试某个TXT文件的效果,可以直接在终端中使用命令:
edge-tts --text "$(cat 你的文件.txt)" --voice zh-CN-XiaoxiaoNeural --write-media 输出.mp3
这个方案的优势在于高质量语音、完全免费、可高度自定义。
一旦设置好脚本,后续的批量转换就只是一条命令的事情。
本文用到的文件已为大家打包好,可以按照下面方法下载:

微信扫一扫,下载本文项目源码
好了,今天就讲到这里了,
下期再见!
免责声明:本站所发布信息部分整理自互联网具有公开性、共享性的信息,发布此信息旨在传播更多信息之目的,不代表本网站立场,转载请联系原作者并注明出处,如果侵犯了您的权益请与我们联系;本站提供的一切软件、教程和内容信息仅限用于学习和研究目的,无法保证有效性,真实性需自行辨别,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容;如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务,我们非常重视版权问题,如有侵权请邮件与我们联系处理,我们将在24小时内更正、删除。E-mail:admin@bsfc.net

