【教学类-160-14】20260425 AI视频培训-练习014“豆包AI视频《月下枯蔷(哥特风)》+豆包图片风格:油画”

20260425 《014月下枯蔷(哥特风)》风格:油画

背景需求

选了哥特风格故事脚本

豆包故事脚本

只有画面,没有图片关键词、图片转视频动态关键词

内容有点长,我要控制在10秒一个镜头

很好只有10秒一个镜头了。

写一个故事名称

图片生成:选了"油画"

图片下载

视频生成

视频下载

视频剪辑

统一用一个哥特教堂音乐

把片头和片尾照片加入,删除多余音频,添加钟声特效

最后我还是 用了Python edge_tts的AI声音

python 复制代码
# 女声 · 空灵神秘风格
from pathlib import Path
import edge_tts
import asyncio
import subprocess

# 解说文本(可自由修改)
TEXT = "。".join([
    "亲爱的,你该来了",
    "月光为契,宿命为笼,我们终究触不到彼此。",
]) + "。"

# 保存路径
SAVE_DIR = Path(r"D:\test\20桌面素材\20260425 《月下枯蔷014(哥特)》风格:油画\声音")
SAVE_DIR.mkdir(parents=True, exist_ok=True)

# ===================== 女声 · 空灵神秘音色 =====================
# 女声基础音色(适合改造为空灵风格)
MYSTERIOUS_FEMALE_VOICES = [
    # 推荐:Xiaoxiao(温柔女声,调音范围大,空灵感强)
    # ("zh-CN-XiaoxiaoNeural", "神秘_女声_晓晓.mp3"),
    # 备选1:Xiaoyou(年轻女声,带梦幻感)
    # ("zh-CN-XiaoyouNeural", "神秘_女声_晓悠.mp3"),
    # 备选2:Xiaohan(自然亲切,适合神秘旁白)
    ("zh-CN-XiaohanNeural", "神秘_女声_晓涵.mp3"),
]

# 空灵神秘风格参数(女声专属)
MYSTERIOUS_PARAMS = {
    "rate": "-18%",      # 语速降低18%(比男声稍慢,更飘渺)
    "pitch": "-15Hz",    # 音高降低15Hz(女声降低后更空灵,不会太低沉)
    "volume": "+0%"      # 正常音量
}
# =================================================================

def add_mysterious_effects_female(input_mp3: str, output_mp3: str):
    """添加女声专属空灵效果:混响 + 回声 + 柔和淡入淡出"""
    
    # 女声空灵风格滤镜链(混响略轻,保持女声清透感)
    filter_chain = (
        "aecho=0.7:0.8:180:0.35, "        # 回声:延迟180ms,衰减0.35(比男声轻)
        "areverb=wet_gain=0.5, "           # 混响:湿声增益0.5(更强空间感)
        "afade=t=in:st=0:d=0.8, "           # 淡入0.8秒(更柔和)
        "afade=t=out:st=8:d=1.5"            # 淡出1.5秒
    )
    
    cmd = [
        "ffmpeg", "-i", input_mp3,
        "-af", filter_chain,
        "-y",
        output_mp3
    ]
    
    try:
        subprocess.run(cmd, capture_output=True, check=True)
        return True
    except subprocess.CalledProcessError as e:
        print(f"⚠️ FFmpeg处理失败: {e.stderr.decode()[:200]}")
        return False

