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

【教学类-160-09】20260417 AI视频培训-练习010“豆包AI视频《熊猫找朋友》+豆包图片风格:水墨画”

20260417《009熊猫找朋友》风格:水墨画

背景需求

生成图片

下载图片

生成视频

剪映合成

20260417《009熊猫找朋友》风格:水墨画

不是每个声音都能顺利生成,以下五个声音可以做出来,其他井号的声音都无法生成音频

# import asyncio # from pathlib import Path # import edge_tts # async def generate_character_audio(name, text, voice, rate, output_dir): # """为单个角色生成音频""" # filename = f"{name}.mp3" # out_path = output_dir / filename # communicate = edge_tts.Communicate(text, voice, rate=rate) # await communicate.save(str(out_path)) # print(f"✅ {name} 音频已生成: {filename}") # async def main(): # # 设置输出目录 # output_dir = Path(r"D:\test\20260417《熊猫找朋友》水墨画\声音") # output_dir.mkdir(parents=True, exist_ok=True) # # 定义五个角色的配置 # characters = [ # { # "name": "小熊猫", # "text": "我的好朋友在哪里呀?都是黑白皮毛的,我要去找它们~;你好你好!你也是黑白皮毛的,能做我的朋友吗?;哇!你的黑白条纹真漂亮,我们能一起玩吗?;你们好!你们也是黑白皮毛的,快和我们一起玩吧~;太好了!我找到所有黑白皮毛的好朋友啦~!", # "voice": "zh-CN-XiaoshuangMultilingualNeural", # 萝莉音 # "rate": "+5%" # }, # { # "name": "企鹅", # "text": "你好呀!我是企鹅,从远方来,很乐意做你的朋友~;你好呀,斑马朋友!;我们又有新朋友啦!", # "voice": "zh-CN-XiaoxiaoNeural", # 温柔女声 # "rate": "-5%" # }, # { # "name": "斑马", # "text": "当然可以啦,小熊猫,我很喜欢和你们做朋友;我们又有新朋友啦!", # "voice": "zh-CN-YunxiNeural", # 少年男声 # "rate": "+0%" # ⭐ 改成 +0%,不能写 0% # }, # { # "name": "斑点狗", # "text": "你们好呀!欢迎来农庄,我们一起玩!;我们是最好的朋友,永远在一起!", # "voice": "zh-CN-XiaoyiNeural", # 活泼女声 # "rate": "+10%" # }, # { # "name": "奶牛猫", # "text": "哈哈,好呀,多些朋友更热闹~;我们是最好的朋友,永远在一起!", # "voice": "zh-CN-YunjianNeural", # 成熟男声 # "rate": "-20%" # } # ] # # 生成所有音频 # tasks = [generate_character_audio(**char, output_dir=output_dir) for char in characters] # await asyncio.gather(*tasks) # print("\n🎉 所有角色音频生成完成!") # if __name__ == "__main__": # asyncio.run(main()) import asyncio from pathlib import Path import edge_tts # 限制最多同时2个并发 semaphore = asyncio.Semaphore(2) async def generate_character_audio(name, text, voice, rate, output_dir): async with semaphore: # 获取许可,最多2个同时运行 filename = f"{name}.mp3" out_path = output_dir / filename print(f"🔄 正在生成 {name} 的音频...") communicate = edge_tts.Communicate(text, voice, rate=rate) await communicate.save(str(out_path)) print(f"✅ {name} 音频已生成: {filename}") await asyncio.sleep(0.5) # 短暂休息 async def main(): output_dir = Path(r"D:\test\20桌面素材\20260417《熊猫找朋友》水墨画\声音") output_dir.mkdir(parents=True, exist_ok=True) characters = [ # { # "name": "小熊猫", # "text": "我的好朋友在哪里呀?都是黑白皮毛的,我要去找它们~;你好你好!你也是黑白皮毛的,能做我的朋友吗?;哇!你的黑白条纹真漂亮,我们能一起玩吗?;你们好!你们也是黑白皮毛的,快和我们一起玩吧~;太好了!我找到所有黑白皮毛的好朋友啦~!", # # "voice": "zh-CN-XiaoshuangMultilingualNeural", # 萝莉音 # "voice": "zh-CN-XiaoxiaoNeural", # 晓晓 标准女声 温暖活剥的主角感 # "rate": "+5%" # }, # { # "name": "企鹅", # "text": "你好呀!我是企鹅,从远方来,很乐意做你的朋友~;你好呀,斑马朋友!;我们又有新朋友啦!", # # "voice": "zh-CN-XiaohanNeural", # 温柔成熟女声,呆萌,慢条斯理 # # "voice": "zh-CN-XiaochenNeural", # 偏向成熟、知性的女声, (晓辰) # "voice": "zh-CN-YunjianNeural", # 云健,深沉男声,冷静权威 # "rate": "-5%" # }, # { # "name": "斑马", # "text": "当然可以啦,小熊猫,我很喜欢和你们做朋友;我们又有新朋友啦!", # "voice": "zh-CN-YunxiNeural", # 少年男声 开朗直率 # "rate": "+0%" # ⭐ 改成 +0%,不能写 0% # }, # { # "name": "斑点狗", # "text": "你们好呀!欢迎来农庄,我们一起玩!;我们是最好的朋友,永远在一起!", # "voice": "zh-CN-XiaoyiNeural", # 活泼女声辽宁女 热情 风风火火 # "rate": "+10%" # }, # { # # "name": "奶牛猫", # # "text": "哈哈,好呀,多些朋友更热闹~;我们是最好的朋友,永远在一起!", # # "voice": "zh-CN-YunjianNeural", # 成熟男声 慵懒、神秘 # # "rate": "-20%" # } ] tasks = [generate_character_audio(**char, output_dir=output_dir) for char in characters] await asyncio.gather(*tasks) print("\n🎉 所有角色音频生成完成!") if __name__ == "__main__": asyncio.run(main())

