113 lines
3.9 KiB
Python
113 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
播客角色初始化脚本
|
||
根据 chapter8.md 文件中的角色定义进行初始化
|
||
"""
|
||
|
||
import os
|
||
from datetime import datetime
|
||
|
||
def initialize_characters():
|
||
"""初始化所有角色"""
|
||
print("=== 播客角色初始化 ===")
|
||
print(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||
print()
|
||
|
||
# 定义所有角色
|
||
characters = [
|
||
{
|
||
"name": "Host",
|
||
"role": "主持人",
|
||
"full_name": "Sonia",
|
||
"accent": "冷静、客观、甚至带点冷幽默",
|
||
"voice_recommendation": "Edge TTS 的 en-GB-RyanNeural(男)或 en-US-JennyNeural(女)"
|
||
},
|
||
{
|
||
"name": "Graham",
|
||
"role": "硅谷",
|
||
"full_name": "Graham",
|
||
"accent": "典型的 American Tech Bro,语速快,自信",
|
||
"voice_recommendation": "Edge TTS 的 en-US-GuyNeural 或 en-US-ChristopherNeural"
|
||
},
|
||
{
|
||
"name": "Dmitri",
|
||
"role": "俄罗斯",
|
||
"full_name": "Dmitri",
|
||
"accent": "深沉,重音在后",
|
||
"voice_recommendation": "en-IE-ConnorNeural(爱尔兰音,稍微带点卷舌和厚重感)"
|
||
},
|
||
{
|
||
"name": "Amita",
|
||
"role": "印度",
|
||
"full_name": "Amita",
|
||
"accent": "语速快,清晰的印度口音",
|
||
"voice_recommendation": "en-IN-NeerjaNeural(女)或 en-IN-PrabhatNeural(男)"
|
||
},
|
||
{
|
||
"name": "穆罕默德",
|
||
"role": "中东",
|
||
"full_name": "穆罕默德",
|
||
"accent": "沧桑,缓慢",
|
||
"voice_recommendation": "en-EG-SalmaNeural(埃及英语)"
|
||
},
|
||
{
|
||
"name": "Author",
|
||
"role": "作者",
|
||
"full_name": "Author",
|
||
"accent": "分析性,权威性",
|
||
"voice_recommendation": "en-US-GuyNeural"
|
||
}
|
||
]
|
||
|
||
print(f"找到 {len(characters)} 个角色:")
|
||
print()
|
||
|
||
# 创建角色目录
|
||
os.makedirs("output/characters", exist_ok=True)
|
||
|
||
for i, char in enumerate(characters, 1):
|
||
print(f"{i}. {char['name']} ({char['role']})")
|
||
print(f" 全名: {char['full_name']}")
|
||
print(f" 风格: {char['accent']}")
|
||
print(f" 推荐语音: {char['voice_recommendation']}")
|
||
print()
|
||
|
||
# 创建角色配置文件
|
||
config_content = f"""角色配置文件
|
||
名称: {char['name']}
|
||
角色: {char['role']}
|
||
全名: {char['full_name']}
|
||
风格: {char['accent']}
|
||
推荐语音: {char['voice_recommendation']}
|
||
初始化时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
|
||
状态: 已初始化
|
||
"""
|
||
config_path = f"output/characters/{char['name'].lower()}_config.txt"
|
||
with open(config_path, 'w', encoding='utf-8') as f:
|
||
f.write(config_content)
|
||
|
||
print(f"✓ 所有 {len(characters)} 个角色已初始化完成")
|
||
print(f"✓ 配置文件已保存到 output/characters/ 目录")
|
||
|
||
# 创建总体角色清单
|
||
summary_path = "output/characters/character_summary.txt"
|
||
with open(summary_path, 'w', encoding='utf-8') as f:
|
||
f.write("播客角色清单\n")
|
||
f.write("=" * 50 + "\n")
|
||
f.write(f"生成时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n")
|
||
for i, char in enumerate(characters, 1):
|
||
f.write(f"{i}. {char['name']} ({char['role']})\n")
|
||
f.write(f" 全名: {char['full_name']}\n")
|
||
f.write(f" 风格: {char['accent']}\n")
|
||
f.write(f" 推荐语音: {char['voice_recommendation']}\n\n")
|
||
|
||
print(f"✓ 角色清单已保存到: {summary_path}")
|
||
|
||
# 特别强调不使用Judy
|
||
print("\n⚠️ 注意: 根据要求,播客中不使用Judy作为主持人")
|
||
|
||
return characters
|
||
|
||
if __name__ == "__main__":
|
||
initialize_characters() |