当前位置: 首页 > news >正文

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

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

背景需求

选了哥特风格故事脚本

豆包故事脚本

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

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

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

写一个故事名称

图片生成:选了“油画”

图片下载

视频生成

视频下载

视频剪辑

统一用一个哥特教堂音乐

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

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

# 女声 · 空灵神秘风格 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🎉 女声空灵神秘声音生成完成!")
# 孔子,男播音员 # 老师的声音 → 改为【空灵神秘风格】 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月下枯蔷(哥特风)》风格:油画

感悟:

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

http://www.jsqmd.com/news/722958/

相关文章:

  • ARMv8/v9异常处理与ESR_EL2寄存器深度解析
  • ContextFlow视频对象编辑技术解析与应用实践
  • Increasing Triplet Subsequence贪心解法分析
  • 2026微晶铝采购指南:如何识别服务好的供应商?半导体设备镜面铝/医疗设备镜面铝/微晶铝,微晶铝企业口碑推荐 - 品牌推荐师
  • UL94阻燃等级
  • VxWorks网络通信模块:网络协议栈解析(第二部分)
  • 元组、列表、集合、字典和切片
  • 开源任务监控利器:Agent-Job-Monitor 架构解析与生产实践
  • 2026北航计算机学院保研硕士预推免面经
  • 2026年3月质量好的盛雷城代理厂家怎么选,低温漂高精密电阻/车规级精密电阻/荣誉代理,盛雷城代理品牌怎么选择 - 品牌推荐师
  • Docker运行Llama3/Phi-3等大模型:轻量级沙箱构建全流程(含内存压缩率提升3.2倍的memcg tuning参数)
  • 手把手教你用零代码平台完成多表关联与数据分流【保姆级教程】(图文详解)
  • 2026香薰盖/香水盖/化妆品盖/精油瓶盖定制哪家好? 高分子塞生产厂家实力深度解析 - 栗子测评
  • Linux操作系统与IO编程拟面试题
  • 基于Simulink的电池热管理系统(BTMS)多目标优化​
  • 别凭经验做备货:物流需求预测如何破解出海供应链误区
  • 专为视障人士设计的免费辅助工具
  • 2026年4月湛江及国内主流搬家公司费用合规性排行 - 优质品牌商家
  • CaTok:1D因果标记化在视觉任务中的创新应用
  • FC游戏红白机档案典藏版 FC红白机游戏合集整合包 PC电脑版一键畅玩
  • Go 语言从入门到进阶 | 第 13 章:数据库操作
  • SSH隧道与Tailscale实现AI代理远程运行时本地化连接
  • 机器人灵巧手抓取技术:挑战与DexGraspNet突破
  • Go分布式爬虫框架clawjob:架构解析与生产部署指南
  • 独家首发:R语言x LlamaIndex x LangChain偏见追踪中间件(bias-tracer v0.9.1),支持实时流式推理偏差热力图生成
  • C语言数据类型与变量
  • Driver Store Explorer:Windows系统驱动管理的终极解决方案
  • CtxPort:AI对话结构化剪贴板,一键导出Markdown
  • Android14 增加 property 记录系统当前前台应用的 packageName and className
  • 稀疏混合专家模型(MoE)负载均衡技术演进与实践