【教学类-134-01】20260414 Python制作童话故事音频

20260414Python制作童话故事音频

背景需求:

这几天用Python制作AI视频的背景旁白,对话等

使用了三个库

1. pathlib.Path

  • 类型:Python 标准库

  • 用途:面向对象的文件系统路径操作

  • 功能:处理文件路径、目录、文件读写等

2. edge_tts

  • 类型 :第三方库(需要安装:pip install edge-tts

  • 用途:文本转语音(Text-to-Speech)

  • 功能:使用 Microsoft Edge 的在线语音服务将文本转换为音频

3. asyncio

  • 类型:Python 标准库

  • 用途:异步 I/O 框架

  • 功能:编写并发代码,处理异步操作(如网络请求、文件读写等、用

用Python制作音频又快又好,还可以调试速度。

我就想到日常教学中一个问题:来园活动玩桌面玩具,8:40分左右收玩具坐下后,我们通常播放一个QQ音乐里面的"童话故事",让幼儿安静下来,准备喝牛奶。

但是搜索童话故事,有三个问题

1、听不见:有些故事声音太轻,或者伴奏音乐太响,小孩子只听声音,看不到画面,注意力分散了。和同伴交头接耳打闹!

2、时长短、要收费:故事太短了,3分钟以内,会自动播放吓一跳,但有些要收费放不了,就会反复放之前可以播放的故事。

"听过了!换一个"小孩子们嚷着。

3、关闭繁琐:关闭QQ音乐时,总是习惯性按右上角的×,但声音还在记录发出。必须按里面的暂停按钮,或者关闭右下角的QQ音乐APP按钮才能完全停止声音。鼠标不灵活,点按钮很费劲。

基于以上问题,我想用Python直接生成童话故事mp3,转移到电脑里,让幼儿聆听自制的童话故事音频。

制作过程:

昨天正好听了《青蛙王子》,我先做这个故事的全文

文字太多了,放到一个TXT里

问问如何读取一整个TXT

python 复制代码
# 男播音 云希 青蛙王子

from pathlib import Path
import edge_tts
import asyncio

# ========== 配置区域 ==========
# 文本文件所在文件夹
TEXT_FOLDER = Path(r"C:\Users\jg2yXRZ\OneDrive\桌面\20260413青蛙王子脚本")  # 修改为你的文件夹路径
TEXT_FILE_NAME = "青蛙王子.txt"                # 文本文件名

# 音频输出路径
SAVE_DIR = TEXT_FOLDER
SAVE_DIR.mkdir(parents=True, exist_ok=True)

# 播音员音色
VOICE = "zh-CN-YunyangNeural"  # 男播音

# 音频参数
RATE = "-20%"      # 语速稍慢
PITCH = "+0Hz"     # 标准音调
VOLUME = "+10%"    # 音量适中
# ============================

async def generate_audio():
    # 构建完整的文本文件路径
    txt_path = TEXT_FOLDER / TEXT_FILE_NAME
    
    # 检查文件是否存在
    if not txt_path.exists():
        print(f"❌ 错误:找不到文件 {txt_path}")
        return
    
    # 读取文本文件内容(UTF-8编码)
    with open(txt_path, "r", encoding="utf-8") as f:
        text_content = f.read()
    
    # 去除首尾空白
    text_content = text_content.strip()
    
    if not text_content:
        print("❌ 错误:文本文件为空")
        return
    
    # 生成音频文件名(与txt文件名相同,扩展名改为mp3)
    audio_filename = txt_path.stem + ".mp3"  # 1.txt → 1.mp3
    out = SAVE_DIR / audio_filename
    
    # 生成语音
    tts = edge_tts.Communicate(
        text_content,
        VOICE,
        rate=RATE,
        pitch=PITCH,
        volume=VOLUME
    )
    
    await tts.save(str(out))
    
    print(f"✅ 已生成:{audio_filename}")
    print(f"📁 来源文件:{txt_path}")
    print(f"📊 文本总字数:{len(text_content)} 字")
    print(f"💾 保存位置:{out}")

if __name__ == "__main__":
    asyncio.run(generate_audio())
    print("\n🎉 音频生成完成!")

10秒左右就生成一个8分钟的音频,"男声-云希"的声音比较响亮

继续问问小班孩子喜欢什么样的童话故事

继续做了《金鹅》《狼的七只小羊》

这个故事适合女声

python 复制代码
# 女播音员,晓晓 晓伊 青蛙王子\狼和七只小羊

from pathlib import Path
import edge_tts
import asyncio

# ========== 配置区域 ==========
# 文本文件所在文件夹
TEXT_FOLDER = Path(r"C:\Users\jg2yXRZ\OneDrive\桌面\20260413青蛙王子脚本")  # 修改为你的文件夹路径
# TEXT_FILE_NAME = "青蛙王子.txt"                # 文本文件名
TEXT_FILE_NAME = "狼和七只小羊.txt"                # 文本文件名

# 音频输出路径
SAVE_DIR = Path(r"C:\Users\jg2yXRZ\OneDrive\桌面\20260413青蛙王子脚本")
TEXT_FILE_NAME1="青蛙王子女.txt"
SAVE_DIR.mkdir(parents=True, exist_ok=True)

# 播音员音色

# VOICE = "zh-CN-XiaoxiaoNeural"  # 晓晓 - 温暖亲切,最常用的女声
VOICE = "zh-CN-XiaoyiNeural"  # 晓伊 - 活泼可爱,元气少女音
# VOICE = "zh-CN-XiaochenNeural"  # 晓晨 - 温柔知性
# VOICE = "zh-CN-XiaohanNeural"  # 晓涵 - 温暖治愈
# VOICE = "zh-CN-XiaomengNeural"  # 晓梦 - 软萌萝莉音
# VOICE = "zh-CN-XiaoruiNeural"  # 晓睿 - 甜美少女音
# VOICE = "zh-CN-XiaoshuangNeural"  # 晓双 - 活泼明亮
# VOICE = "zh-CN-XiaoxiaNeural"  # 晓霞 - 成熟温柔
# VOICE = "zh-CN-XinranNeural"  # 欣然 - 清新自然
# 音频参数
RATE = "-20%"      # 语速稍慢
PITCH = "+0Hz"     # 标准音调
VOLUME = "+10%"    # 音量适中
# ============================

async def generate_audio():
    # 构建完整的文本文件路径
    txt_path = TEXT_FOLDER / TEXT_FILE_NAME
    
    # 检查文件是否存在
    if not txt_path.exists():
        print(f"❌ 错误:找不到文件 {txt_path}")
        return
    
    # 读取文本文件内容(UTF-8编码)
    with open(txt_path, "r", encoding="utf-8") as f:
        text_content = f.read()
    
    # 去除首尾空白
    text_content = text_content.strip()
    
    if not text_content:
        print("❌ 错误:文本文件为空")
        return
    
    # 生成音频文件名(与txt文件名相同,扩展名改为mp3)
    audio_filename = txt_path.stem + ".mp3"  # 1.txt → 1.mp3
    out = SAVE_DIR / audio_filename
    
    # 生成语音
    tts = edge_tts.Communicate(
        text_content,
        VOICE,
        rate=RATE,
        pitch=PITCH,
        volume=VOLUME
    )
    
    await tts.save(str(out))
    
    print(f"✅ 已生成:{audio_filename}")
    print(f"📁 来源文件:{txt_path}")
    print(f"📊 文本总字数:{len(text_content)} 字")
    print(f"💾 保存位置:{out}")

if __name__ == "__main__":
    asyncio.run(generate_audio())
    print("\n🎉 音频生成完成!")

用男声云希做了《金鹅》,用女声晓晓《公主与青蛙》、女声晓伊《狼和七只小羊》

《狼》里面第一次,把"格林童话"和"狼和七只小羊"写在一行,写过音频里面念的是"格林童话狼"+"和七只小羊"

测试多次后无果,用换行,才变成"格林童话"+"狼和七只小羊"

最后把音频放到教室左面上播放

20260414Python制作童话故事音频

感悟:

1、故事比较长:8分钟以上,适合一日环节的过渡活动用

2、只有声音、没有图像,只有部分女孩能安静趴着聆听,超过3分钟,男孩们就开始蠢蠢欲动,动手打闹聊天。

3、幼儿对熟悉的故事有持续聆听的兴趣(如:听不懂《金鹅》,但对《七只小羊》能保持安静倾听。)

相关推荐
方也_arkling7 小时前
【Java-Day08】static / final / 枚举
java·开发语言
风吹夏回7 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei118 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1128 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding8 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋98 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本8 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
xiaoshuaishuai88 小时前
C# 内存管理与资源泄漏
开发语言·c#
lsx2024069 小时前
SVN 检出操作
开发语言
田里的水稻9 小时前
OE_ubuntu26.04与宿主机之间复制粘贴内容
人工智能·python·机器人