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

相关推荐
无凭3 小时前
字节跳动 DeerFlow:Agent Harness 怎么让大模型主动向用户提问?
人工智能·python
蜀道山老天师3 小时前
Python + Playwright 实现问卷星自动化填写
python
ShiXZ2133 小时前
网络调试四剑客:ping / telnet / nc / netstat 速查指令集
运维·开发语言·网络·php
码农大叔的博客3 小时前
golang示例:switch
开发语言·后端·golang
Zane19943 小时前
多开几个线程,为什么算数字反而没变快?一文讲透 CPython 的 GIL
后端·python
个 人 练 习 生3 小时前
数据结构入门:算法复杂度
开发语言·数据结构·经验分享·学习·程序人生·算法
W_326003 小时前
Python-OpenCV边缘检测与阈值分割:Sobel、Scharr、Laplacian、Canny、全局与自适应阈值
开发语言·图像处理·python·opencv·机器学习
其实防守也摸鱼3 小时前
红队技能总结导图:从入门到精通的完整知识体系
开发语言·人工智能·学习·安全·web安全
聊浮游4 小时前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
青 春 记 忆4 小时前
LeetCode 121. 买卖股票的最佳时机|Python 解法详解
python·算法·leetcode