

20260417《009熊猫找朋友》风格:水墨画
背景需求











生成图片





































下载图片

生成视频















剪映合成
20260417《009熊猫找朋友》风格:水墨画








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

python
# 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个声音,但是实际无法批量生成,我是通过隐藏,一个声音生成后,再生成另外一个声音

最后一个视频有五个动物一起说话,所以再补一个音频
python
# 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熊猫找朋友》风格:水墨画