虽然做了5个声音,但是实际无法批量生成,我是通过隐藏,一个声音生成后,再生成另外一个声音

最后一个视频有五个动物一起说话,所以再补一个音频

# import asyncio # from pathlib import Path # import edge_tts # async def generate_character_audio(name, text, voice, rate, output_dir): # """为单个角色生成音频""" # filename = f"{name}.mp3" # out_path = output_dir / filename # communicate = edge_tts.Communicate(text, voice, rate=rate) # await communicate.save(str(out_path)) # print(f"✅ {name} 音频已生成: {filename}") # async def main(): # # 设置输出目录 # output_dir = Path(r"D:\test\20260417《熊猫找朋友》水墨画\声音") # output_dir.mkdir(parents=True, exist_ok=True) # # 定义五个角色的配置 # characters = [ # { # "name": "小熊猫", # "text": "我的好朋友在哪里呀?都是黑白皮毛的,我要去找它们~;你好你好!你也是黑白皮毛的,能做我的朋友吗?;哇!你的黑白条纹真漂亮,我们能一起玩吗?;你们好!你们也是黑白皮毛的,快和我们一起玩吧~;太好了!我找到所有黑白皮毛的好朋友啦~!", # "voice": "zh-CN-XiaoshuangMultilingualNeural", # 萝莉音 # "rate": "+5%" # }, # { # "name": "企鹅", # "text": "你好呀!我是企鹅,从远方来,很乐意做你的朋友~;你好呀,斑马朋友!;我们又有新朋友啦!", # "voice": "zh-CN-XiaoxiaoNeural", # 温柔女声 # "rate": "-5%" # }, # { # "name": "斑马", # "text": "当然可以啦,小熊猫,我很喜欢和你们做朋友;我们又有新朋友啦!", # "voice": "zh-CN-YunxiNeural", # 少年男声 # "rate": "+0%" # ⭐ 改成 +0%,不能写 0% # }, # { # "name": "斑点狗", # "text": "你们好呀!欢迎来农庄,我们一起玩!;我们是最好的朋友,永远在一起!", # "voice": "zh-CN-XiaoyiNeural", # 活泼女声 # "rate": "+10%" # }, # { # "name": "奶牛猫", # "text": "哈哈,好呀,多些朋友更热闹~;我们是最好的朋友,永远在一起!", # "voice": "zh-CN-YunjianNeural", # 成熟男声 # "rate": "-20%" # } # ] # # 生成所有音频 # tasks = [generate_character_audio(**char, output_dir=output_dir) for char in characters] # await asyncio.gather(*tasks) # print("\n🎉 所有角色音频生成完成!") # if __name__ == "__main__": # asyncio.run(main()) import asyncio from pathlib import Path import edge_tts # 限制最多同时2个并发 semaphore = asyncio.Semaphore(2) async def generate_character_audio(name, text, voice, rate, output_dir): async with semaphore: # 获取许可,最多2个同时运行 filename = f"{name}.mp3" out_path = output_dir / filename print(f"🔄 正在生成 {name} 的音频...") communicate = edge_tts.Communicate(text, voice, rate=rate) await communicate.save(str(out_path)) print(f"✅ {name} 音频已生成: {filename}") await asyncio.sleep(0.5) # 短暂休息 async def main(): output_dir = Path(r"D:\test\20桌面素材\20260417《熊猫找朋友》水墨画\声音") output_dir.mkdir(parents=True, exist_ok=True) characters = [ { "name": "小熊猫1", "text": "我们是最好的朋友,永远在一起!", # "voice": "zh-CN-XiaoshuangMultilingualNeural", # 萝莉音 "voice": "zh-CN-XiaoxiaoNeural", # 晓晓 标准女声 温暖活剥的主角感 "rate": "+5%" }, # { # "name": "企鹅1", # "text": "我们是最好的朋友,永远在一起!", # # "voice": "zh-CN-XiaohanNeural", # 温柔成熟女声,呆萌,慢条斯理 # # "voice": "zh-CN-XiaochenNeural", # 偏向成熟、知性的女声, (晓辰) # "voice": "zh-CN-YunjianNeural", # 云健,深沉男声,冷静权威 # "rate": "-5%" # }, # { # "name": "斑马1", # "text": "我们是最好的朋友,永远在一起!", # "voice": "zh-CN-YunxiNeural", # 少年男声 开朗直率 # "rate": "+0%" # ⭐ 改成 +0%,不能写 0% # }, # { # "name": "斑点狗1", # "text": "我们是最好的朋友,永远在一起!", # "voice": "zh-CN-XiaoyiNeural", # 活泼女声辽宁女 热情 风风火火 # "rate": "+10%" # }, # { # "name": "奶牛猫1", # "text": "我们是最好的朋友,永远在一起!", # "voice": "zh-CN-YunjianNeural", # 成熟男声 慵懒、神秘 # "rate": "-20%" # } ] tasks = [generate_character_audio(**char, output_dir=output_dir) for char in characters] await asyncio.gather(*tasks) print("\n🎉 所有角色音频生成完成!") if __name__ == "__main__": asyncio.run(main())