async def generate_mysterious_female_voice():
    """生成空灵神秘女声"""
    
    for voice, filename in MYSTERIOUS_FEMALE_VOICES:
        out_mp3 = SAVE_DIR / filename
        temp_raw = SAVE_DIR / f"_temp_female_{filename}"
        
        # 步骤1:合成基础语音
        print(f"\n🎙️ 正在合成基础语音:{filename}")
        print(f"   音色:{voice}")
        print(f"   参数:语速={MYSTERIOUS_PARAMS['rate']}, 音高={MYSTERIOUS_PARAMS['pitch']}")
        
        tts = edge_tts.Communicate(
            TEXT, 
            voice,
            rate=MYSTERIOUS_PARAMS["rate"],
            pitch=MYSTERIOUS_PARAMS["pitch"],
            volume=MYSTERIOUS_PARAMS["volume"]
        )
        
        await tts.save(str(temp_raw))
        print(f"   ✅ 基础合成完成")
        
        # 步骤2:添加空灵效果
        print(f"   🔮 添加空灵混响效果...")
        if add_mysterious_effects_female(str(temp_raw), str(out_mp3)):
            print(f"   ✅ 空灵效果添加完成")
            # 删除临时文件
            temp_raw.unlink()
        else:
            # 如果FFmpeg失败,保留原始文件
            temp_raw.rename(out_mp3)
            print(f"   ⚠️ 效果添加失败,使用原始版本")
        
        print(f"✅ 已生成:{filename}")
        await asyncio.sleep(0.5)

def check_ffmpeg():
    try:
        subprocess.run(["ffmpeg", "-version"], capture_output=True, check=True)
        return True
    except (subprocess.SubprocessError, FileNotFoundError):
        print("⚠️ 未检测到FFmpeg,将跳过混响效果(仅使用基础调音)")
        print("   如需完整空灵效果,请安装FFmpeg:https://ffmpeg.org/download.html")
        return False

if __name__ == "__main__":
    print("=" * 50)
    print("  女声 · 空灵神秘合成器")
    print("=" * 50)
    
    # 检查FFmpeg状态
    has_ffmpeg = check_ffmpeg()
    if not has_ffmpeg:
        print("   将使用基础调音版本(语速降低+音高降低)\n")
    
    asyncio.run(generate_mysterious_female_voice())
    print("\n🎉 女声空灵神秘声音生成完成!")
python 复制代码
# 孔子,男播音员
# 老师的声音 → 改为【空灵神秘风格】
from pathlib import Path
import edge_tts
import asyncio
import subprocess
import tempfile

# 解说文本(可自由修改)
TEXT = "。".join([
    "亲爱的,我来了",
    "百年前的咒,困住了我,也困住了你的时光。",
    "唯有永夜相伴,守这一场未完成的约",
]) + "。"

# 保存路径
SAVE_DIR = Path(r"D:\test\20桌面素材\20260425 《月下枯蔷014(哥特)》风格:油画\声音")
SAVE_DIR.mkdir(parents=True, exist_ok=True)

# ===================== 核心修改:空灵神秘音色 =====================
# 使用适合改造的男声基础音色
MYSTERIOUS_VOICES = [
    # 推荐:Yunxi(年轻男声,调音范围大,适合做空灵效果)
    ("zh-CN-YunxiNeural", "神秘_云希.mp3"),
    # 备选:Yunjian(冷静叙述感,适合神秘旁白)
    ("zh-CN-YunjianNeural", "神秘_云健.mp3"),
]

# 空灵神秘风格参数
MYSTERIOUS_PARAMS = {
    "rate": "-15%",      # 语速降低15%(空灵感需要稍慢)
    "pitch": "-25Hz",    # 音高降低25Hz(低沉神秘)
    "volume": "+5%"      # 音量略微提升
}
# =================================================================

def add_mysterious_effects(input_mp3: str, output_mp3: str):
    """添加空灵神秘效果:混响 + 回声 + 淡入淡出"""
    
    # 空灵风格滤镜链
    # aecho: 回声效果(延迟200ms,衰减0.4)
    # areverb: 混响效果(湿声增益0.45,营造空间感)
    # afade: 淡入淡出(消除突兀感)
    filter_chain = (
        "aecho=0.8:0.9:200:0.4, "          # 回声:延迟200ms,衰减0.4
        "areverb=wet_gain=0.45, "           # 混响:湿声增益0.45(空灵感)
        "afade=t=in:st=0:d=0.5, "           # 淡入0.5秒
        "afade=t=out:st=8:d=1.5"            # 淡出1.5秒(假设总长10秒左右)
    )
    
    cmd = [
        "ffmpeg", "-i", input_mp3,
        "-af", filter_chain,
        "-y",  # 覆盖输出文件
        output_mp3
    ]
    
    try:
        subprocess.run(cmd, capture_output=True, check=True)
        return True
    except subprocess.CalledProcessError as e:
        print(f"⚠️ FFmpeg处理失败: {e.stderr.decode()[:200]}")
        return False

