拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Python+edge-tts批量生成教材单词朗读MP3工具

这次我们来看一个非常具体的教育工具人教版普通高中教科书英语必修第一册 Welcome Unit 单词朗读工具。它解决的问题很直接——教材配套音频资源里单词朗读往往是和课文、对话打包在一起的想单独提取某个单词的发音要么手动剪音频要么去第三方 App 里一个一个导出效率很低。而老师在做课前预习材料、听写音频学生在做背单词卡、磨耳朵音频时最合适的格式就是一个单词对应一个 MP3 文件。这个方案的技术栈不复杂核心是三件事整理 Welcome Unit 词汇表、选一个 TTS 引擎、写一个批量生成脚本。整套流程不依赖显卡不需要 GPU普通办公电脑和轻薄本都能跑启动方式是命令行跑完直接输出一个音频文件夹。如果你想把能力接进自己的小程序、网页或者内部工具还可以再加一层 HTTP 接口。这篇文章按实操顺序展开先看核心能力速览和适用场景再准备 Python 环境与 TTS 依赖然后给出可复制的批量生成脚本接着完成单单词、批量、接口 API 三轮验证最后整理常见问题和工程化建议。整个过程不依赖付费 API 也能跑通适合英语老师、学生家长、教育工具开发者和刚接触 TTS 批量任务的 Python 用户阅读。1. 核心能力速览先给一张规格表方便快速判断这个工具适不适合你。能力项说明项目定位教材词汇朗读批量生成工具目标内容人教版普通高中教科书英语必修第一册 Welcome Unit 词汇主要功能按单词批量生成英文朗读音频输出 MP3 文件硬件门槛无 GPU 要求普通 CPU 即可运行运行平台Windows / macOS / LinuxPython 3.9 及以上启动方式命令行脚本运行可选 FastAPI 包装成 HTTP 服务是否支持 API支持可提供 /api/tts、/api/batch 等接口是否支持批量任务支持词汇表驱动批量生成输出格式MP3 音频文件名与单词一一对应自定义能力可选择不同 TTS 音色、语速、音量适合场景课前预习音频、听写材料、单词卡配音、教学课件这张表里唯一需要实际确认的是 TTS 引擎。下文采用的 edge-tts 是社区里常用的微软 Edge 在线朗读服务封装库音色自然、免费、支持多语种。如果你的网络环境访问这个服务不稳定可以换成离线方案 pyttsx3或者使用自己账号下的商业云 TTS API。脚本主体逻辑不用动只需要替换生成音频的那一个函数。2. 适用场景与使用边界这个工具的使用人群很清晰英语老师把 Welcome Unit 词汇提前做成音频包发给学生课前跟读也可以用来生成听写材料省去自己反复录音的时间。学生把单词音频导入手机播放器或背单词软件利用碎片时间反复听比每次查词典听发音更省事。家长在家帮孩子预习、复习不需要逐词查发音直接把音频放给孩子听。教育工具开发者把 TTS 能力封装成接口给单词卡 App、听力小程序、课件生成工具调用。需要说明的是这个工具解决的是朗读音频生成这一个环节它不会自动整理教材词汇。词汇表需要自己维护或者从教材词汇表复制整理。教材内容用于个人学习、课堂教学材料制作没有问题但如果是批量复制并重新发布教材词汇表或者拿去做大规模商业分发就要先确认版权边界。TTS 引擎同样有自己的使用条款个人学习和小范围教学使用问题不大大规模商用建议使用有明确商用授权的云 TTS 服务。另外这个工具只处理单词文本不涉及人脸、声音克隆、用户隐私数据风险点相对少但如果后续扩展成整句跟读作文朗读等功能被朗读的文本如果有作者版权也需要确认授权后再使用。3. 环境准备与前置条件3.1 硬件与系统要求操作系统Windows 10/11、macOS、主流 Linux 发行版都可以。内存日常办公配置即可不需要独立显卡也不需要 CUDA 环境。磁盘空间单个单词音频通常不大整个 Welcome Unit 词汇全部生成也不会占用多少空间具体以实际生成文件为准。网络edge-tts 方案需要联网访问微软的在线 TTS 服务如果网络条件不允许改用离线 TTS 方案。3.2 Python 环境检查建议使用 Python 3.9 及以上版本。先确认本机 Python 和 pip 可用python --version pip --version如果提示python不存在Windows 用户可以检查是否安装了 Python 并勾选了Add Python to PATH或者尝试python3命令。3.3 安装 TTS 依赖pip install edge-tts安装完成后可以用下面的命令列出可用的英文音色确认依赖已经正常工作edge-tts --list-voices | grep en-US如果输出中包含en-US-JennyNeural、en-US-GuyNeural、en-US-AriaNeural这类音色 ID说明 edge-tts 安装成功并且能够正常访问语音服务。3.4 离线备用方案如果你的运行环境无法访问在线 TTS 服务可以直接改用 pyttsx3。这个库调用 Windows SAPI、macOS NSSpeechSynthesizer 或 Linux eSpeak 做本地朗读不需要联网。安装命令pip install pyttsx3快速验证import pyttsx3 engine pyttsx3.init() engine.say(exchange) engine.runAndWait()这个方案的好处是离线可用缺点是音色相对机械长文本朗读时 CPU 占用会明显上升具体效果需要自己听一下再决定。4. 安装部署与启动方式4.1 准备 Welcome Unit 词汇表先建立一个词汇表文件。以人教社 2019 版教材为例Welcome Unit 的词汇大致包括下面这些具体以你手头教材的 Words and Expressions 为准# words.py WORD_LIST [ (exchange, 交换交流), (lecture, 讲座讲课教训), (registration, 登记注册挂号), (sex, 性别), (female, 女(性)的雌的), (male, 男(性)的雄的), (nationality, 国籍民族), (nation, 国家民族), (design, 设计设计方案), (campus, 校园校区), (formal, 正式的正规的), (anxious, 焦虑的不安的), (annoyed, 恼怒的生气的), (frightened, 惊吓的害怕的), (senior, 级别或地位高的较年长的), (outfit, 全套服装), (impressive, 令人钦佩的给人深刻印象的), (awkward, 令人尴尬的难对付的), (junior, 地位或职位、级别低下的年资较浅的), (explore, 探索勘探), (confidence, 信心信任), ]这里第二个字段是中文释义目前只用于日志输出和后续归档不合成进音频。如果你需要英文单词 中文释义一起朗读后面的小节会讲处理方式。4.2 批量生成脚本新建generate_words.py内容如下import asyncio from pathlib import Path import edge_tts VOICE en-US-JennyNeural # 美音女声 RATE 0% # 语速可改为 -10%、10% 等 OUTPUT_DIR Path(welcome_unit_audio) WORD_LIST [ (exchange, 交换交流), (lecture, 讲座讲课教训), (registration, 登记注册挂号), (sex, 性别), (female, 女(性)的雌的), (male, 男(性)的雄的), (nationality, 国籍民族), (nation, 国家民族), (design, 设计设计方案), (campus, 校园校区), (formal, 正式的正规的), (anxious, 焦虑的不安的), (annoyed, 恼怒的生气的), (frightened, 惊吓的害怕的), (senior, 级别或地位高的较年长的), (outfit, 全套服装), (impressive, 令人钦佩的给人深刻印象的), (awkward, 令人尴尬的难对付的), (junior, 地位或职位、级别低下的年资较浅的), (explore, 探索勘探), (confidence, 信心信任), ] async def generate_word(word: str, meaning: str): 生成单个单词的朗读音频。 audio_path OUTPUT_DIR / f{word}.mp3 communicate edge_tts.Communicate(word, VOICE, rateRATE) await communicate.save(str(audio_path)) print(f[OK] {word} - {audio_path}) async def main(): OUTPUT_DIR.mkdir(parentsTrue, exist_okTrue) for word, meaning in WORD_LIST: await generate_word(word, meaning) print(f批量生成完成共 {len(WORD_LIST)} 个音频输出目录{OUTPUT_DIR.resolve()}) if __name__ __main__: asyncio.run(main())这段代码做三件事创建输出目录、遍历词汇表、逐个调用 edge-tts 生成 MP3 文件。如果你只需要生成某一个单词可以把WORD_LIST临时改成只包含一个元素也可以单独用命令行测试。4.3 运行与输出在项目目录下执行python generate_words.py正常运行时终端会逐行打印生成的单词和文件路径[OK] exchange - welcome_unit_audio/exchange.mp3 [OK] lecture - welcome_unit_audio/lecture.mp3 ... 批量生成完成共 21 个音频输出目录xxx/welcome_unit_audio检查输出目录确认每个单词都有对应的 MP3 文件ls welcome_unit_audio/Windows 下用dir welcome_unit_audio5. 功能测试与效果验证工具能跑起来只是一个开始真正要确认的是生成的音频能不能用。建议按下面的顺序做验证。5.1 单单词朗读测试先用一个单词做最小验证确认 TTS 服务连通性和音色效果edge-tts --voice en-US-JennyNeural --text exchange --write-media exchange.mp3然后用播放器打开exchange.mp3判断标准有三个能正常播放、发音清晰、发音内容确实是 exchange。如果这一步就失败说明是 TTS 服务或网络问题先解决这里再跑批量。5.2 批量生成验证跑完generate_words.py后做两个快速检查。第一统计文件数量是否和词汇表一致ls welcome_unit_audio/ | wc -l第二检查是否存在空文件find welcome_unit_audio -name *.mp3 -size 0Windows PowerShell 下可以用Get-ChildItem welcome_unit_audio -Filter *.mp3 | Where-Object Length -eq 05.3 音色与语速对比edge-tts
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门