【教学类-160-02】20260409 AI视频培训-练习2“豆包AI视频《小班-抢玩具》+豆包图片风格:手办”

背景需求:

【教学类-160-01】20260408 AI视频培训-练习1"豆包AI视频"https://mp.csdn.net/mp_blog/creation/editor/159965108

不是前面孩子的衣服了,从两女变成一男一女了

详细的人物特征描述(衣服颜色等)控制人物尽量相似。

显示了男女正确服饰和发型,但是背景变了(我需要建构积木的背景)

考虑增加图片的参考图,控制人物、背景相似性

用第4张做参考图首帧

结果就是在原图上增加了一位老师(只有一张照片)

测试不用参考图,果然生成四张

继续用参考图

下载五张图片

女孩没有小揪揪,重新制作

下载5张图,风格相近

感觉,转视频的关键词比较简单

太神奇了,两个孩子的配音,太符合实际情况了!

老师走入画面,蹲下对幼儿说话

不能用剪映

还是不能生成

反复测试还是不能生成,AI图片试试,没有问题

换成通义万相

效果不错,用了积分是5分钟左右时长生成

再做一张,正好用完今天的10分积分

下载视频

豆包每段10秒

万相每段5秒

一共40秒

统一背景音乐

需要模拟小男孩、小女孩、老师的声音

是Python模拟声音

python 复制代码
from pathlib import Path
import edge_tts
import asyncio

# 文本内容
TEXT = "这是我的"
# 输出文件名
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20260409豆包AI幼儿吵架'
OUTPUT_FILE = path+r"\001boy.mp3"

# 选择非常接近3-4岁小男孩的音色
VOICE = "zh-CN-YunxiNeural"

async def text_to_speech():
    communicate = edge_tts.Communicate(TEXT, VOICE, rate="+5%", volume="+10%")
    await communicate.save(OUTPUT_FILE)
    print(f"音频已生成:{OUTPUT_FILE}")

if __name__ == "__main__":
    asyncio.run(text_to_speech())
    print("✅ 3-4岁小男孩急切版「这是我的」音频生成完成!")

测试后用了三种声音

python 复制代码
# 男孩的声音
from pathlib import Path
import edge_tts
import asyncio
import os

# TEXT = "这是我的!"
# TEXT = "不行,是我的!"
TEXT = "我要刚才的!"

# 你要的保存路径
SAVE_DIR = r"C:\Users\jg2yXRZ\OneDrive\桌面\20260409豆包AI幼儿吵架"
os.makedirs(SAVE_DIR,exist_ok=True)
OUTPUT_FILE = SAVE_DIR +fr"\001boy{TEXT}.mp3"

# ✅ 全世界通用、永远不报错、最像3-4岁小男孩
# VOICE = "zh-CN-YunxiNeural"
VOICE = "zh-CN-YunxiaNeural"  # 最小男孩

async def text_to_speech():
    communicate = edge_tts.Communicate(
    TEXT, VOICE,
    rate="+50%",    # 快、急
    volume="+25%",
    pitch="+12Hz"   # 超奶
    )
    await communicate.save(str(OUTPUT_FILE))
    print("✅ 生成成功!")
    print("音频位置:", OUTPUT_FILE)

if __name__ == "__main__":
    asyncio.run(text_to_speech())


#     # 版本 2:经典正太(7~9 岁)------ Yunxi(最稳、不报错)
# python
# 运行
# VOICE = "zh-CN-YunxiNeural"
# communicate = edge_tts.Communicate(
#     TEXT, VOICE,
#     rate="+18%",
#     volume="+20%",
#     pitch="+9Hz"
# )
# 版本 3:清亮少年男孩(9~12 岁)------ Yunhao
# python
# 运行
# VOICE = "zh-CN-YunhaoNeural"
# communicate = edge_tts.Communicate(
#     TEXT, VOICE,
#     rate="+15%",
#     volume="+20%",
#     pitch="+6Hz"
# )
# 版本 4:大男孩 / 哥哥(10~14 岁)------ Yunjian
# python
# 运行
# VOICE = "zh-CN-YunjianNeural"
# communicate = edge_tts.Communicate(
#     TEXT, VOICE,
#     rate="+12%",
#     volume="+18%",
#     pitch="+4Hz"
# )
# 三、查看所有可用音色(命令)
python 复制代码
# 女孩的声音
from pathlib import Path
import edge_tts
import asyncio
import os

TEXT = "我要这个玩具"
# TEXT = "是我先拿到的"
# TEXT = "是我先拿到的"

# 你要的保存路径
SAVE_DIR = r"C:\Users\jg2yXRZ\OneDrive\桌面\20260409豆包AI幼儿吵架"
os.makedirs(SAVE_DIR,exist_ok=True)
OUTPUT_FILE = SAVE_DIR +fr"\001girl{TEXT}.mp3"

# ✅ 全世界通用、永远不报错、最像3-4岁小男孩
# VOICE = "zh-CN-YunxiNeural"


VOICE = "zh-CN-XiaoxiaoNeural"  # 最尖最小女孩

async def text_to_speech():
    # communicate = edge_tts.Communicate(
    #     TEXT,
    #     VOICE,
    #     rate="+15%",    # 急切
    #     pitch="+8Hz"    # 变幼、变奶

    communicate = edge_tts.Communicate(
        TEXT,
        VOICE,
        rate="+25%",     # 超快,急切
        pitch="+20Hz",   # 尖锐
        volume="+40%"
    )
    await communicate.save(str(OUTPUT_FILE))
    print("✅ 生成成功!")
    print("音频位置:", OUTPUT_FILE)

if __name__ == "__main__":
    asyncio.run(text_to_speech())


#     # 版本 2:经典正太(7~9 岁)------ Yunxi(最稳、不报错)
# python
# 运行
# VOICE = "zh-CN-YunxiNeural"
# communicate = edge_tts.Communicate(
#     TEXT, VOICE,
#     rate="+18%",
#     volume="+20%",
#     pitch="+9Hz"
# )
# 版本 3:清亮少年男孩(9~12 岁)------ Yunhao
# python
# 运行
# VOICE = "zh-CN-YunhaoNeural"
# communicate = edge_tts.Communicate(
#     TEXT, VOICE,
#     rate="+15%",
#     volume="+20%",
#     pitch="+6Hz"
# )
# 版本 4:大男孩 / 哥哥(10~14 岁)------ Yunjian
# python
# 运行
# VOICE = "zh-CN-YunjianNeural"
# communicate = edge_tts.Communicate(
#     TEXT, VOICE,
#     rate="+12%",
#     volume="+18%",
#     pitch="+4Hz"
# )
# 三、查看所有可用音色(命令)
python 复制代码
# 老师的声音
from pathlib import Path
import edge_tts
import asyncio

# 教师常用台词(可改成你要的文本)
TEXT = "如果你们两个都坚持要先玩这一个,那老师就先收起来。你们可以一起选另一个玩具,或者各自玩一个不同的玩具。"

# 保存路径
SAVE_DIR = Path(r"C:\Users\jg2yXRZ\OneDrive\桌面\20260409豆包AI幼儿吵架\mp3")
SAVE_DIR.mkdir(parents=True, exist_ok=True)

# 温柔女教师音色(2种风格)
TEACHER_VOICES = [
    ("zh-CN-XiaoxiaoNeural", f"{TEXT}_晓晓.mp3"),
    ("zh-CN-XiaoyiNeural",   f"{TEXT}_晓伊.mp3"),
]

async def generate_teacher_voice():
    for voice, filename in TEACHER_VOICES:
        out = SAVE_DIR / filename
        
        tts = edge_tts.Communicate(
            TEXT, voice,
            rate="-20%",    # 温柔慢一点
            pitch="-5Hz",   # 更温柔
            volume="+15%"   # 清晰
        )
        
        await tts.save(str(out))
        print(f"✅ 已生成:{filename}")
        await asyncio.sleep(0.5)

if __name__ == "__main__":
    asyncio.run(generate_teacher_voice())
    print("\n🎉 温柔女教师声音生成完成!")