async def generate_mysterious_voice():
    """生成空灵神秘风格语音"""
    
    for voice, filename in MYSTERIOUS_VOICES:
        out_mp3 = SAVE_DIR / filename
        temp_raw = SAVE_DIR / f"_temp_{filename}"
        
        # 步骤1:合成基础语音
        print(f"\n🎙️ 正在合成基础语音:{filename}")
        print(f"   音色:{voice}")
        print(f"   参数:语速={MYSTERIOUS_PARAMS['rate']}, 音高={MYSTERIOUS_PARAMS['pitch']}")
        
        tts = edge_tts.Communicate(
            TEXT, 
            voice,
            rate=MYSTERIOUS_PARAMS["rate"],
            pitch=MYSTERIOUS_PARAMS["pitch"],
            volume=MYSTERIOUS_PARAMS["volume"]
        )
        
        await tts.save(str(temp_raw))
        print(f"   ✅ 基础合成完成")
        
        # 步骤2:添加空灵效果
        print(f"   🔮 添加空灵混响效果...")
        if add_mysterious_effects(str(temp_raw), str(out_mp3)):
            print(f"   ✅ 空灵效果添加完成")
            # 删除临时文件
            temp_raw.unlink()
        else:
            # 如果FFmpeg失败,保留原始文件
            temp_raw.rename(out_mp3)
            print(f"   ⚠️ 效果添加失败,使用原始版本")
        
        print(f"✅ 已生成:{filename}")
        await asyncio.sleep(0.5)

# 可选:检查FFmpeg是否可用
def check_ffmpeg():
    try:
        subprocess.run(["ffmpeg", "-version"], capture_output=True, check=True)
        return True
    except (subprocess.SubprocessError, FileNotFoundError):
        print("⚠️ 未检测到FFmpeg,将跳过混响效果(仅使用基础调音)")
        print("   如需完整空灵效果,请安装FFmpeg:https://ffmpeg.org/download.html")
        return False

if __name__ == "__main__":
    print("=" * 50)
    print("  空灵神秘男声合成器")
    print("=" * 50)
    
    # 检查FFmpeg状态
    has_ffmpeg = check_ffmpeg()
    if not has_ffmpeg:
        print("   将使用基础调音版本(语速降低+音高降低)\n")
    
    asyncio.run(generate_mysterious_voice())
    print("\n🎉 空灵神秘声音生成完成!")

最后两个镜头没有台词

这样每个镜头都有男女声的台词了

20260425 《014月下枯蔷(哥特风)》风格:油画

感悟:

哥特风格的脚本就很神秘、抽象,所以做出来的故事没有什么明显的剧情,全靠想象。

相关推荐
AI周红伟1 小时前
周红伟:OpenClaw安全防控:OpenClaw+Skills+私有大模型安全部署、实操和企业应用实操
大数据·人工智能·深度学习·安全·copilot·openclaw
深度学习lover1 小时前
<数据集>yolo 常见对象检测<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·常见对象检测
武科大许志伟1 小时前
课题组学习北京大学许进教授“求解NP完全问题专用机——探针计算机”的专题学术报告
人工智能
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月27日
人工智能·python·信息可视化·自然语言处理·ai编程
郭菁菁1 小时前
职业深度解析:MLOps Engineer——AI模型的生产线工程师
人工智能
生活观察站1 小时前
仓储物流场景的工业配送和工业AMR品牌应该怎么选?
人工智能
GoAI1 小时前
《深入浅出Agent》:项目深度解析Autoresearch
人工智能·深度学习·大模型·llm·agent
新知图书1 小时前
基于 FAISS 的 AI 长期记忆系统示例
人工智能·智能体·langchian
夜起叶落1 小时前
Claude Code 视觉桥接方案,全程 Agent 执行
人工智能