20260417《009熊猫找朋友》风格:水墨画

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

相关文章:

  • SAP生产订单报工避坑指南:BAPI_PRODORDCONF_CREATE_TT调用时,如何处理可报工数量与工时计算?
  • 基于GSConv-BiLSTM的多变量时间序列预测模型附Matlab代码
  • 别急着重装!Pacman报‘invalid or corrupted package’?可能是你的archlinux-keyring过期了
  • 浅谈:大语言模型中的逆转诅咒现象
  • 别再只会用数组计数了!当数据范围高达10^9时,C++程序员必须掌握的两种‘省内存’统计技巧
  • 元宇宙泡沫:需求验证——一位软件测试从业者的专业审视
  • AW9523B驱动踩坑实录:从I2C通信失败到中断响应异常,我的STM32调试笔记
  • 把 Python 学到工程深处:从基础语法到高级实战,深入理解 `partial` 的价值、边界与最佳实践
  • 告别编译报错!手把手教你用CMake+VS2019在Win10上搞定libssh2动态库(x86/x64双版本)
  • 从Arduino平衡小车到无人机:聊聊PI控制器参数收敛的那些“坑”与实战经验
  • 运维实战:如何在不中断服务的情况下升级OpenSSH到10.0(附Telnet备用方案)
  • 从.out到烧录:拆解DSP程序bin/dat文件生成的完整工具链与避坑点
  • 多模态大语言模型在芯片物理设计中的应用与优化
  • 智能云架构革命:从被动响应到主动服务的Agentic Cloud
  • Kubernetes Downward API 详解:让容器获取自身元数据的高效方案
  • 告别重复劳动:PPT批量修改模板,效率倍增的秘密武器!
  • PCB设计效率翻倍!巧用PADS Logic与Layout的5种实时同步技巧(含Router联动)
  • 基于碳捕集电厂低碳特性及需求响应的综合能源系统多模式运行调度模型:实现虚拟电厂微网经济调度与风...
  • 从命令行到C程序:Linux下AD9361 IIO接口编程实践
  • iOS抓包绕坑指南:用Frida搞定CFNetworkCopySystemProxySettings检测(附脚本)
  • 顶会论文模块复现与二次创新:2026极简网络趋势:StarNet 星操作(元素级乘法)替换复杂卷积模块的有效性实验
  • Metal着色器(Shader)入门避坑指南:从字符串编译到.metallib文件
  • Python面向对象编程实战:从魔术方法到抽象类,构建可复用代码架构
  • 人机协作:终极职业——软件测试从业者的未来之路
  • 2026 教育培训行业优质 GEO 优化服务商推荐榜 - GEO优化
  • 用《权力的游戏》学Prolog:构建家族知识库与继承系统
  • 使用Yolov8训练太阳能电池板缺陷数据集 并构建和训练一个深度学习模型来进行EL图像缺陷识别 太阳能电池组件图像 EL图像缺陷识别 识别算法
  • Vue3 路由综合小案例实战:从基础跳转到 query、params 与嵌套路由
  • 从单机5万到集群320万QPS:某国家级IoT平台C++ MCP网关演进路径(含源码级协程调度器设计)
  • 宝塔面板用户必看:免费SSL证书自动续期与多域名管理的保姆级避坑指南