开源!Edge TTS 音频转换工具 v2.1:批量文本转语音,支持段落拆分与多发音人

📌 写在前面

在日常工作和学习中,我们经常需要将文本内容转换为音频文件------制作有声书、生成课程音频、为视频配音等等。市面上的 TTS 工具要么收费昂贵,要么需要联网调用 API,要么功能单一不能满足批量处理的需求。

今天给大家推荐一款完全免费、本地运行、功能强大 的音频转换工具:Edge TTS 音频转换工具 v2.1。

它基于微软 Edge 浏览器官方 TTS 引擎开发,支持 TXT、DOC、DOCX 格式文件的批量转换,内置多种中文发音人 (大陆普通话、香港粤语、台湾国语),还能按段落或按行拆分文本,每个段落生成独立的音频文件。

开源地址:见文末(代码已附)


🚀 主要功能

功能模块 说明
📁 文件管理 支持添加单个文件、整个文件夹,支持移除/清空
🎤 发音人选择 大陆/香港/台湾三地发音人,按性别和风格分类展示
📢 参数调节 语速(-50%~+100%)、音量(-100%~+100%)、音调(-20Hz~+20Hz)
✂️ 拆分模式 整文件模式 / 按段落拆分 / 按行拆分
💾 输出设置 自定义输出目录,自动避免文件名冲突
📋 运行日志 实时显示转换进度,支持导出日志
💾 设置保存 自动保存上次使用的参数和输出目录

🖼️ 界面预览

🔧 核心代码解析

1. 文本拆分逻辑

复制代码
def split_text_by_mode(text: str, mode: str) -> List[str]:
    """根据模式拆分文本"""
    if mode == 'single':
        return [text]
    elif mode == 'paragraph':
        # 按空行分割段落
        paragraphs = [p.strip() for p in text.split('\n\n') if p.strip()]
        return paragraphs if paragraphs else [text]
    elif mode == 'line':
        # 按行分割
        lines = [line.strip() for line in text.split('\n') if line.strip()]
        return lines if lines else [text]
    return [text]

2. 异步转换核心

复制代码
async def convert_single_file(self, file_path: str, ...):
    text_content = read_text_file(file_path)
    text_segments = split_text_by_mode(text_content, self.split_mode)
    
    for seg_idx, segment in enumerate(text_segments, 1):
        communicate = edge_tts.Communicate(
            text=segment,
            voice=self.params['voice'],
            rate=self.params['rate'],
            volume=self.params['volume'],
            pitch=self.params.get('pitch', '+0Hz')
        )
        await communicate.save(str(output_path))

3. 发音人分类加载

复制代码
# 按地区分类中文发音人
categorized_voices = {'zh-CN': [], 'zh-HK': [], 'zh-TW': []}
for voice in voices:
    locale = voice["Locale"]
    if locale.startswith("zh-CN"):
        categorized_voices['zh-CN'].append(voice)
    # ...

📦 环境依赖

bash

复制代码
pip install edge-tts PyQt5 python-docx

注意:无需安装 FFmpeg(edge-tts 不依赖 FFmpeg)


🎯 使用场景

场景 推荐配置
有声书制作 晓伊/晓柔 + 按段落拆分 + 语速 -10%
课程音频 晓晓 + 整文件模式 + 语速 0%
粤语内容 曉佳/雲龍 + 香港发音人
广告配音 云希 + 语速 +20% + 音调 +5Hz
批量文档转音频 任意发音人 + 添加文件夹 + 批量处理

💡 使用技巧

  1. 拆分模式的选择

    • 整文件模式:适合完整的文章、报告

    • 按段落拆分:适合有声书、章节分明的文档

    • 按行拆分:适合诗歌、台词、逐句跟读材料

  2. 发音人推荐

    • 通用场景:晓晓(女)、云健(男)

    • 故事有声书:晓伊(女)

    • 广告促销:云希(男)

  3. 参数调节

    • 语速 -10%~0%:适合学习、跟读

    • 语速 +10%~+20%:适合快速浏览

    • 音量可根据原始文本适当调整


📝 完整代码

代码可以通过以下方式获取:

在评论区留言666.


🏆 版本更新记录

版本 更新内容
v1.0 基础 TTS 转换功能
v2.0 图形界面重构,三地发音人分类
v2.1 新增段落/行拆分模式,自动保存设置

📌 总结

这款工具的核心优势在于:

✅ 完全免费 - 基于 Edge 官方 TTS,无需 API Key

✅ 本地运行 - 数据不上传,保护隐私

✅ 批量处理 - 支持文件夹批量导入

✅ 灵活拆分 - 按段落/按行,满足多种需求

✅ 界面友好 - 中文界面,操作直观

无论是制作有声书、生成课程音频,还是批量处理文档,这款工具都能帮你高效完成任务。


如果觉得有用,欢迎点赞、收藏、转发!

有任何问题或建议,欢迎在评论区留言交流~

相关推荐
第10086个小白7 小时前
flutter桌面端打包方式(Inno Setup Compiler)版本
前端·flutter
派小心.7 小时前
多端数据分析平台的漏斗可以跨端搭建吗?5 步搭出跨端转化漏斗
大数据·运维·服务器·前端·数据分析
AliCloudROS7 小时前
MiniMax-H3 视频生成模型 — 一键部署与使用指南
人工智能·音视频
IT_陈寒7 小时前
为什么我的React组件一直在意外重渲染?
前端·人工智能·后端
Su米苏7 小时前
基于 Token 预算的上下文压缩控制器(Context Compaction Controller)
前端·数据库·人工智能
骇客野人7 小时前
Java 开发组件大全覆盖后端主流技术栈(基础、Web、ORM、中间件、微服务、安全、工具、测试、运维、信创适配常用组件)
java·前端·中间件
风骏时光牛马8 小时前
大模型底层架构与推理流程AI源码深度剖析
前端
Setsuna_F_Seiei17 小时前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
zhangzeyuaaa18 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙18 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript