【教学类-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、幼儿对熟悉的故事有持续聆听的兴趣(如:听不懂《金鹅》,但对《七只小羊》能保持安静倾听。)

相关推荐
无限进步_37 分钟前
二叉搜索树完全解析:从概念到实现与应用场景
c语言·开发语言·数据结构·c++·算法·github·visual studio
努力努力再努力FFF41 分钟前
别再乱学PS、Python了,普通大学生该看懂的技能趋势
开发语言·python
呆萌的代Ma1 小时前
docker内的n8n配置Code节点运行python代码
python·docker·容器
天若有情6731 小时前
逆向玩家狂喜!用C++野生写法一键破解线性加密(不规范但巨好用)
开发语言·c++·算法
XiYang-DING1 小时前
JavaScript
开发语言·javascript·ecmascript
skywalk81631 小时前
代码高尔夫(Code Golf)是一种以“用最少的字符数实现特定功能”为核心目标的编程挑战或风格。
开发语言
xyq20241 小时前
MySQL 安装配置
开发语言
鸽子一号2 小时前
c#Modbus通信
开发语言·c#
念何架构之路2 小时前
Go Socket编程
开发语言·后端·golang
feifeigo1232 小时前
基于无迹变换的电网概率潮流分析 MATLAB 实现
开发语言·算法·matlab