把豆包生成AI视频的音乐作为背景乐(最后发现不能用人声分里,要收费,但是分离音频是免费的)

为了适应音频长度,补一段

静态图片

视频转GIF,必须用Python3.7.8才能运行成功

python 复制代码
'''
结题报告WORD 插入 MP4转gif动画(降低帧率)
deepseek、阿夏
一定要用Python3.7.8
20250718
'''
import os
from moviepy.editor import VideoFileClip

def convert_mp4_to_gif(input_folder, output_folder=None, scale=0.5, fps=5, colors=128):
    """
    修复版的MP4转GIF函数
    """
    if output_folder is None:
        output_folder = input_folder
    
    os.makedirs(output_folder, exist_ok=True)
    
    for filename in os.listdir(input_folder):
        if filename.lower().endswith('.mp4'):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}.gif")
            
            print(f"正在转换: {filename}...")
            
            try:
                # 使用更稳定的方式读取视频
                clip = VideoFileClip(input_path)
                
                # 检查视频是否成功读取
                if clip.duration == 0:
                    print(f"警告: {filename} 可能为空或损坏")
                    continue
                
                # 调整尺寸(更保守的参数)
                if scale is not None:
                    clip = clip.resize(scale)
                
                # 限制GIF时长,避免文件过大
                if clip.duration > 10:  # 如果视频超过10秒,只取前10秒
                    clip = clip.subclip(0, 10)
                
                # 使用更稳定的GIF输出参数
                clip.write_gif(
                    output_path,
                    fps=min(fps, 8),  # 限制最大帧率
                    program='ffmpeg',
                    verbose=False,
                    logger=None
                )
                
                # 检查输出文件
                if os.path.exists(output_path) and os.path.getsize(output_path) > 0:
                    print(f"✓ 转换成功: {os.path.basename(output_path)}")
                else:
                    print(f"✗ 转换失败: 输出文件为空")
                    
            except Exception as e:
                print(f"✗ 转换 {filename} 时出错: {str(e)}")
            finally:
                if 'clip' in locals():
                    clip.close()

# 测试版本 - 更保守的参数
if __name__ == "__main__":
    path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20260409豆包AI幼儿吵架\视频'
    
    # 首先检查文件夹是否存在
    if not os.path.exists(path):
        print(f"错误: 路径不存在 - {path}")
    else:
        print(f"找到文件夹,包含文件: {os.listdir(path)}")
    
    convert_mp4_to_gif(
        input_folder=path,
        scale=0.4,    # 更小的缩放比例
        fps=8,        # 更低的帧率
        colors=64     # 更少的颜色
    )

视频

20260409日豆包AI视频《小班抢玩具》(豆包+通义万相

相关推荐
烟雨江南aabb15 小时前
Python第七弹:爬虫篇:BeautifulSoup库
爬虫·python·beautifulsoup
枫叶v.15 小时前
Scrapling 入门:一个现代 Python 网页采集框架
开发语言·python
四方云15 小时前
Python 轮插桩、写进调试:通俗+专业解释
开发语言·python
DogDaoDao15 小时前
Android 播放器开发:从零构建全功能视频播放器
android·ffmpeg·音视频·播放器·mediacodec·编解码
码界筑梦坊15 小时前
127-基于Flask的德国银行信贷客户数据可视化分析系统
开发语言·python·信息可视化·数据分析·flask·毕业设计
Highcharts.js15 小时前
音频可视化图表开发|基于 Highcharts 内置音频合成器制作音乐排行榜图代码
javascript·信息可视化·音视频·highcharts
子午15 小时前
基于YOLO的车牌识别检测~Python+YOLOV8算法+车牌定位+车牌检测+深度学习
python·算法·yolo
weixin_3077791315 小时前
OCR图片文本提取代码
图像处理·python·opencv·自动化·ocr
ZC跨境爬虫15 小时前
模块化烹饪小程序开发日记 Day3:(Flask后端初始化、数据库配置与自定义日志系统搭建)
前端·javascript·数据库·后端·python·flask
格林黄15 小时前
语音电子病历python_websocket实现
开发语言·python·websocket